QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2011-5-13 04:56 编辑
+ U" |& T$ J, x$ O/ J. {! ~8 @8 w. r" K* J& k
我要新建图层,并要设置图层线型,但是我在设置中心线的时候出现问题,提示未找到主键,程序如下:; V7 W  B7 g9 R/ @8 G0 w  y5 _2 Y

4 u5 n2 ~4 {+ `
  1.     Dim layer As AcadLayer5 b8 b) T( B; a6 ]# u2 Z
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC")        '中心线层
    5 `' t2 a  R$ N/ y; X
  3.         layer.Lineweight = acLnWt018) r2 C4 t& f/ f4 z! U& T
  4.         layer.color = acBlue. W+ H2 E' W3 d( }( k: v; s0 T' r. h- i
  5.         layer.Linetype = "CENTER"1 z- j  p) F% e! s6 R
  6.         ThisDrawing.ActiveLayer = layer
复制代码

) {% `- q+ c) n9 V* l
. }$ r. X$ z& k9 L! J4 k出现问题的是:layer.Linetype = "CENTER"
2 d9 P; K+ `0 D- s6 N  `* k提示如下:
2 {; Z" x  h5 [ 未找到主键.JPG
  m) d7 ?& m) M& a3 h% o% C% I* A请帮助,谢谢。
发表于 2011-5-13 05:04:32 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-5-13 05:05 编辑
  ]7 s. E. \0 h
" V9 l. \6 `4 L0 R8 m% S9 O0 h设置线型之前应保证线型已被加载
  1.     Dim layer As AcadLayer
    ( a1 A3 k( x" A
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC"  )      '中心线层
    : F) D) @# g! {2 V5 }3 e
  3.     layer.Lineweight = acLnWt018
    4 W  q8 |2 d* d2 y2 g
  4.     layer.color = acBlue$ ]9 r/ |$ w& ^
  5.     ThisDrawing.Linetypes.Load "center", "acadiso.lin") b: ]$ ?3 \& n# W3 m9 ~
  6.     layer.Linetype = "CENTER"
    , y+ ?4 X+ ?  O
  7.     ThisDrawing.ActiveLayer = layer
复制代码
 楼主| 发表于 2011-5-13 09:14:21 | 显示全部楼层 来自: 中国浙江杭州
谢谢,非常感谢
发表于 2011-5-15 20:44:43 | 显示全部楼层 来自: 中国四川德阳
本帖最后由 bingdianfeishui 于 2011-5-15 20:45 编辑
7 x/ V$ P5 E. l, |# Y
5 a: A  b, L! F, T% I如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:- ], M: S) ]# V( e% S
  1. ii = 0                              '如果未加载“CENTER”线型,则加载; B: h' g+ H8 o/ x. Q& [( {8 o
  2. For Each element In ThisDrawing.Linetypes5 u" {8 z# ?7 s2 X: S
  3.     If element.Name = "CENTER" Then
    6 K9 V' E# ]* K7 o" |6 K, D
  4.         ii = 1$ d) b8 T, V; E& o
  5.         Exit For
    1 ]8 m; p8 a) d# M- J# }6 [
  6.     End If
    % C4 q2 J  x# I% z6 w
  7. Next element$ Y7 n  a2 b1 Y1 g1 o
  8. If ii = 0 Then5 z$ K& d* A1 w7 L" L) j
  9.     ThisDrawing.Linetypes.Load "Center", "acadiso.lin"
    ( @6 d5 m" R8 V' E' r, A  B
  10. End If1 \, a/ y: C! G& E
复制代码
" T* A" J, ^. }: R  x9 L2 G* U
图层、选择集这些最好也这样做一下判断

评分

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

查看全部评分

 楼主| 发表于 2011-5-16 14:51:13 | 显示全部楼层 来自: 中国浙江杭州
4# bingdianfeishui ' Q$ [, z$ m4 W$ \$ ?- O7 C. ?) ^

  N% J7 |+ m6 O, h$ o  r. [4 _- C直接使用on error resume next效果更好
 楼主| 发表于 2011-6-9 17:24:48 | 显示全部楼层 来自: 中国浙江杭州
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:
) }1 m8 G4 L1 i( I, ^+ V; sii = 0                              '如果未加载“CENTER”线型,则加载
# j8 w3 z6 F* W- w+ |/ X# ?+ N  ~For Each element In ThisDrawing.Linetypes- t  g5 a& o- j% K/ @4 R4 @
    If element ...
3 C, z! b6 W: x- P2 Obingdianfeishui 发表于 2011-5-15 20:44 http://www.3dportal.cn/discuz/images/common/back.gif

; I1 c5 o) I) z) V( T* k  x0 W- n! y7 o
还是谢谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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