QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
7天前
查看: 5348|回复: 5
收起左侧

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

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

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

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

x
本帖最后由 woaishuijia 于 2011-5-13 04:56 编辑
0 j( h2 [6 [* x8 J6 G& O. S8 Z# @  t# X9 f$ ~
我要新建图层,并要设置图层线型,但是我在设置中心线的时候出现问题,提示未找到主键,程序如下:% s9 P5 V* l% t( Y9 z- D# F( o

) U& W& k  h9 \
  1.     Dim layer As AcadLayer7 `" c( e2 h8 Q- `3 z( X9 }% q- h. v& }
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC")        '中心线层( C: O+ W2 _6 r- D9 n: J
  3.         layer.Lineweight = acLnWt018
    ( W, ]% o5 l' L: A. {& ~
  4.         layer.color = acBlue
    $ ?$ N* m$ b" {* K
  5.         layer.Linetype = "CENTER"  p  c( m7 i; ^
  6.         ThisDrawing.ActiveLayer = layer
复制代码

$ i/ P2 ^+ b: X( \" _( q1 ?  S  Q4 g
出现问题的是:layer.Linetype = "CENTER"+ [6 J; h+ ^' ?/ D/ }# }, {
提示如下:
  h2 p/ M0 [! V2 H/ W+ ? 未找到主键.JPG
4 h7 J$ W/ b* P请帮助,谢谢。
发表于 2011-5-13 05:04:32 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-5-13 05:05 编辑
% o+ |* u! Q5 t' B, i. ^, [
' E# @% L6 S' z( o设置线型之前应保证线型已被加载
  1.     Dim layer As AcadLayer8 `, F) Q) K! I, a+ I  u; S
  2.     Set layer = ThisDrawing.Layers.Add("ZXXC"  )      '中心线层5 @/ ~9 h" N, g$ l* P$ k5 O0 s. a
  3.     layer.Lineweight = acLnWt018
    8 j% J# f( y4 a# j  _  C. |1 Q* h
  4.     layer.color = acBlue1 t: _1 T* G$ N- Z3 g( g0 G: {
  5.     ThisDrawing.Linetypes.Load "center", "acadiso.lin"( ^2 _+ S/ d$ x( ^# w
  6.     layer.Linetype = "CENTER"5 r+ s2 r. R1 E9 m# G* I
  7.     ThisDrawing.ActiveLayer = layer
复制代码
 楼主| 发表于 2011-5-13 09:14:21 | 显示全部楼层 来自: 中国浙江杭州
谢谢,非常感谢
发表于 2011-5-15 20:44:43 | 显示全部楼层 来自: 中国四川德阳
本帖最后由 bingdianfeishui 于 2011-5-15 20:45 编辑 ! Q, a% D. X% S, {6 J8 J  P& f
5 s( }- o2 G3 W9 b
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:+ T9 ~+ w; R. O; e; J" c* a
  1. ii = 0                              '如果未加载“CENTER”线型,则加载5 E5 t, q0 |4 f  q* m
  2. For Each element In ThisDrawing.Linetypes. H0 `1 p/ z2 {% Y; \5 @* y
  3.     If element.Name = "CENTER" Then
    + Z" H- y  Z' h' S) @9 _
  4.         ii = 1
    8 n* h  t: {5 f
  5.         Exit For
    3 K- x2 Z5 N8 _" c$ |
  6.     End If
    . K8 D2 o8 q6 {. g
  7. Next element  D5 u# v, o) \/ S2 E( k3 t. `
  8. If ii = 0 Then" J  U+ k% ?4 u! N
  9.     ThisDrawing.Linetypes.Load "Center", "acadiso.lin"
    - N6 u( _; z; O. s- L
  10. End If
    ; {, ]# f- E  ?, X* d4 j2 M1 I' m& W/ i
复制代码
4 y' h7 y1 s% b$ U
图层、选择集这些最好也这样做一下判断

评分

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

查看全部评分

 楼主| 发表于 2011-5-16 14:51:13 | 显示全部楼层 来自: 中国浙江杭州
4# bingdianfeishui # D! ]1 _) z& c2 I' h. G$ n6 r
) h3 y4 ?2 P8 a9 n9 ~, r& p
直接使用on error resume next效果更好
 楼主| 发表于 2011-6-9 17:24:48 | 显示全部楼层 来自: 中国浙江杭州
如果已经加载了center线型,再加载的话会报错,所以最好做一个判断。如下:
+ [3 ]. J% r: a6 x- Xii = 0                              '如果未加载“CENTER”线型,则加载+ {$ I( J4 [+ {6 m8 d
For Each element In ThisDrawing.Linetypes
) ?8 C- b; b+ I1 u    If element ...
  L1 F. l' b/ J3 qbingdianfeishui 发表于 2011-5-15 20:44 http://www.3dportal.cn/discuz/images/common/back.gif
) x( q" a; y7 I- M0 r# P
0 {4 V: \, c' v9 \/ a
还是谢谢
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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