QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
9天前
查看: 5288|回复: 5
收起左侧

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

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

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

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

x
本帖最后由 woaishuijia 于 2011-5-13 04:56 编辑 ! l8 Q4 t& V9 @8 n) j# Y. X
7 H! q1 o: N+ J0 W* A7 R  h
我要新建图层,并要设置图层线型,但是我在设置中心线的时候出现问题,提示未找到主键,程序如下:
" T- @( {4 J* {3 N/ H% n+ c" A' H; Q
  1.     Dim layer As AcadLayer
    ! q; P0 s4 o  r& D; S2 ^. O
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC")        '中心线层
    9 H6 K# x( M4 V- x
  3.         layer.Lineweight = acLnWt018
    2 ^8 T" i4 [& D& E5 q# T8 F
  4.         layer.color = acBlue
    + o  t: }* `1 _* h+ o$ [* q( j! j
  5.         layer.Linetype = "CENTER"& _  |! b# {8 N. P$ {
  6.         ThisDrawing.ActiveLayer = layer
复制代码

4 ]6 K% U/ G3 `4 V; z1 w$ E
/ `: n3 }5 e$ h/ g7 U$ B出现问题的是:layer.Linetype = "CENTER"
9 m, |6 `  T4 K( G  f# y7 x提示如下:5 Z6 ~# p% y* L' ^, ~
未找到主键.JPG
+ S" y) S2 u' B- a% p' R% P请帮助,谢谢。
发表于 2011-5-13 05:04:32 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-5-13 05:05 编辑 6 F1 p6 G: H1 ^

9 a) B8 z9 ?1 _( ?) q- d: Z设置线型之前应保证线型已被加载
  1.     Dim layer As AcadLayer
    ! ~% u9 E% `# P) W& v; c8 ?
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC"  )      '中心线层0 t4 L, A$ ]% k& T& F7 [
  3.     layer.Lineweight = acLnWt018
    & K% e! j% s5 f& q' v
  4.     layer.color = acBlue4 Z7 l- R4 {7 j- Y
  5.     ThisDrawing.Linetypes.Load "center", "acadiso.lin"
    1 F; J4 F  i+ z9 R3 p3 V, L$ e
  6.     layer.Linetype = "CENTER"( G; |" J$ z( g7 r0 a9 @: l
  7.     ThisDrawing.ActiveLayer = layer
复制代码
 楼主| 发表于 2011-5-13 09:14:21 | 显示全部楼层 来自: 中国浙江杭州
谢谢,非常感谢
发表于 2011-5-15 20:44:43 | 显示全部楼层 来自: 中国四川德阳
本帖最后由 bingdianfeishui 于 2011-5-15 20:45 编辑
( a- a# k. r8 Q# R
$ {7 y6 y% W( a2 w, j& X0 z如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:2 x: \3 ^" |- Q& D2 t5 }+ F
  1. ii = 0                              '如果未加载“CENTER”线型,则加载
    2 i- m' T+ n3 B6 e/ R  Q7 l( T
  2. For Each element In ThisDrawing.Linetypes$ A' o& |8 Z6 I5 V3 _1 t0 h8 R
  3.     If element.Name = "CENTER" Then. d- U& ^+ A" X! |
  4.         ii = 11 u- J; o. q& f
  5.         Exit For% M+ _  V0 N! b& t7 ^( C
  6.     End If
    ) ^+ ]6 U1 y' S. I
  7. Next element* q/ U  S' U" U6 p
  8. If ii = 0 Then
    6 {% f3 J% U0 p) L% S
  9.     ThisDrawing.Linetypes.Load "Center", "acadiso.lin"
    : T" I* |5 I8 @: Q% l5 m$ P4 a
  10. End If3 H1 j1 z& l0 i8 B2 g0 j8 j
复制代码

! a6 n* A5 B7 f. I图层、选择集这些最好也这样做一下判断

评分

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

查看全部评分

 楼主| 发表于 2011-5-16 14:51:13 | 显示全部楼层 来自: 中国浙江杭州
4# bingdianfeishui
2 M! F: x1 h: @! t& N3 O0 H1 P
- g* ?8 z' k4 o3 Q8 j3 R  f+ A+ H直接使用on error resume next效果更好
 楼主| 发表于 2011-6-9 17:24:48 | 显示全部楼层 来自: 中国浙江杭州
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:3 L; M' E. s2 V3 D, y. C) C! Q. ^3 B
ii = 0                              '如果未加载“CENTER”线型,则加载' ]& g7 d- z4 }+ V
For Each element In ThisDrawing.Linetypes
( c9 V. j/ e& [2 N    If element ...
- I7 @! T' ?4 \% d+ T% z/ ^bingdianfeishui 发表于 2011-5-15 20:44 http://www.3dportal.cn/discuz/images/common/back.gif
: E- l8 {+ N  P& _9 V. {
* O* n) e3 k0 U8 ?3 A
还是谢谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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