QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
8天前
查看: 5349|回复: 5
收起左侧

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

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

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

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

x
本帖最后由 woaishuijia 于 2011-5-13 04:56 编辑 , Q) A& x0 b* c

% a; X5 K) ]& n- h+ r+ f* \" D9 ]我要新建图层,并要设置图层线型,但是我在设置中心线的时候出现问题,提示未找到主键,程序如下:
6 [8 _$ V, j9 J& T5 s
2 D4 ]( B9 j1 p" L( [
  1.     Dim layer As AcadLayer: z7 d4 Y5 q7 V
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC")        '中心线层( a9 q$ I/ c6 X9 I: G  K
  3.         layer.Lineweight = acLnWt018/ @, p; ]4 h7 V9 c6 Y
  4.         layer.color = acBlue
    4 P$ P6 p1 J' Q( N7 a
  5.         layer.Linetype = "CENTER"7 e6 n! q  b: }8 c; V. z, ?" ^3 o
  6.         ThisDrawing.ActiveLayer = layer
复制代码

0 `8 _5 k/ a* k% e# S& Y6 _- i5 v$ r, @' O8 d( G
出现问题的是:layer.Linetype = "CENTER"* a+ p- @3 g/ `) i9 H% s
提示如下:9 S/ C" P" V" S/ q* C9 [
未找到主键.JPG
$ M( E; Z: ~% T0 Y请帮助,谢谢。
发表于 2011-5-13 05:04:32 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-5-13 05:05 编辑   C+ X  \  D/ i/ w/ n; q7 T

- M* a. G  x" k) s+ F设置线型之前应保证线型已被加载
  1.     Dim layer As AcadLayer4 {; w* \% j% v2 ~# }  [7 Z1 Y
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC"  )      '中心线层% M- F. k% j: t) z
  3.     layer.Lineweight = acLnWt018
    " Z2 s  D" ~# _4 i
  4.     layer.color = acBlue' ^/ @# x  r8 f
  5.     ThisDrawing.Linetypes.Load "center", "acadiso.lin"
    # T: P6 }: t( p$ F0 y9 e$ y$ x
  6.     layer.Linetype = "CENTER"
    7 X; ~; L5 e0 |! T: U
  7.     ThisDrawing.ActiveLayer = layer
复制代码
 楼主| 发表于 2011-5-13 09:14:21 | 显示全部楼层 来自: 中国浙江杭州
谢谢,非常感谢
发表于 2011-5-15 20:44:43 | 显示全部楼层 来自: 中国四川德阳
本帖最后由 bingdianfeishui 于 2011-5-15 20:45 编辑 8 ^: J! e4 j* `

4 O6 |; O- M+ T, |$ c! s- n& q1 b  [如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:5 Q+ Y3 D' n: q( X7 ?- q, X/ F" X5 N
  1. ii = 0                              '如果未加载“CENTER”线型,则加载
    % q& M) @: w# k1 y$ k' ~0 z: {
  2. For Each element In ThisDrawing.Linetypes% ]0 ^/ m/ t" z4 y4 d) A
  3.     If element.Name = "CENTER" Then
    : |4 M4 v% `  E
  4.         ii = 1
    % v4 Q# E( s8 w+ I
  5.         Exit For7 f, B  k& o0 Y5 ^- M  V+ y( e, ~
  6.     End If4 c- i; {# L* [1 Y" p
  7. Next element
    4 g5 }$ X  m8 Q( m" P, n
  8. If ii = 0 Then
    + m# G5 f/ N7 m3 z/ `5 Q
  9.     ThisDrawing.Linetypes.Load "Center", "acadiso.lin"4 B* n' R7 p7 q6 p1 \2 |: _# m
  10. End If1 C/ t; Y! L, k# y* d
复制代码
0 z4 I1 P7 i3 }! v& f: g1 ^
图层、选择集这些最好也这样做一下判断

评分

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

查看全部评分

 楼主| 发表于 2011-5-16 14:51:13 | 显示全部楼层 来自: 中国浙江杭州
4# bingdianfeishui
8 i9 c9 b& s6 x+ X6 ?
4 b+ o: Y, b. T, z" t( w$ K直接使用on error resume next效果更好
 楼主| 发表于 2011-6-9 17:24:48 | 显示全部楼层 来自: 中国浙江杭州
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:9 q1 h$ Z; [7 z6 J1 x1 j
ii = 0                              '如果未加载“CENTER”线型,则加载7 y5 P. o0 O( o
For Each element In ThisDrawing.Linetypes( j# k5 M. N" O- s9 g" H; c
    If element ...
! Q1 C) h2 @% E4 @* V3 W7 V: ybingdianfeishui 发表于 2011-5-15 20:44 http://www.3dportal.cn/discuz/images/common/back.gif
6 ]# G- G/ ~% q5 t6 v
" u$ a% v; I8 {; Z7 u2 p
还是谢谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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