QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
goto3d 说: 此次SW竞赛获奖名单公布如下,抱歉晚了,版主最近太忙:一等奖:塔山817;二等奖:a9041、飞鱼;三等奖:wx_dfA5IKla、xwj960414、bzlgl、hklecon;请以上各位和版主联系,领取奖金!!!
2022-03-11
全站
goto3d 说: 在线网校新上线表哥同事(Mastercam2022)+虞为民版大(inventor2022)的最新课程,来围观吧!
2021-06-26
查看: 5110|回复: 5
收起左侧

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

[复制链接]
发表于 2011-5-12 10:42:06 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 woaishuijia 于 2011-5-13 04:56 编辑
+ u4 C: O) q9 f7 I" c$ E- I) F2 }, G; {" q/ m3 L4 b
我要新建图层,并要设置图层线型,但是我在设置中心线的时候出现问题,提示未找到主键,程序如下:, \" ]. q5 Q4 ^3 d, x' O' v
) }, s, p, e* W, o8 }& u2 S
  1.     Dim layer As AcadLayer# ?/ c6 Q* f4 p; `
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC")        '中心线层
    4 @& r/ A- `- Z8 H6 b, c7 P2 p
  3.         layer.Lineweight = acLnWt018) ~7 B" h: z; t# ]- `6 V' @. z
  4.         layer.color = acBlue
    $ c- V' \5 A$ J
  5.         layer.Linetype = "CENTER"
    : |) K% [% }5 \: c
  6.         ThisDrawing.ActiveLayer = layer
复制代码
3 a/ g. G! l; }2 n$ `

+ E6 O7 B1 Z; u( D4 _出现问题的是:layer.Linetype = "CENTER"
. x0 M' m: `3 }提示如下:
, n) G6 |) C3 `: m- f: a7 s 未找到主键.JPG ) b9 ^+ ?) E+ T# w/ j. {
请帮助,谢谢。
发表于 2011-5-13 05:04:32 | 显示全部楼层
本帖最后由 woaishuijia 于 2011-5-13 05:05 编辑   w! Q! {+ {! h5 C# Z, y* T
: K- z# d  _* Z7 s) Y
设置线型之前应保证线型已被加载
  1.     Dim layer As AcadLayer# Q  G+ k  q/ o* _2 v
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC"  )      '中心线层+ k5 b! b+ n8 D( {
  3.     layer.Lineweight = acLnWt018( V+ l9 J' ]; t5 \, N" j
  4.     layer.color = acBlue
    9 f4 S2 T2 ]. y+ v
  5.     ThisDrawing.Linetypes.Load "center", "acadiso.lin"
    ( c: p# t6 V( O
  6.     layer.Linetype = "CENTER"
    6 m) C7 D) J  p) |  g) E( e
  7.     ThisDrawing.ActiveLayer = layer
复制代码
 楼主| 发表于 2011-5-13 09:14:21 | 显示全部楼层
谢谢,非常感谢
发表于 2011-5-15 20:44:43 | 显示全部楼层
本帖最后由 bingdianfeishui 于 2011-5-15 20:45 编辑 / X2 N- M0 l- i, E, z

$ F( H# c1 k2 b如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:/ n4 [+ E" d7 {0 ?
  1. ii = 0                              '如果未加载“CENTER”线型,则加载
    6 |# N, ?5 ?& s/ b& n& m% ]
  2. For Each element In ThisDrawing.Linetypes& \9 Y7 |, [; g# }/ G6 [
  3.     If element.Name = "CENTER" Then6 h& H- Q& s5 `- X) G& I/ Q
  4.         ii = 1
    / Z1 O' z! J, n0 L# K- r
  5.         Exit For
    ; y; a& r# z1 I
  6.     End If& O. i; @, E) ^* \6 T# y3 Y
  7. Next element
    9 b1 l* w& F" A* p( f1 N* {
  8. If ii = 0 Then9 p8 @# O' {0 k) N- o8 ~3 d* X
  9.     ThisDrawing.Linetypes.Load "Center", "acadiso.lin"% O. a5 ^. N4 ?+ r( p- D
  10. End If
      y) H* f8 P  W$ T9 @) C" s
复制代码

  J7 A: k/ o! J9 ]+ {3 M+ |; I) _图层、选择集这些最好也这样做一下判断

评分

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

查看全部评分

 楼主| 发表于 2011-5-16 14:51:13 | 显示全部楼层
4# bingdianfeishui * ^2 q! }" Z6 l+ N" d/ C9 \
) j/ R0 E. t, V1 g& |7 A( j
直接使用on error resume next效果更好
 楼主| 发表于 2011-6-9 17:24:48 | 显示全部楼层
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:
8 Y( ^) ^( u2 }8 w4 D7 tii = 0                              '如果未加载“CENTER”线型,则加载* o5 m; `" J& k2 t5 F
For Each element In ThisDrawing.Linetypes
/ m! k; e  N& W! v8 Y- b. J2 e    If element ...# W/ e5 ]- |* ^
bingdianfeishui 发表于 2011-5-15 20:44 http://www.3dportal.cn/discuz/images/common/back.gif
" y6 E* m7 u) D" j

1 w6 t2 _0 ]8 P! o7 I6 x还是谢谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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