QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 5271|回复: 5
收起左侧

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

[复制链接]
发表于 2011-5-12 10:42:06 | 显示全部楼层 |阅读模式 来自: 中国浙江杭州

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

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

x
本帖最后由 woaishuijia 于 2011-5-13 04:56 编辑 5 b4 l& J$ U) e. o2 }7 O
5 ^, n+ ?* U, R; n
我要新建图层,并要设置图层线型,但是我在设置中心线的时候出现问题,提示未找到主键,程序如下:, h9 \+ A' H2 [1 i7 F0 D, N  a
' X1 D8 u* z7 h) U8 d8 l, h5 J
  1.     Dim layer As AcadLayer! q% K% g- A4 ^: E/ }6 O
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC")        '中心线层  j- V+ I' r. Y! h5 |
  3.         layer.Lineweight = acLnWt018# a% I; F. Q2 D
  4.         layer.color = acBlue7 a3 B/ G4 H+ I
  5.         layer.Linetype = "CENTER"
    ) u3 h% u" g9 `: N
  6.         ThisDrawing.ActiveLayer = layer
复制代码
* |2 \2 V; ~5 l8 ?+ U3 b

- n1 C/ V- t5 Q" Q8 V$ L% ]: Z出现问题的是:layer.Linetype = "CENTER"
! f% u  U" Z0 A: m1 w$ O- _提示如下:
; x( x3 a2 B( }! A7 E 未找到主键.JPG / y# f, N3 w, J* T5 j
请帮助,谢谢。
发表于 2011-5-13 05:04:32 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-5-13 05:05 编辑 4 V3 I6 {, L& H- q. z9 d

8 H% Q# m; z( \5 x设置线型之前应保证线型已被加载
  1.     Dim layer As AcadLayer1 s# X/ g, d; j. u5 c/ d( U) D
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC"  )      '中心线层0 r" `7 t1 x' a" M' B0 c
  3.     layer.Lineweight = acLnWt018
    : D) U: z& B1 w
  4.     layer.color = acBlue
    ) ~6 Z* g8 ?& S0 J- N% l
  5.     ThisDrawing.Linetypes.Load "center", "acadiso.lin". i( U5 N0 I% i: s7 y. P
  6.     layer.Linetype = "CENTER"8 q' g' M3 P* z; F! D$ p/ s
  7.     ThisDrawing.ActiveLayer = layer
复制代码
 楼主| 发表于 2011-5-13 09:14:21 | 显示全部楼层 来自: 中国浙江杭州
谢谢,非常感谢
发表于 2011-5-15 20:44:43 | 显示全部楼层 来自: 中国四川德阳
本帖最后由 bingdianfeishui 于 2011-5-15 20:45 编辑 , p+ ?# `% r7 h. {* L
8 i2 m2 m. Z( }" O
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:' B  f. e9 _- p' P& S1 z; y
  1. ii = 0                              '如果未加载“CENTER”线型,则加载- ~/ v0 j0 ~5 p; h& O; O6 M9 t& c
  2. For Each element In ThisDrawing.Linetypes0 I% E6 n5 Q0 G
  3.     If element.Name = "CENTER" Then7 \! x6 I& ]4 p" Q
  4.         ii = 1
    * P1 v' p  P7 P
  5.         Exit For, I$ t: m8 ^" g, f- ~6 @
  6.     End If8 Y7 b. b: J& i5 j4 V
  7. Next element) b  k! W2 g+ Y% A, a
  8. If ii = 0 Then  ^% i: \+ v4 g& B
  9.     ThisDrawing.Linetypes.Load "Center", "acadiso.lin", J* H# X# Y( l6 v% `
  10. End If- k8 B. w' T+ Z. G
复制代码

2 b5 R6 v2 i6 d" u$ V图层、选择集这些最好也这样做一下判断

评分

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

查看全部评分

 楼主| 发表于 2011-5-16 14:51:13 | 显示全部楼层 来自: 中国浙江杭州
4# bingdianfeishui
% W3 S- L# l' p3 o& |" N# j% ]# W4 G: n
" z0 w' R4 N# |  d& k  |直接使用on error resume next效果更好
 楼主| 发表于 2011-6-9 17:24:48 | 显示全部楼层 来自: 中国浙江杭州
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:) v/ o+ `9 L5 _0 |7 v$ ]1 v0 c
ii = 0                              '如果未加载“CENTER”线型,则加载& i- g" ]. I% E; t
For Each element In ThisDrawing.Linetypes
) _8 T% r. @1 o1 H$ q    If element ...  ~( S9 K( L. W+ A
bingdianfeishui 发表于 2011-5-15 20:44 http://www.3dportal.cn/discuz/images/common/back.gif

& s) C# o( I9 b: k% B5 n1 f% u" X6 ]+ U( p2 E" B" f# q' U
还是谢谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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