QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2011-5-13 04:56 编辑 * W8 B! y4 _* a$ i

* v3 T7 O: ~  p我要新建图层,并要设置图层线型,但是我在设置中心线的时候出现问题,提示未找到主键,程序如下:
, j( ~% w  A6 U0 X! Z9 t  e  K2 ?
: R: [: u3 `0 O6 `4 `0 K) S; n7 a
  1.     Dim layer As AcadLayer" m6 y( R$ a% O4 {7 c- }6 ~
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC")        '中心线层
    + u) J) B# ?1 x+ ~; d: j
  3.         layer.Lineweight = acLnWt0189 U4 n* c9 D8 n
  4.         layer.color = acBlue0 O! b$ g3 n' y4 a, f
  5.         layer.Linetype = "CENTER"
    0 G- y& T7 r8 b+ ]
  6.         ThisDrawing.ActiveLayer = layer
复制代码

) v  g7 _! W2 }6 B9 |4 W2 Y% r9 X- c" h$ D: x; J
出现问题的是:layer.Linetype = "CENTER"
- M" T' a6 ]# D+ J0 R) a: G提示如下:
: Z5 V$ `. s4 \, m5 F: B6 N 未找到主键.JPG 0 m9 O1 d+ p. m$ c/ V3 }( E- d4 J
请帮助,谢谢。
发表于 2011-5-13 05:04:32 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-5-13 05:05 编辑
4 t/ L' |' u4 P
9 L% H% Y9 N* j% B设置线型之前应保证线型已被加载
  1.     Dim layer As AcadLayer
    9 X! J7 q3 |4 v( z' u' W
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC"  )      '中心线层- |$ X' }- P2 {$ U0 T; ?
  3.     layer.Lineweight = acLnWt018, z2 V1 \) U, ^0 ]
  4.     layer.color = acBlue
    + N7 I' d% k5 I
  5.     ThisDrawing.Linetypes.Load "center", "acadiso.lin"
    + Q. x+ D, J) i! Z+ t7 U% j2 j$ V+ F
  6.     layer.Linetype = "CENTER"
    4 l$ r3 `$ R. N* Q, L) L) W
  7.     ThisDrawing.ActiveLayer = layer
复制代码
 楼主| 发表于 2011-5-13 09:14:21 | 显示全部楼层 来自: 中国浙江杭州
谢谢,非常感谢
发表于 2011-5-15 20:44:43 | 显示全部楼层 来自: 中国四川德阳
本帖最后由 bingdianfeishui 于 2011-5-15 20:45 编辑
$ [* E' H0 ]& h! u( [) P, y
. C  |8 E7 {& ?如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:
* }. c8 j) y0 y) N* M4 k
  1. ii = 0                              '如果未加载“CENTER”线型,则加载( X3 Y6 K/ g& W; [- ]) g9 `/ A
  2. For Each element In ThisDrawing.Linetypes( i# k0 ]0 H# B6 o5 s3 h
  3.     If element.Name = "CENTER" Then
    / Z2 D  V& T. ^+ m! x
  4.         ii = 1* O+ Q6 b9 y: m# f/ t5 ^3 a. k  J; D
  5.         Exit For/ D! D4 y. [4 C6 q: g
  6.     End If
    2 u2 U: a' ]( h6 X# g& Q" k
  7. Next element
    7 K/ w- G8 X6 K4 V# b
  8. If ii = 0 Then3 {7 n- Q3 x8 A9 o. r- h: d: B: l
  9.     ThisDrawing.Linetypes.Load "Center", "acadiso.lin"  ]1 Q2 n5 a: A, C* G. L! P% |4 ]
  10. End If
    9 W+ p. x$ K/ ?; c3 f3 u5 Q
复制代码

. _* T5 E" l1 d* D( ]% k图层、选择集这些最好也这样做一下判断

评分

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

查看全部评分

 楼主| 发表于 2011-5-16 14:51:13 | 显示全部楼层 来自: 中国浙江杭州
4# bingdianfeishui ' m  T& o1 w  |

! X% Y! R9 @9 P, l7 s7 N: y直接使用on error resume next效果更好
 楼主| 发表于 2011-6-9 17:24:48 | 显示全部楼层 来自: 中国浙江杭州
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:
6 i) z4 a% x) K% b3 Yii = 0                              '如果未加载“CENTER”线型,则加载$ ~! {& l; ^( D1 n
For Each element In ThisDrawing.Linetypes9 L4 g* m) [" q# a0 B6 B* }
    If element ...7 t' H9 y' A0 M# M) V
bingdianfeishui 发表于 2011-5-15 20:44 http://www.3dportal.cn/discuz/images/common/back.gif
3 Z& o: c% ~7 I3 J1 `3 i9 e
) F8 }5 ^9 }' w6 M0 j/ Q. ]  R( e
还是谢谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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