QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2011-5-13 04:56 编辑 $ N3 F1 C$ e: x& b- I3 V) z9 d, z4 T

* R' r/ F- ?9 `3 R/ [我要新建图层,并要设置图层线型,但是我在设置中心线的时候出现问题,提示未找到主键,程序如下:0 b4 o( U% q7 {* l+ n  N/ X. k

" A- m5 [! Z# b/ |+ {
  1.     Dim layer As AcadLayer' D, @' R+ V& j; V
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC")        '中心线层
    5 t# P. k& q: Y% N  ~
  3.         layer.Lineweight = acLnWt018
    5 p7 D) H3 W3 D
  4.         layer.color = acBlue9 f( C7 m! S, K4 m
  5.         layer.Linetype = "CENTER"
    % b9 M1 U, ]+ C" L4 }( C5 |
  6.         ThisDrawing.ActiveLayer = layer
复制代码
  `' o* U4 p* N* r
# L5 S" |0 f" \: r5 B6 U3 K1 S
出现问题的是:layer.Linetype = "CENTER"
) h. Q! X4 ~+ O8 G' \2 y) _0 F提示如下:1 o# \; X* f. E' s
未找到主键.JPG
4 ]3 E' s; d* t- ~0 e9 y) s, I请帮助,谢谢。
发表于 2011-5-13 05:04:32 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-5-13 05:05 编辑
  }- {! @# g# k- @7 k4 ]3 z8 @/ N4 O9 a" f1 O; g
设置线型之前应保证线型已被加载
  1.     Dim layer As AcadLayer
    ' J0 S$ T& z! {" \# d% _
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC"  )      '中心线层
    . P! Y% B$ M3 L2 l' x) d7 J5 R
  3.     layer.Lineweight = acLnWt0186 I6 Q( u8 I, F& i/ X
  4.     layer.color = acBlue) E% Z# P  Q: W
  5.     ThisDrawing.Linetypes.Load "center", "acadiso.lin"7 q, `9 ]5 u1 X
  6.     layer.Linetype = "CENTER"
    4 O" B& \' m* d# K
  7.     ThisDrawing.ActiveLayer = layer
复制代码
 楼主| 发表于 2011-5-13 09:14:21 | 显示全部楼层 来自: 中国浙江杭州
谢谢,非常感谢
发表于 2011-5-15 20:44:43 | 显示全部楼层 来自: 中国四川德阳
本帖最后由 bingdianfeishui 于 2011-5-15 20:45 编辑 * w& m' @- P; i9 L$ ^9 V

" S8 ^+ n! P% d0 F如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:
# \6 R9 a' b( K' L8 X. ]8 S, E
  1. ii = 0                              '如果未加载“CENTER”线型,则加载6 r, M- \" m7 L* h5 t1 ^& ~1 V
  2. For Each element In ThisDrawing.Linetypes
    ! E6 j3 a  \' |
  3.     If element.Name = "CENTER" Then
    ; o& L& k: f7 ^3 q4 ?% D$ v
  4.         ii = 1
    0 w# x: j) }4 H: i% L5 ?
  5.         Exit For1 {% G0 I2 s+ p) A
  6.     End If! s6 k# M& b  _& X: W" G7 a3 w0 Z
  7. Next element( N3 h! ?( \* b4 z( B& Q1 S0 O
  8. If ii = 0 Then" \$ d, O1 L0 |9 }- }* `$ P4 r6 C( ^
  9.     ThisDrawing.Linetypes.Load "Center", "acadiso.lin") N8 \7 g' v, W
  10. End If$ z7 S9 y. `6 S
复制代码
$ f+ m  M% Z- }* ]- X, @
图层、选择集这些最好也这样做一下判断

评分

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

查看全部评分

 楼主| 发表于 2011-5-16 14:51:13 | 显示全部楼层 来自: 中国浙江杭州
4# bingdianfeishui . }' L6 D/ h7 t9 g3 a& W. z" @

; m9 Z6 @. z+ d% j: E直接使用on error resume next效果更好
 楼主| 发表于 2011-6-9 17:24:48 | 显示全部楼层 来自: 中国浙江杭州
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:
' t0 r  J( M4 yii = 0                              '如果未加载“CENTER”线型,则加载
+ @% c  O# l+ z* F+ o! q$ @For Each element In ThisDrawing.Linetypes
4 s' F5 C+ [; q0 ?  @4 E    If element ...
6 K& A! i6 C6 |) Q8 Ybingdianfeishui 发表于 2011-5-15 20:44 http://www.3dportal.cn/discuz/images/common/back.gif

$ @( _/ J$ L/ `/ }4 h- @% Z% P
: y" W6 F$ v0 U" o, @, O还是谢谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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