QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
goto3d 说: 此次SW竞赛获奖名单公布如下,抱歉晚了,版主最近太忙:一等奖:塔山817;二等奖:a9041、飞鱼;三等奖:wx_dfA5IKla、xwj960414、bzlgl、hklecon;请以上各位和版主联系,领取奖金!!!
2022-03-11
系统
[系统通知] 平台第一个项目外包——项目拼多;正式上线,欢迎各单位个人有外包、设计、采购、加工需求的,在此寻找更牛的解决方案
2021-07-01
查看: 5109|回复: 5
收起左侧

[已答复] VBA:如何设置新建图层的线型?

[复制链接]
发表于 2011-5-12 10:42:06 | 显示全部楼层 |阅读模式

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 woaishuijia 于 2011-5-13 04:56 编辑
4 E8 o0 l6 t* F+ K2 A9 }( x' S" e  L6 @: Y; f
我要新建图层,并要设置图层线型,但是我在设置中心线的时候出现问题,提示未找到主键,程序如下:) K! A* ~- t. W6 d

5 {" h1 V! g0 i$ A6 B- G
  1.     Dim layer As AcadLayer8 e3 G2 a7 q8 P& t( r* e  w4 }
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC")        '中心线层- B& i# Z1 R- }& ?
  3.         layer.Lineweight = acLnWt018  _* y+ B# e2 C% ^5 v6 T0 z
  4.         layer.color = acBlue
    * r3 E0 q3 h4 ?1 A$ n" h, J. t6 y+ T
  5.         layer.Linetype = "CENTER"1 {! Z+ I6 u. R6 @; `5 }; P
  6.         ThisDrawing.ActiveLayer = layer
复制代码
5 I% b5 C& G) b5 Q# q8 \
5 u8 G8 O" `) y" I  K
出现问题的是:layer.Linetype = "CENTER"
3 C+ F0 x0 m5 j提示如下:% d+ C( D* _7 j+ q% ]
未找到主键.JPG & p+ a3 O2 ^2 k7 e
请帮助,谢谢。
发表于 2011-5-13 05:04:32 | 显示全部楼层
本帖最后由 woaishuijia 于 2011-5-13 05:05 编辑
" n) c0 [& }2 e6 ^
" g3 o$ Z) L+ ^$ b) n设置线型之前应保证线型已被加载
  1.     Dim layer As AcadLayer9 \8 p- H) [' ]- l1 G! Q, R5 F
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC"  )      '中心线层
    & u1 y# {7 I% h9 F: V/ ~) _
  3.     layer.Lineweight = acLnWt0182 ]! o$ G) ]& v: x4 S7 N; C
  4.     layer.color = acBlue1 E. {- L# t1 g. {$ W
  5.     ThisDrawing.Linetypes.Load "center", "acadiso.lin"( D) ]# }* y9 i$ w- W6 g
  6.     layer.Linetype = "CENTER"
    ( o+ n" I; e8 s/ r4 T
  7.     ThisDrawing.ActiveLayer = layer
复制代码
 楼主| 发表于 2011-5-13 09:14:21 | 显示全部楼层
谢谢,非常感谢
发表于 2011-5-15 20:44:43 | 显示全部楼层
本帖最后由 bingdianfeishui 于 2011-5-15 20:45 编辑 7 m) T+ u6 W' Y. d# g' Z

) b. D6 o) E* `6 R, |$ h$ P$ A0 e如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:
! P$ f$ \: C& F8 S( u
  1. ii = 0                              '如果未加载“CENTER”线型,则加载& Y( Q. T4 N1 ~$ s! u* Y0 z8 ?# N
  2. For Each element In ThisDrawing.Linetypes
    6 f) A, Y. u$ l
  3.     If element.Name = "CENTER" Then
    2 m5 i" N: M$ ]: j# y
  4.         ii = 1
    * b; V) m6 ^5 Y# ?4 ?. d1 i5 L
  5.         Exit For
    % ?. ~) ?; L# P, D6 g, }! X
  6.     End If
    1 ]5 ^- v0 F1 n: _) w5 `
  7. Next element
    / q7 m* i0 l, w" B# u* P0 u
  8. If ii = 0 Then
    : ?$ O- J( {* o) V, c
  9.     ThisDrawing.Linetypes.Load "Center", "acadiso.lin"
    : o7 T# z! t; P3 z7 C
  10. End If
    0 F' X& h1 k, B# k
复制代码

0 e6 D3 u- U  e# |+ d  S图层、选择集这些最好也这样做一下判断

评分

参与人数 1三维币 +5 收起 理由
woaishuijia + 5 技术讨论

查看全部评分

 楼主| 发表于 2011-5-16 14:51:13 | 显示全部楼层
4# bingdianfeishui ) q" g7 h6 U! w( i0 {
3 }; ?* Z+ [' j0 G, `& ^
直接使用on error resume next效果更好
 楼主| 发表于 2011-6-9 17:24:48 | 显示全部楼层
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:
$ M. \: v+ F' w) Iii = 0                              '如果未加载“CENTER”线型,则加载
3 f& H+ _6 }. `1 I- nFor Each element In ThisDrawing.Linetypes
6 f+ c9 A7 \6 D1 f% c0 t    If element ...% ^! b! o# w& E! p4 F* @& O+ U
bingdianfeishui 发表于 2011-5-15 20:44 http://www.3dportal.cn/discuz/images/common/back.gif

* z, G% V  H* ~/ ?4 k5 I( K
! r5 R; S+ D& w还是谢谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表