QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2011-5-13 04:56 编辑
' g+ T' {% k+ ~7 B, A: _* m$ Q: }/ Y$ W  j7 Y& _
我要新建图层,并要设置图层线型,但是我在设置中心线的时候出现问题,提示未找到主键,程序如下:
) x7 ^6 Q$ G! j( I% }$ J0 K2 X- M% D9 s- _/ k8 K% Z4 M8 q, l" L
  1.     Dim layer As AcadLayer
    / z! K5 x" B8 H" S( v& x8 U- ~$ d
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC")        '中心线层
    * }$ F2 L4 \' [. \0 a
  3.         layer.Lineweight = acLnWt018
    ; G& {3 J1 L  n; Y5 L- M
  4.         layer.color = acBlue
    9 y8 M3 Y$ X( v7 i6 n
  5.         layer.Linetype = "CENTER"
    ! ~: F$ I3 w. |- Q$ g- ]
  6.         ThisDrawing.ActiveLayer = layer
复制代码

4 i( X$ s5 ^3 i5 h! `* g$ R8 ~1 p6 ~7 R: g+ h, p
出现问题的是:layer.Linetype = "CENTER"3 A! w4 |% Q: }% E
提示如下:" ~3 D1 c" `7 t: V" r. E  y3 D
未找到主键.JPG 3 C7 X- ^. ~% Z) z4 E
请帮助,谢谢。
发表于 2011-5-13 05:04:32 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-5-13 05:05 编辑
# B5 u3 i  E/ i5 p5 g- s) G2 A( l# r7 P- D
设置线型之前应保证线型已被加载
  1.     Dim layer As AcadLayer( ?7 x* ~& h& J. k1 ?6 |6 \, H
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC"  )      '中心线层( `6 `! J/ m2 x6 ]8 F& Z, _
  3.     layer.Lineweight = acLnWt018. r* g( f, ?% I  r% ~+ ?5 i
  4.     layer.color = acBlue
    ! \" ?6 x. @* E5 p) s
  5.     ThisDrawing.Linetypes.Load "center", "acadiso.lin"1 H: ~7 a& }5 ]. b2 H* L
  6.     layer.Linetype = "CENTER"3 n! F& X- ]% n+ h2 S  y: ^
  7.     ThisDrawing.ActiveLayer = layer
复制代码
 楼主| 发表于 2011-5-13 09:14:21 | 显示全部楼层 来自: 中国浙江杭州
谢谢,非常感谢
发表于 2011-5-15 20:44:43 | 显示全部楼层 来自: 中国四川德阳
本帖最后由 bingdianfeishui 于 2011-5-15 20:45 编辑
6 J6 N  v7 }' E9 Q" m' |/ C% W: I5 |* i* J9 E
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:0 ]2 _7 ^/ ?: r
  1. ii = 0                              '如果未加载“CENTER”线型,则加载$ j# W3 |& p+ e3 o& m  A  D" j
  2. For Each element In ThisDrawing.Linetypes
    / Q, Y- M6 ?1 P. ~! c5 U- U+ f
  3.     If element.Name = "CENTER" Then
    9 Y* R( ?- O" Q0 t
  4.         ii = 1
    : H# m* \  m5 O6 N. ?: Y+ l
  5.         Exit For6 \8 f; Z( k, f% b6 ~% E+ \3 p
  6.     End If
    ) O1 h, ]/ e" b. r& }8 _: L
  7. Next element
    + s( E- M) m/ K# G# L
  8. If ii = 0 Then% X; U# R7 @3 P) B+ R' J; D
  9.     ThisDrawing.Linetypes.Load "Center", "acadiso.lin"( \- U% A7 h, ]/ Z
  10. End If
    7 V3 g- F: r3 E9 v/ ^
复制代码
6 T$ Y2 l$ ]- z* w
图层、选择集这些最好也这样做一下判断

评分

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

查看全部评分

 楼主| 发表于 2011-5-16 14:51:13 | 显示全部楼层 来自: 中国浙江杭州
4# bingdianfeishui 3 }; w" h6 N5 L% Z! j

! F- p2 L% E' _直接使用on error resume next效果更好
 楼主| 发表于 2011-6-9 17:24:48 | 显示全部楼层 来自: 中国浙江杭州
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:
, Y* B' U. H+ P# Z4 W) Tii = 0                              '如果未加载“CENTER”线型,则加载
7 ?/ D+ t' m. t$ s0 C& O  cFor Each element In ThisDrawing.Linetypes
9 k6 f$ v/ \" N: O5 Y    If element ...
, Q% J7 P4 p/ kbingdianfeishui 发表于 2011-5-15 20:44 http://www.3dportal.cn/discuz/images/common/back.gif
0 j# t2 d$ _$ I# N
7 `- {+ J9 _7 f+ g! F) n7 R8 R. N
还是谢谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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