QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
goto3d 说: 此次SW竞赛获奖名单公布如下,抱歉晚了,版主最近太忙:一等奖:塔山817;二等奖:a9041、飞鱼;三等奖:wx_dfA5IKla、xwj960414、bzlgl、hklecon;请以上各位和版主联系,领取奖金!!!
2022-03-11
全站
goto3d 说: 在线网校新上线表哥同事(Mastercam2022)+虞为民版大(inventor2022)的最新课程,来围观吧!
2021-06-26
查看: 5111|回复: 5
收起左侧

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

[复制链接]
发表于 2011-5-12 10:42:06 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 woaishuijia 于 2011-5-13 04:56 编辑
( r1 Q0 _7 e( Z) y9 O$ @( B& @- u& j7 T
我要新建图层,并要设置图层线型,但是我在设置中心线的时候出现问题,提示未找到主键,程序如下:
) Q' W  O$ Y/ c: [9 h
7 R  _8 m" c- k1 U4 o
  1.     Dim layer As AcadLayer+ N$ I4 c( A  a0 |9 j7 q6 t0 o
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC")        '中心线层
    + P7 l) z7 ^! W% Y9 G. h
  3.         layer.Lineweight = acLnWt018
    ' I/ V4 I) {, @2 W5 x) [
  4.         layer.color = acBlue
    3 R" {: U3 F1 k- c0 y* v
  5.         layer.Linetype = "CENTER"
    6 N0 d) c7 O9 y; P& G' f
  6.         ThisDrawing.ActiveLayer = layer
复制代码
! Y9 ]3 }& M% G0 e& t! e9 @

! @4 a1 u7 R+ }  f出现问题的是:layer.Linetype = "CENTER"% ~8 P1 \1 w+ Z* b4 R5 [8 A
提示如下:) `8 Z+ n3 y) \. G
未找到主键.JPG 1 ]+ Z! q( a* @- o
请帮助,谢谢。
发表于 2011-5-13 05:04:32 | 显示全部楼层
本帖最后由 woaishuijia 于 2011-5-13 05:05 编辑 $ J; H6 P# e/ y. M

! R+ o8 Z# j$ o$ ^7 _( J8 t设置线型之前应保证线型已被加载
  1.     Dim layer As AcadLayer6 }  _8 S: K' b4 l# D$ r
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC"  )      '中心线层* i& k8 b- e7 M$ U7 s
  3.     layer.Lineweight = acLnWt018& G- ^. L4 O' m% K
  4.     layer.color = acBlue; Q7 L9 z" |7 Q3 ~) ?9 b/ o3 d% a
  5.     ThisDrawing.Linetypes.Load "center", "acadiso.lin"( j% G& n% V7 G# Q; x. s
  6.     layer.Linetype = "CENTER"
      d+ }% g3 ^& R: |% I. `
  7.     ThisDrawing.ActiveLayer = layer
复制代码
 楼主| 发表于 2011-5-13 09:14:21 | 显示全部楼层
谢谢,非常感谢
发表于 2011-5-15 20:44:43 | 显示全部楼层
本帖最后由 bingdianfeishui 于 2011-5-15 20:45 编辑 . p. e: u! l! S  C& p% Y! e0 v
- f$ v. ^  q& d7 e, w3 a7 g# F  u
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:* y9 i  A! f9 d8 R/ ]- \
  1. ii = 0                              '如果未加载“CENTER”线型,则加载
    6 C# h# J/ d) p
  2. For Each element In ThisDrawing.Linetypes/ Z1 u) ]6 k+ f8 r" |; L
  3.     If element.Name = "CENTER" Then6 j- K- o. ]4 S; |3 k, s
  4.         ii = 1% @9 C( n- S! T: y
  5.         Exit For0 r) q+ `1 o% g, M, p
  6.     End If
    ) k- g, O0 Q/ e
  7. Next element
    * T5 [3 J$ d1 t/ r( C3 s
  8. If ii = 0 Then1 V7 x( w  U' P
  9.     ThisDrawing.Linetypes.Load "Center", "acadiso.lin"2 R( H: R& }" s+ j
  10. End If
    8 F  Y7 a2 N# g) N8 N) {3 x% u
复制代码
% q3 @% a. U4 t9 p( L- V: y% W2 S
图层、选择集这些最好也这样做一下判断

评分

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

查看全部评分

 楼主| 发表于 2011-5-16 14:51:13 | 显示全部楼层
4# bingdianfeishui 4 B4 O4 [  B+ t7 i  {! C) z
8 v" I$ O& e$ E5 |/ ~, L8 S& m. n4 D
直接使用on error resume next效果更好
 楼主| 发表于 2011-6-9 17:24:48 | 显示全部楼层
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:
' p2 U" |# h9 bii = 0                              '如果未加载“CENTER”线型,则加载
7 _0 L6 M; w9 {% f9 @For Each element In ThisDrawing.Linetypes+ G9 N/ S* u5 U
    If element ...
# u3 ^: I; v( }1 D0 Dbingdianfeishui 发表于 2011-5-15 20:44 http://www.3dportal.cn/discuz/images/common/back.gif

6 b6 t( J6 G5 X8 s- d
9 W- ^  f' p. h还是谢谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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