QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2011-5-13 04:56 编辑 ) b5 c! i4 D  F2 `

2 {# w- f1 @: T( T( }1 y我要新建图层,并要设置图层线型,但是我在设置中心线的时候出现问题,提示未找到主键,程序如下:9 v8 [9 c" U; Q% t! {: y1 b
) K7 N0 {5 e1 H! j0 G. \. x! x
  1.     Dim layer As AcadLayer4 |  i, O5 }: W; z7 U# y
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC")        '中心线层
      O8 q3 h$ D' l8 d8 O/ U  N
  3.         layer.Lineweight = acLnWt018
    0 S: e0 I& X: n; u$ ~
  4.         layer.color = acBlue& |# _( c$ D7 y% t; g9 Y9 n
  5.         layer.Linetype = "CENTER"! P$ Y# M6 q. w* j. W3 K
  6.         ThisDrawing.ActiveLayer = layer
复制代码

6 p* o0 O. B$ F* R* X
9 H6 B4 R$ ^! n3 i出现问题的是:layer.Linetype = "CENTER"
3 B. l8 ~0 L3 b1 \& v; n$ `提示如下:2 }) r4 o7 F0 a
未找到主键.JPG
# K. P# A  u8 U$ K5 D请帮助,谢谢。
发表于 2011-5-13 05:04:32 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-5-13 05:05 编辑
7 v( N0 m% ]4 D/ b# s: J- H7 d4 q* m3 s2 H. c& z" ~' z  N
设置线型之前应保证线型已被加载
  1.     Dim layer As AcadLayer
    + N1 I: P5 e- `4 |5 @, d# e
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC"  )      '中心线层
    $ V( s: \$ v/ P4 g( b5 T- e6 W
  3.     layer.Lineweight = acLnWt018
    5 t8 {2 Y& Z% V/ G% X4 O8 s
  4.     layer.color = acBlue
    2 u& j* H* h0 Z. R. q' n5 S: P
  5.     ThisDrawing.Linetypes.Load "center", "acadiso.lin"
    3 S0 V% E$ E& m
  6.     layer.Linetype = "CENTER"4 h2 M: @1 |8 K' I  Y* Q* A
  7.     ThisDrawing.ActiveLayer = layer
复制代码
 楼主| 发表于 2011-5-13 09:14:21 | 显示全部楼层 来自: 中国浙江杭州
谢谢,非常感谢
发表于 2011-5-15 20:44:43 | 显示全部楼层 来自: 中国四川德阳
本帖最后由 bingdianfeishui 于 2011-5-15 20:45 编辑 , B; M* Q3 L! b/ H' K& U

2 ~5 x% F; e" r8 {% D! l5 M$ ]如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:
. R& g3 x/ G8 Y6 E
  1. ii = 0                              '如果未加载“CENTER”线型,则加载6 L* ~  y9 P, t
  2. For Each element In ThisDrawing.Linetypes" j" m+ w. u$ a( H  Q. K
  3.     If element.Name = "CENTER" Then
    ( {. E4 Q, ~& ?* {) b- B; ^7 J
  4.         ii = 1
    7 H/ I: u/ x, s' t
  5.         Exit For0 ^0 N0 r1 c, r& t
  6.     End If
    8 _2 Q! H1 G3 k, Z) T% L
  7. Next element
    4 Q8 V+ q9 V6 j& x0 k
  8. If ii = 0 Then
    ' A5 j) L' V4 l5 m# O% {$ n
  9.     ThisDrawing.Linetypes.Load "Center", "acadiso.lin"- H" F/ z- {0 u2 e8 w
  10. End If" ?6 T' k7 C$ h* w: v
复制代码
) f3 J  ~; F, E
图层、选择集这些最好也这样做一下判断

评分

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

查看全部评分

 楼主| 发表于 2011-5-16 14:51:13 | 显示全部楼层 来自: 中国浙江杭州
4# bingdianfeishui
: V) R+ @9 X& T# p9 f4 }/ |- V: b* W& h4 @
直接使用on error resume next效果更好
 楼主| 发表于 2011-6-9 17:24:48 | 显示全部楼层 来自: 中国浙江杭州
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:" c7 k6 K8 n. W" E
ii = 0                              '如果未加载“CENTER”线型,则加载! y  o+ X; W4 D
For Each element In ThisDrawing.Linetypes6 y5 x8 C( r+ y2 b
    If element ...
( ]; b, g% y+ G! r! X& h3 Zbingdianfeishui 发表于 2011-5-15 20:44 http://www.3dportal.cn/discuz/images/common/back.gif
2 H( @& i- b8 N# l

$ ]# `9 a5 D2 n) [1 R还是谢谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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