QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2011-5-13 04:56 编辑
& T$ t: K9 _) d1 D9 C7 \2 t, i1 c- `* e% F+ l8 L7 [9 G2 N
我要新建图层,并要设置图层线型,但是我在设置中心线的时候出现问题,提示未找到主键,程序如下:$ Y" O, m- R1 k

8 p) X' W$ ]  N! E4 V
  1.     Dim layer As AcadLayer
    2 B6 y. z- Z8 f. B* J! H
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC")        '中心线层$ O* K  Z7 G2 U
  3.         layer.Lineweight = acLnWt018; |+ Z2 B* y3 g( b8 v6 p" X8 M
  4.         layer.color = acBlue
    3 o" u3 w- P+ R0 z; \( L8 ^
  5.         layer.Linetype = "CENTER"
    + k9 Y, k! c# m$ B2 |
  6.         ThisDrawing.ActiveLayer = layer
复制代码
- m% t8 p, v8 M, V5 Q1 Q
) d: w! I! z9 ]9 N" u
出现问题的是:layer.Linetype = "CENTER"
# K+ w% z- p1 l: T4 \: {, z/ X) @提示如下:
  a3 K% O( Q% a$ l 未找到主键.JPG
# R4 {: T- C6 {# D请帮助,谢谢。
发表于 2011-5-13 05:04:32 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-5-13 05:05 编辑
9 v1 H" s+ a) Y1 R
" X3 k# i* ~% L8 {* `" b9 K设置线型之前应保证线型已被加载
  1.     Dim layer As AcadLayer
    / @1 k- u8 M1 u0 [& C  c+ J
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC"  )      '中心线层+ b3 u, j' x0 |1 q( r
  3.     layer.Lineweight = acLnWt018
    & `' p$ x# f' D; u
  4.     layer.color = acBlue
    8 h. Z, K( y0 K2 H& P
  5.     ThisDrawing.Linetypes.Load "center", "acadiso.lin"
    ; s! `0 L+ o& v
  6.     layer.Linetype = "CENTER"9 Y1 i6 o( ^6 {
  7.     ThisDrawing.ActiveLayer = layer
复制代码
 楼主| 发表于 2011-5-13 09:14:21 | 显示全部楼层 来自: 中国浙江杭州
谢谢,非常感谢
发表于 2011-5-15 20:44:43 | 显示全部楼层 来自: 中国四川德阳
本帖最后由 bingdianfeishui 于 2011-5-15 20:45 编辑
, D8 k3 w6 y2 i" d8 j: e( Z  S2 a+ _- e. \3 ~; z
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:
+ M2 E- P) H- G, U/ \4 `
  1. ii = 0                              '如果未加载“CENTER”线型,则加载) K! G$ c4 p6 v, n, b8 u
  2. For Each element In ThisDrawing.Linetypes, X6 c$ a+ V3 B8 i
  3.     If element.Name = "CENTER" Then
    # i; f, x5 @2 ~5 B( Z
  4.         ii = 1/ _9 F& o, H8 m; h( M& U' W* ~
  5.         Exit For
    ! M) \1 h4 {8 O5 B8 e8 E  e
  6.     End If+ k4 ^/ `' x# Y6 K. E% E9 M+ D$ X
  7. Next element7 S' \0 r6 c; R9 }) n
  8. If ii = 0 Then
    . d& P8 c) I, _/ W5 [2 h3 S) T$ I
  9.     ThisDrawing.Linetypes.Load "Center", "acadiso.lin"
    : _" m+ x  T2 n* l
  10. End If: b- M7 |) S0 V( S$ g8 h7 O
复制代码
# K$ v- G' U0 T9 u- r
图层、选择集这些最好也这样做一下判断

评分

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

查看全部评分

 楼主| 发表于 2011-5-16 14:51:13 | 显示全部楼层 来自: 中国浙江杭州
4# bingdianfeishui 5 b" j4 I4 D  J3 e. q$ n
5 i% L+ @8 l; C9 f
直接使用on error resume next效果更好
 楼主| 发表于 2011-6-9 17:24:48 | 显示全部楼层 来自: 中国浙江杭州
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:- N  s$ O! d* n# e9 N
ii = 0                              '如果未加载“CENTER”线型,则加载
+ h& }% F& V9 S" RFor Each element In ThisDrawing.Linetypes
# z7 d7 @7 t% c" k& O0 |    If element ...( l" I4 g. O5 F, z# N& J$ e  W
bingdianfeishui 发表于 2011-5-15 20:44 http://www.3dportal.cn/discuz/images/common/back.gif

# _( }; b0 e  j* Y2 S9 X' b; F5 C+ e2 u3 O2 M) x2 n7 Z$ K6 d
还是谢谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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