QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
5天前
查看: 5286|回复: 5
收起左侧

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

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

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

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

x
本帖最后由 woaishuijia 于 2011-5-13 04:56 编辑
  R! o3 ]1 t9 T8 K% h) k! k$ t2 p5 t3 C
我要新建图层,并要设置图层线型,但是我在设置中心线的时候出现问题,提示未找到主键,程序如下:
  e6 S9 ^- R+ _6 e& h- E0 w
7 _8 r7 B9 k9 |4 s8 a7 b5 b4 X2 {
  1.     Dim layer As AcadLayer
    $ h8 [! T8 f& T# U/ Y8 `; u$ ?, O
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC")        '中心线层: d- C( X1 l  W/ j) q+ T7 [
  3.         layer.Lineweight = acLnWt0181 I: ]9 Q5 k, \% ^' j
  4.         layer.color = acBlue
    ( O# g; c. u+ \
  5.         layer.Linetype = "CENTER"- ^4 m1 j/ W+ N7 ^! S8 }
  6.         ThisDrawing.ActiveLayer = layer
复制代码
+ z2 `7 S+ x+ p) C
/ D! c* W4 H4 s- a, v
出现问题的是:layer.Linetype = "CENTER"
$ k& W8 D, i. J! F8 V$ v# y8 Q0 ~提示如下:) p! [% o9 @) [6 f1 d
未找到主键.JPG
$ h8 }; a, m& H请帮助,谢谢。
发表于 2011-5-13 05:04:32 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-5-13 05:05 编辑 2 _# L$ y  T5 W- ?: _' j

8 D) V, w6 N; C+ J设置线型之前应保证线型已被加载
  1.     Dim layer As AcadLayer/ D- R1 D7 E2 d4 B; F+ |  f
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC"  )      '中心线层: k& w5 l4 F" l: n- e/ i) Y
  3.     layer.Lineweight = acLnWt018
    " ?/ _2 L( o: R. H% T
  4.     layer.color = acBlue( S2 ~  L7 A5 x8 R) `
  5.     ThisDrawing.Linetypes.Load "center", "acadiso.lin"
    / Y7 B& E  _: K# z: E5 [4 J, U7 f
  6.     layer.Linetype = "CENTER"  J& s& H, F0 X$ w" c& l
  7.     ThisDrawing.ActiveLayer = layer
复制代码
 楼主| 发表于 2011-5-13 09:14:21 | 显示全部楼层 来自: 中国浙江杭州
谢谢,非常感谢
发表于 2011-5-15 20:44:43 | 显示全部楼层 来自: 中国四川德阳
本帖最后由 bingdianfeishui 于 2011-5-15 20:45 编辑
; V/ |! P) Z) }) N6 u( b
8 T) d# p3 t. Y3 I: u如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:% K" N( Z" k1 l$ H
  1. ii = 0                              '如果未加载“CENTER”线型,则加载% `" s0 H. [+ G: }( Q' E0 t
  2. For Each element In ThisDrawing.Linetypes
    & s/ x& `- c& d  T/ `4 T
  3.     If element.Name = "CENTER" Then
    / }1 D% n; [5 ~- V0 m) d
  4.         ii = 1
    ' I: u: Z) O( f' l2 D9 N8 ^
  5.         Exit For% }! M# K- @7 u: c$ V0 L  u
  6.     End If3 ^# ?' D; V; k, ?& J
  7. Next element: b; I4 Z+ z0 E+ J9 q9 H; v( l
  8. If ii = 0 Then& Y+ J+ r! K) w" j+ Y0 \; r% R
  9.     ThisDrawing.Linetypes.Load "Center", "acadiso.lin". @: }/ Z7 S: |" @
  10. End If
    $ _4 v3 r9 O; c1 r! r0 }% V
复制代码

; X+ i$ B8 w, d- z- b) U9 y图层、选择集这些最好也这样做一下判断

评分

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

查看全部评分

 楼主| 发表于 2011-5-16 14:51:13 | 显示全部楼层 来自: 中国浙江杭州
4# bingdianfeishui
# X# A/ q. {+ `5 Q, p# G$ E7 z8 r6 T  S1 v8 d$ ]
直接使用on error resume next效果更好
 楼主| 发表于 2011-6-9 17:24:48 | 显示全部楼层 来自: 中国浙江杭州
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:3 A- U' z/ v1 {( W0 `1 o
ii = 0                              '如果未加载“CENTER”线型,则加载
- e7 e4 y) M2 {% G) m# z, p' h1 dFor Each element In ThisDrawing.Linetypes3 ^, `) z% n/ U( J% P( s' ^2 z+ v1 S
    If element ...
& f+ I% k3 A4 Z: ^. V: abingdianfeishui 发表于 2011-5-15 20:44 http://www.3dportal.cn/discuz/images/common/back.gif

3 M& J: H. v4 z' x: H& z8 }5 _5 x6 l
还是谢谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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