QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2011-5-13 04:56 编辑 2 z. U+ }7 A4 m9 F" b1 t. T

8 g% E( o/ t0 L我要新建图层,并要设置图层线型,但是我在设置中心线的时候出现问题,提示未找到主键,程序如下:
. N8 r$ L2 i+ {+ F3 e/ g4 V5 n% V7 e% g5 B4 K* {
  1.     Dim layer As AcadLayer
    $ c- `, _) f9 R$ b
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC")        '中心线层
      y" L' P- p" f- P! Y
  3.         layer.Lineweight = acLnWt018
    * |- D, D7 x5 s9 e, O
  4.         layer.color = acBlue' n/ {' o) U' B
  5.         layer.Linetype = "CENTER". \. r1 N) I6 q1 U1 \; X7 ?. V
  6.         ThisDrawing.ActiveLayer = layer
复制代码

+ E! o. ~, N/ ?4 {5 l# i1 e5 H" B! b& x' H9 |# \
出现问题的是:layer.Linetype = "CENTER"7 ]% x4 y6 U' r2 E
提示如下:+ I) y, P" \! L; h  o
未找到主键.JPG + u& ]+ l( S$ J2 B- |6 g# B
请帮助,谢谢。
发表于 2011-5-13 05:04:32 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-5-13 05:05 编辑
5 w/ j6 z( ^' d9 b. }0 M+ `2 G# i" h2 U
设置线型之前应保证线型已被加载
  1.     Dim layer As AcadLayer
    6 s+ @6 ]& ~, o- ~. a; T6 Q
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC"  )      '中心线层0 H4 `- Z9 V. x- Y- W" B
  3.     layer.Lineweight = acLnWt018
    ' I" A/ q" u/ m/ }& }5 r7 m
  4.     layer.color = acBlue
    8 R' m/ e* H: D) A6 I* {4 C, `! r" }
  5.     ThisDrawing.Linetypes.Load "center", "acadiso.lin"
    . G% f; q3 d  u
  6.     layer.Linetype = "CENTER"
    / m; p; b9 M9 T. f
  7.     ThisDrawing.ActiveLayer = layer
复制代码
 楼主| 发表于 2011-5-13 09:14:21 | 显示全部楼层 来自: 中国浙江杭州
谢谢,非常感谢
发表于 2011-5-15 20:44:43 | 显示全部楼层 来自: 中国四川德阳
本帖最后由 bingdianfeishui 于 2011-5-15 20:45 编辑
0 u: w. t( H0 ], C2 W
; C' ^" E% X9 h8 s如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:# J4 t  F+ I; ]* f" ^
  1. ii = 0                              '如果未加载“CENTER”线型,则加载
    $ ?5 B& k* b0 E) L6 g+ A$ C
  2. For Each element In ThisDrawing.Linetypes6 m4 H5 z' J  p5 _+ r" S
  3.     If element.Name = "CENTER" Then
      O- O2 s, u' e* Z" T0 I/ U& g
  4.         ii = 1
    + G: }% _- f, h  _% X6 W8 P
  5.         Exit For
    0 {: W* K; n1 j. w, g3 {1 q
  6.     End If2 i$ D7 H9 s& ~' q- _
  7. Next element
    * ^/ ]. ~/ Q9 O
  8. If ii = 0 Then
    ' a; ]9 v! W8 \1 g8 p
  9.     ThisDrawing.Linetypes.Load "Center", "acadiso.lin"9 N- e7 _& W7 w- B
  10. End If/ z, n% V. r) i0 L
复制代码

6 Z9 k/ M4 K; m0 [+ j) e6 p图层、选择集这些最好也这样做一下判断

评分

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

查看全部评分

 楼主| 发表于 2011-5-16 14:51:13 | 显示全部楼层 来自: 中国浙江杭州
4# bingdianfeishui 9 Q8 r  A2 q6 X
. W! g6 W6 o1 Z) F; r8 G! v
直接使用on error resume next效果更好
 楼主| 发表于 2011-6-9 17:24:48 | 显示全部楼层 来自: 中国浙江杭州
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:
9 V- q& g- j( U* a. O  Eii = 0                              '如果未加载“CENTER”线型,则加载" p4 W( E" V8 C5 m
For Each element In ThisDrawing.Linetypes
+ z- K1 T% A: m5 j+ e2 I$ `    If element ...
+ D, ]6 |' D. g* t+ a! X! ~bingdianfeishui 发表于 2011-5-15 20:44 http://www.3dportal.cn/discuz/images/common/back.gif
; R0 G$ d+ E! v7 R
; |/ L4 e: m; N9 e4 u
还是谢谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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