QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2011-5-13 04:56 编辑
. e( a8 p! u$ X3 ?7 z
$ v, \, D4 ]* d: x- j我要新建图层,并要设置图层线型,但是我在设置中心线的时候出现问题,提示未找到主键,程序如下:
) Y0 G) o5 ^0 z3 P) f/ G$ o) t! B& I+ @
  1.     Dim layer As AcadLayer
    3 K; A$ V9 W; E9 O; A8 a. K) X3 n
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC")        '中心线层
    & F* A7 f. t6 ]: P' G% X
  3.         layer.Lineweight = acLnWt0187 P  R+ ^- D2 n: k5 E; e
  4.         layer.color = acBlue
    0 F1 o6 c0 A  t1 K1 W' L
  5.         layer.Linetype = "CENTER"
    5 r3 f- }4 {9 }, y, X' l% w
  6.         ThisDrawing.ActiveLayer = layer
复制代码
$ M: C  \" U0 M/ M: k
$ _* a+ v# ]$ o' y
出现问题的是:layer.Linetype = "CENTER"
5 m# {2 `* c# k, q5 z提示如下:( D+ J, ~0 ?1 [  z  E+ `# B/ F3 ~! S
未找到主键.JPG # F. z( A+ a1 ^6 M
请帮助,谢谢。
发表于 2011-5-13 05:04:32 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-5-13 05:05 编辑 % A9 N5 @! z+ j  L9 Z9 U! F7 c
6 \$ D% X  G% p! r, C
设置线型之前应保证线型已被加载
  1.     Dim layer As AcadLayer
    / z2 D( _, N* W; j: m. @' u0 r
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC"  )      '中心线层
    2 [+ i8 V  {6 J4 e8 o  c
  3.     layer.Lineweight = acLnWt0184 M$ n3 ?3 \. ?
  4.     layer.color = acBlue" _" W- P) h2 p$ e* O2 x
  5.     ThisDrawing.Linetypes.Load "center", "acadiso.lin": o4 @3 I  |4 d/ m0 n- W$ w
  6.     layer.Linetype = "CENTER"; E! h8 v: @- {- Q0 m/ j
  7.     ThisDrawing.ActiveLayer = layer
复制代码
 楼主| 发表于 2011-5-13 09:14:21 | 显示全部楼层 来自: 中国浙江杭州
谢谢,非常感谢
发表于 2011-5-15 20:44:43 | 显示全部楼层 来自: 中国四川德阳
本帖最后由 bingdianfeishui 于 2011-5-15 20:45 编辑
7 r7 L$ }. b9 H3 z7 F
" \$ g7 T* z2 E1 O! h( u8 P4 C2 q* \如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:
$ ]6 y' O, t) O1 a- O  {
  1. ii = 0                              '如果未加载“CENTER”线型,则加载
    4 A) ?/ w' W% {( X! p
  2. For Each element In ThisDrawing.Linetypes0 x4 u$ g# X* I0 r  ]
  3.     If element.Name = "CENTER" Then: ^" J1 Q2 ?4 N+ P
  4.         ii = 1
    0 q9 o# T' E& {
  5.         Exit For
    + `2 X( m) O0 O# M
  6.     End If
    6 [) q2 L- ~: s) y1 O; |
  7. Next element
    1 l$ x' \6 u) A8 w2 \
  8. If ii = 0 Then, F" ?9 w1 w" C; I$ l
  9.     ThisDrawing.Linetypes.Load "Center", "acadiso.lin"3 O7 i$ d) b5 l6 {
  10. End If
    , s) ^0 ]8 v( k4 m( ^) f. Q
复制代码

1 P9 p3 Q7 U7 k& U3 m7 ~3 K图层、选择集这些最好也这样做一下判断

评分

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

查看全部评分

 楼主| 发表于 2011-5-16 14:51:13 | 显示全部楼层 来自: 中国浙江杭州
4# bingdianfeishui 6 g4 Z1 K1 x: O" G: K3 b# H
/ C. Z( A0 U4 i
直接使用on error resume next效果更好
 楼主| 发表于 2011-6-9 17:24:48 | 显示全部楼层 来自: 中国浙江杭州
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:1 k% {( H* R' X5 L2 _: X; N4 Z- m0 r
ii = 0                              '如果未加载“CENTER”线型,则加载( G1 p" S8 _- L# x  f! @* ~) @/ V
For Each element In ThisDrawing.Linetypes
, [4 Z4 \1 u) F. ~; s7 |* b    If element ...
/ u6 \$ }, f  _2 g: f, y& Wbingdianfeishui 发表于 2011-5-15 20:44 http://www.3dportal.cn/discuz/images/common/back.gif
3 N# L) r+ |" k. T3 _

& m3 F! N5 D* D5 ^) S) }- {- I还是谢谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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