QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2011-5-13 04:56 编辑 , V8 Z$ F3 o  m, M# h3 U& x0 `
# L8 \6 U! D9 @7 Z5 {7 ^6 @
我要新建图层,并要设置图层线型,但是我在设置中心线的时候出现问题,提示未找到主键,程序如下:  {& C% ^( ^( \( g% I* }

. D& a. I3 t8 l/ b( v# v
  1.     Dim layer As AcadLayer
    6 b& ^! \/ `5 [5 t! k4 l
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC")        '中心线层( t. t. p2 L% h4 R
  3.         layer.Lineweight = acLnWt018
    & W+ |3 ]7 H  Z) Y$ e
  4.         layer.color = acBlue' f1 B' J# N, _* |/ R0 Z9 K
  5.         layer.Linetype = "CENTER"9 ~( {. k4 g2 N) t  C
  6.         ThisDrawing.ActiveLayer = layer
复制代码

# X, d+ L6 j7 x6 C; ]. t, I" u4 W; ~5 n8 W8 D  S, C
出现问题的是:layer.Linetype = "CENTER"
  z) {3 n3 A1 @& ?提示如下:
, K5 W3 H! T9 S4 } 未找到主键.JPG
  r' N* i" N$ z. |* e* H& I  i请帮助,谢谢。
发表于 2011-5-13 05:04:32 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-5-13 05:05 编辑
5 L' t5 M, F$ X% _  u8 `& O' R, H& D7 H( _0 v) x
设置线型之前应保证线型已被加载
  1.     Dim layer As AcadLayer! Y+ p$ E' i9 ]. c* p! o. w
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC"  )      '中心线层
    5 D8 R+ H) C1 b* G( c
  3.     layer.Lineweight = acLnWt018
    / I4 l1 R# z& ~
  4.     layer.color = acBlue
    & R; ]. \/ O8 @; d* L
  5.     ThisDrawing.Linetypes.Load "center", "acadiso.lin"
    ( R7 U4 Y& U# g
  6.     layer.Linetype = "CENTER"
    1 u. c5 p1 R5 M; v4 ?- U# {
  7.     ThisDrawing.ActiveLayer = layer
复制代码
 楼主| 发表于 2011-5-13 09:14:21 | 显示全部楼层 来自: 中国浙江杭州
谢谢,非常感谢
发表于 2011-5-15 20:44:43 | 显示全部楼层 来自: 中国四川德阳
本帖最后由 bingdianfeishui 于 2011-5-15 20:45 编辑 , ^9 p$ g$ v. ^. [2 I5 L
) T8 H# R9 u# k/ Q- a* {  |5 e9 `
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:+ v5 [7 x1 T4 t9 Y; `) B
  1. ii = 0                              '如果未加载“CENTER”线型,则加载
    1 x9 X: K/ X: |- d( u1 y. x
  2. For Each element In ThisDrawing.Linetypes
    * K9 a$ W  _( k
  3.     If element.Name = "CENTER" Then
    / z+ I+ y. \% I/ u+ p; R
  4.         ii = 1
    * r) i5 v2 _9 H8 ]
  5.         Exit For# g1 y  f) ?8 I
  6.     End If
    . [% S. g& T( q$ s* w
  7. Next element
    * G" @# y. `5 m
  8. If ii = 0 Then' X" k8 B) l. T2 G8 H
  9.     ThisDrawing.Linetypes.Load "Center", "acadiso.lin"
    + o  N3 l8 {8 i  Q- p1 w
  10. End If
    # G4 j* Z2 j4 U: U) u7 }
复制代码
0 a6 B9 c: }2 ~
图层、选择集这些最好也这样做一下判断

评分

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

查看全部评分

 楼主| 发表于 2011-5-16 14:51:13 | 显示全部楼层 来自: 中国浙江杭州
4# bingdianfeishui 8 T4 I; v( Y8 V6 M# H3 R
& |5 Q% p0 D- s/ s
直接使用on error resume next效果更好
 楼主| 发表于 2011-6-9 17:24:48 | 显示全部楼层 来自: 中国浙江杭州
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:+ ?) o+ Q/ z+ R% Y
ii = 0                              '如果未加载“CENTER”线型,则加载
" p( g6 i' a% \; _. U5 \9 tFor Each element In ThisDrawing.Linetypes
2 n! t3 z: I  {+ y/ Q    If element ...
( v, v! x5 l6 y' S3 V' o% [: kbingdianfeishui 发表于 2011-5-15 20:44 http://www.3dportal.cn/discuz/images/common/back.gif
( P7 M1 ~) ~$ k, _4 {- ^

1 ~) r) K) J* {0 G% w0 ]还是谢谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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