QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2011-5-13 04:56 编辑
7 X( z) Q2 i* |  c6 d: Y7 y+ p( C% I% k1 P$ }
我要新建图层,并要设置图层线型,但是我在设置中心线的时候出现问题,提示未找到主键,程序如下:; g6 N1 t& G- n( E; v0 H/ h
3 ?( r4 B, [- R1 B& D1 {0 v
  1.     Dim layer As AcadLayer) Y* {/ H5 K- g' e- n3 ~( Z
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC")        '中心线层
    / T/ g8 j& E6 |0 }
  3.         layer.Lineweight = acLnWt0189 |) x, i) v& n) _- ~+ j  m  F
  4.         layer.color = acBlue
    0 i: D3 o+ D8 F3 C8 T
  5.         layer.Linetype = "CENTER"
    # [5 e3 G7 X. V& ^6 e6 J8 ?1 Y1 s
  6.         ThisDrawing.ActiveLayer = layer
复制代码
) T' T2 Y0 ?+ q9 W1 Q* z$ z7 z4 o

# u! @" v% _0 z7 i. u! Z出现问题的是:layer.Linetype = "CENTER"" D1 L, l: J; S8 M; H+ x( y4 v) ~
提示如下:8 S0 w$ A) K7 ^5 d5 n% D
未找到主键.JPG 3 h# o  v, ?6 T: B
请帮助,谢谢。
发表于 2011-5-13 05:04:32 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-5-13 05:05 编辑
0 }; Y! p+ K+ A6 |$ M  N; D/ y# C6 y" Y/ n5 m8 E$ O% L
设置线型之前应保证线型已被加载
  1.     Dim layer As AcadLayer) D( C+ M3 ?+ i0 {
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC"  )      '中心线层( }9 n9 C9 Z8 K1 R" V
  3.     layer.Lineweight = acLnWt018, T' W: K; z& ~8 x0 L2 Z8 P
  4.     layer.color = acBlue
    / D) p" X" C/ {1 |  g! C/ |
  5.     ThisDrawing.Linetypes.Load "center", "acadiso.lin"
    0 u9 X0 c7 l3 u
  6.     layer.Linetype = "CENTER"  M5 T6 C( Q8 T; h, ^
  7.     ThisDrawing.ActiveLayer = layer
复制代码
 楼主| 发表于 2011-5-13 09:14:21 | 显示全部楼层 来自: 中国浙江杭州
谢谢,非常感谢
发表于 2011-5-15 20:44:43 | 显示全部楼层 来自: 中国四川德阳
本帖最后由 bingdianfeishui 于 2011-5-15 20:45 编辑 , v* e  N7 U& i) [5 U! e; C) W

1 Q, S& d2 B: k& b1 {如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:
, b' t4 s& m, U4 D9 c( `1 P$ ?
  1. ii = 0                              '如果未加载“CENTER”线型,则加载
    4 H) D# s# a% W9 B) A0 m/ c
  2. For Each element In ThisDrawing.Linetypes
    , m. k+ {) u/ n8 i) r2 ~! M
  3.     If element.Name = "CENTER" Then: Q, r+ H/ @. |' p9 Z
  4.         ii = 1
    0 c& L$ c; C( ]& C  I6 H: C' F
  5.         Exit For( L; n7 ^  n$ ~" ~# l( B4 P
  6.     End If
    ) B. @" U( Q. L9 ~" \
  7. Next element% A! K7 s7 R$ M# s2 L
  8. If ii = 0 Then
    0 ?  ]( y; |; D  n2 G8 v2 o
  9.     ThisDrawing.Linetypes.Load "Center", "acadiso.lin"9 e& m: h, a$ `
  10. End If% I2 T% K" T. w# y4 h* b% A
复制代码

  U" }0 F" V. j0 {. [( L& D1 \图层、选择集这些最好也这样做一下判断

评分

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

查看全部评分

 楼主| 发表于 2011-5-16 14:51:13 | 显示全部楼层 来自: 中国浙江杭州
4# bingdianfeishui
7 N0 w9 c' H5 L8 r' H. M; B* Y  E
4 V" i6 v  F0 C9 s7 E8 r1 E% e7 y直接使用on error resume next效果更好
 楼主| 发表于 2011-6-9 17:24:48 | 显示全部楼层 来自: 中国浙江杭州
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:) w' x4 S4 _+ @) z/ J9 J  z% i) A& l
ii = 0                              '如果未加载“CENTER”线型,则加载4 p( j" F- D# |6 O. k# m
For Each element In ThisDrawing.Linetypes
" H1 L/ s3 G8 s$ D9 y    If element ...
6 W! V4 ~1 ^: S4 H( D6 p2 lbingdianfeishui 发表于 2011-5-15 20:44 http://www.3dportal.cn/discuz/images/common/back.gif

7 X' q, ?$ S% j3 G4 I9 e( n4 B$ p+ v" D! g8 M8 _0 \
还是谢谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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