QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2011-5-13 04:56 编辑 + r& U* t0 D% ]( t. V

7 k$ s0 U6 T# y$ \4 W8 U% ?我要新建图层,并要设置图层线型,但是我在设置中心线的时候出现问题,提示未找到主键,程序如下:5 q; B$ A9 c9 S; \

' s- H% G: |* i' g
  1.     Dim layer As AcadLayer* u, ?7 l* ^; h/ Z3 o+ I
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC")        '中心线层
    % I$ _/ }- i, \* b6 G. [; F* Y! t
  3.         layer.Lineweight = acLnWt018, M& Z4 u: `( Y% @. d+ u# b
  4.         layer.color = acBlue
    ( r' q3 w2 z/ F3 V+ m! E
  5.         layer.Linetype = "CENTER"
    8 c; v& @  N3 L0 {7 T4 @
  6.         ThisDrawing.ActiveLayer = layer
复制代码
! J" Z9 r' o. ]
/ e' b. ?: U: p' ^2 s
出现问题的是:layer.Linetype = "CENTER"
$ j. W, _, n! ]2 b( O- ?3 ~提示如下:: S2 V; i  o$ h- G$ b2 ?. _
未找到主键.JPG
7 L) r& X6 b  T2 x% p* c2 w- }请帮助,谢谢。
发表于 2011-5-13 05:04:32 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-5-13 05:05 编辑
2 C% I4 M0 @! y# `" U- Y* a5 b6 \) L4 W, Y
设置线型之前应保证线型已被加载
  1.     Dim layer As AcadLayer+ H  W- z) q4 ]! |
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC"  )      '中心线层
    ' }3 s, n; `3 |% Q, p5 d
  3.     layer.Lineweight = acLnWt0187 z# {+ s. E+ z( b- L3 B, }% P- c
  4.     layer.color = acBlue& X! }* q! v1 o. y
  5.     ThisDrawing.Linetypes.Load "center", "acadiso.lin"' l  e" E) y8 |) n  o9 h/ ?& n# J
  6.     layer.Linetype = "CENTER"8 J9 h( D/ B$ u
  7.     ThisDrawing.ActiveLayer = layer
复制代码
 楼主| 发表于 2011-5-13 09:14:21 | 显示全部楼层 来自: 中国浙江杭州
谢谢,非常感谢
发表于 2011-5-15 20:44:43 | 显示全部楼层 来自: 中国四川德阳
本帖最后由 bingdianfeishui 于 2011-5-15 20:45 编辑 1 i. ~( I: c3 ^- E

+ U2 l# q4 P% Q$ L: Z* W0 h如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:# y2 E, e( I0 j2 C3 C
  1. ii = 0                              '如果未加载“CENTER”线型,则加载
    ( ]" D! b! O2 j8 g% K# G, v
  2. For Each element In ThisDrawing.Linetypes
    9 B6 f3 Q- q# K1 ~+ v
  3.     If element.Name = "CENTER" Then
    * R7 j. ^( \1 d8 T
  4.         ii = 1
    9 m& s3 @2 Q+ s9 Q4 ^" \7 n, w
  5.         Exit For
    # I. I. b/ t2 ?& a2 R5 d6 H
  6.     End If
      {5 S5 G1 I" G. n+ c' s" m$ f
  7. Next element
    9 b7 ~" X7 l5 P2 t* c
  8. If ii = 0 Then
    ) v3 i. x/ n* Z% w6 T9 m" l
  9.     ThisDrawing.Linetypes.Load "Center", "acadiso.lin"4 `0 s4 x2 G$ V
  10. End If" E; U! `7 \' w% {
复制代码
$ g3 ^# z! I3 ~3 E
图层、选择集这些最好也这样做一下判断

评分

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

查看全部评分

 楼主| 发表于 2011-5-16 14:51:13 | 显示全部楼层 来自: 中国浙江杭州
4# bingdianfeishui
& ?5 _) m+ s* [6 A  x
- C6 j5 |8 h9 M* V+ a: f6 y直接使用on error resume next效果更好
 楼主| 发表于 2011-6-9 17:24:48 | 显示全部楼层 来自: 中国浙江杭州
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:4 C% _/ M9 g) a9 T& s( H
ii = 0                              '如果未加载“CENTER”线型,则加载- P6 m# q% |& k
For Each element In ThisDrawing.Linetypes3 z- S1 a  c9 U5 ^2 W) o7 Q0 ?$ q
    If element ...6 f3 W: X3 ?# I* B0 O. k
bingdianfeishui 发表于 2011-5-15 20:44 http://www.3dportal.cn/discuz/images/common/back.gif

, p5 a# H# c4 W2 _
% ^7 {5 A: s; k5 K) k, `* d还是谢谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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