QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2011-5-13 04:56 编辑
/ O( k% {  t" G, V, x" [
3 Z2 _. Q) U# @5 u; `* [* [4 E我要新建图层,并要设置图层线型,但是我在设置中心线的时候出现问题,提示未找到主键,程序如下:- N& [" P! l. f: U7 x
  M0 o/ u5 q! E% j" d' U
  1.     Dim layer As AcadLayer
    ' a+ n6 n: ]5 d# [
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC")        '中心线层$ t: I; W3 k- I0 O- d+ e) E
  3.         layer.Lineweight = acLnWt018
    ; }" S+ a  j. W) d$ |5 J6 }5 M0 [
  4.         layer.color = acBlue- y0 s5 W: V6 g. L
  5.         layer.Linetype = "CENTER"
    $ n3 E6 p4 {" F! I9 z& r$ L
  6.         ThisDrawing.ActiveLayer = layer
复制代码
4 }# ?; b- L( g7 y! G+ a

! B9 ^4 K- |9 D/ d6 F出现问题的是:layer.Linetype = "CENTER"7 s  |7 Z, y1 |, n, L! ^7 d: o
提示如下:
' P, {8 u1 c9 V 未找到主键.JPG 4 ]4 H; [% \1 S1 n, d5 h( q
请帮助,谢谢。
发表于 2011-5-13 05:04:32 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-5-13 05:05 编辑 9 w0 h4 F5 Y* m/ i0 Q$ o
1 q: O2 t3 j/ G/ i- H1 ?; i' z
设置线型之前应保证线型已被加载
  1.     Dim layer As AcadLayer
    ! N; i- V8 m" ^3 n0 L
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC"  )      '中心线层
      V! s5 @8 c8 k4 ?+ j
  3.     layer.Lineweight = acLnWt018
    - d& j7 y$ |9 o! {0 j
  4.     layer.color = acBlue* r/ e6 m& K- @2 P" C
  5.     ThisDrawing.Linetypes.Load "center", "acadiso.lin"
    " O4 r9 s7 k5 L4 o5 j) A! {
  6.     layer.Linetype = "CENTER"
    1 z3 J; G6 x' ?+ U
  7.     ThisDrawing.ActiveLayer = layer
复制代码
 楼主| 发表于 2011-5-13 09:14:21 | 显示全部楼层 来自: 中国浙江杭州
谢谢,非常感谢
发表于 2011-5-15 20:44:43 | 显示全部楼层 来自: 中国四川德阳
本帖最后由 bingdianfeishui 于 2011-5-15 20:45 编辑 $ l& }6 `* f  m
5 i2 e" G% o' ?4 R+ v: |7 t* m
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:
- B, B5 l! Q/ z9 [- g; Z' T0 x. N- |* R
  1. ii = 0                              '如果未加载“CENTER”线型,则加载9 N6 G; G' `" e- p- L. j
  2. For Each element In ThisDrawing.Linetypes4 q! {# p3 ^& g
  3.     If element.Name = "CENTER" Then
      d2 f7 L' n* o" s1 |& A2 P+ {
  4.         ii = 10 w$ ]. v  J2 N" t1 ^
  5.         Exit For* c, A: t! n- u7 h( K9 M% `
  6.     End If
    " C- f2 D$ p2 Y: ?
  7. Next element
    & e, _' n: d$ ^2 Z% d+ t9 N! E
  8. If ii = 0 Then2 _- X1 o  M% R- ?7 h5 ?. i8 D2 }
  9.     ThisDrawing.Linetypes.Load "Center", "acadiso.lin"
    . p- J  |6 S2 e/ `6 F
  10. End If
    2 o4 V, {1 h4 b, @5 o
复制代码
, t. P: m# p. |# r
图层、选择集这些最好也这样做一下判断

评分

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

查看全部评分

 楼主| 发表于 2011-5-16 14:51:13 | 显示全部楼层 来自: 中国浙江杭州
4# bingdianfeishui
) z6 U+ W: f8 @/ Q: a8 A: T4 }; b! _: K* M, l
直接使用on error resume next效果更好
 楼主| 发表于 2011-6-9 17:24:48 | 显示全部楼层 来自: 中国浙江杭州
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:! `+ c# r( C: i; I5 t- S
ii = 0                              '如果未加载“CENTER”线型,则加载
$ W- s5 {+ f( ?2 E- C5 C2 AFor Each element In ThisDrawing.Linetypes
/ H( k; Y6 _7 q6 y% ^! O3 ~    If element ...
% R, m% y; i6 {' T' Kbingdianfeishui 发表于 2011-5-15 20:44 http://www.3dportal.cn/discuz/images/common/back.gif

. x4 R$ v* k- g- |2 C/ K& Q/ h6 a
4 v; E5 M9 Z) r# R还是谢谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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