QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 woaishuijia 于 2011-5-13 04:56 编辑 ; @9 x% b& P7 |. ^

% ~: J$ F8 y4 n% l( ^6 e- _我要新建图层,并要设置图层线型,但是我在设置中心线的时候出现问题,提示未找到主键,程序如下:
7 m+ e0 G9 K4 K! Q/ C; o) p% N' e& j
  1.     Dim layer As AcadLayer6 N! Y: Z  {6 d; T
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC")        '中心线层9 d6 \2 S& E! d; L8 @6 h
  3.         layer.Lineweight = acLnWt018
    4 v" A8 X, H7 G( m" t
  4.         layer.color = acBlue8 _- {9 x1 k2 ]4 ]3 B2 t- e+ P
  5.         layer.Linetype = "CENTER"" u6 F9 R( K% T1 B9 a9 r
  6.         ThisDrawing.ActiveLayer = layer
复制代码

5 G2 W4 [& ?! v  m* w; Y1 a
7 U5 Z( q! m8 x4 V- q% ~9 c3 a出现问题的是:layer.Linetype = "CENTER"
7 v0 I- }9 ~- Y  I, S8 L9 M$ z. \, a) D  h提示如下:  I( g& W( g( u( ~
未找到主键.JPG
- |* F8 Q  ]8 O& F8 T请帮助,谢谢。
发表于 2011-5-13 05:04:32 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-5-13 05:05 编辑
$ Q- j5 e2 H6 B* G* t7 s  G' `
; P1 D( O5 T9 A, ]设置线型之前应保证线型已被加载
  1.     Dim layer As AcadLayer
    1 ^5 e" R1 Y: T1 ^' K
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC"  )      '中心线层( r9 u1 |% m+ n5 {
  3.     layer.Lineweight = acLnWt018
    8 Y7 v5 H; R' U  b3 ?( B4 J
  4.     layer.color = acBlue
    9 j7 P9 C) q( B; E( ]8 n
  5.     ThisDrawing.Linetypes.Load "center", "acadiso.lin"
    ! S" o* a' ]/ T$ F1 t3 e1 h
  6.     layer.Linetype = "CENTER": M9 I9 J# I- a2 R! _& c5 z
  7.     ThisDrawing.ActiveLayer = layer
复制代码
 楼主| 发表于 2011-5-13 09:14:21 | 显示全部楼层 来自: 中国浙江杭州
谢谢,非常感谢
发表于 2011-5-15 20:44:43 | 显示全部楼层 来自: 中国四川德阳
本帖最后由 bingdianfeishui 于 2011-5-15 20:45 编辑
8 [9 c. V3 i3 H8 j7 {$ G4 l4 S; J: E% c; X- q5 M, a0 [
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:! S6 `4 L7 \, `+ V
  1. ii = 0                              '如果未加载“CENTER”线型,则加载7 Z" n$ z4 z" S$ a' f
  2. For Each element In ThisDrawing.Linetypes
    7 W" [5 P* D- T
  3.     If element.Name = "CENTER" Then
    ) t3 @" R, n& T# X
  4.         ii = 1
    ' F) H- I* G) A7 t
  5.         Exit For
    ; W1 b8 L' q# O8 m1 r3 c: ^
  6.     End If
    ) A& ~* O3 q8 H! Q, f
  7. Next element5 C. w- ~/ T( _0 X  G7 {
  8. If ii = 0 Then/ c( E  d& L; Q. U5 \1 I* Q
  9.     ThisDrawing.Linetypes.Load "Center", "acadiso.lin"
    , q' @* \0 f) d, M3 I# y, k
  10. End If& Q5 |7 M  O1 ]) p
复制代码

: ^& y: ~0 L; A1 E! V图层、选择集这些最好也这样做一下判断

评分

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

查看全部评分

 楼主| 发表于 2011-5-16 14:51:13 | 显示全部楼层 来自: 中国浙江杭州
4# bingdianfeishui
- {! [; f# X5 b' x, I% q3 y% D6 |) l# ~$ \
直接使用on error resume next效果更好
 楼主| 发表于 2011-6-9 17:24:48 | 显示全部楼层 来自: 中国浙江杭州
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:% t. g! Y6 N( I* x) C
ii = 0                              '如果未加载“CENTER”线型,则加载8 V  b$ L" c  F! g' z  D
For Each element In ThisDrawing.Linetypes1 s2 |- j! T* i
    If element ...
* ~- W" M' o0 G. M* A( @( q- k: Vbingdianfeishui 发表于 2011-5-15 20:44 http://www.3dportal.cn/discuz/images/common/back.gif
0 m; i$ l0 H& f1 F' P+ F0 G8 Y8 \

* G6 Q4 d4 j' ^  i; @- c0 x还是谢谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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