QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2894|回复: 1
收起左侧

[已答复] cad中vba调用块怎么编程

[复制链接]
发表于 2008-11-10 10:06:12 | 显示全部楼层 |阅读模式 来自: 中国上海

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

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

x
有知道cad中vba调用块怎么编程," R7 j( P- {' d$ H/ @* k/ f3 j
例如 我定义好一个块a  并且a中有3个属性,现在我要调用这个块300次,并且每次块中的属性需要修改,不知道怎么编程。有vba的高手指点下哈!
发表于 2008-11-10 12:37:15 | 显示全部楼层 来自: 中国辽宁营口
  1. Sub IB()
    4 _7 a( _( b! c
  2.     Dim I As Integer, J As Integer, B As AcadBlockReference, Attes As Variant, Att As AcadAttributeReference, P As Variant, S As String) v0 _5 c2 D3 `6 X3 H) N
  3.     With ThisDrawing* M1 X( T4 ~  s  J0 w
  4.    
    + t2 y% t- w* B! E" w& @4 q) }
  5.         '用For循环插入块参照300次
    0 @4 B" b0 H4 }( }0 [- u. l; |
  6.         For I = 0 To 2999 d" X4 h$ _5 F# r" t; g
  7.         
    / E  l6 q3 u$ V( G
  8.              '在屏幕上指定点,也可以用其它方法指定点
    ! }& d' K$ Q9 V* X
  9.             P = .Utility.GetPoint(, "指定插入点:")
    & _% v! W; b- V% `
  10.             0 L. ~9 F1 t8 L) k
  11.             '在指定点插入块参照并赋值给变量B
    # T1 t* e. i2 ?) {; P+ t4 B
  12.             '三维比例(在这个例程中均设为1)和旋转角(在这个例程中设为0)都可以按需要设置
    ( i& q& e: Y+ v
  13.             '还有一个可选参数"密码"在本例程中没有设置) E8 z3 r* H7 X# q; Y& \
  14.             Set B = .ModelSpace.InsertBlock(P, "A", 1, 1, 1, 0)4 I4 A# b0 @$ v3 f3 {( u6 t
  15.             
    7 C" L8 c8 H" n% `2 ~/ g
  16.             '用变体变量获得块参照中的属性集合6 l; ?' w3 _! O+ g% O9 A
  17.             Attes = B.GetAttributes1 `" q; R) r) O' q. M* B
  18.             
    6 V! }% g: y5 |4 Z! \
  19.             '用For循环分别修改块参照中三个属性的值
    ( ]: q; N6 |0 F$ T; i/ K7 ~
  20.             For J = 0 To 2
    5 C8 t; S8 }5 s3 b5 `/ [1 p
  21.             ! \% Q4 [2 }* P6 Z8 N
  22.                 '把属性集合中的第J个元素赋值给属性参照变量
    2 d+ [& H0 D( E3 E* N3 d/ b* U
  23.                 '这不是必须的,这样做只是为了输入代码方便,因为在对象型变量后面输入"."时可以弹出可用的属性提示列表框,而变体变量没有提示
    . d) b6 |* T0 N2 H
  24.                 '就是说下面两行代码中"Att."完全可以用"Attes(J).",但这样一来它后面的属性关键字就全靠键盘输入了,不喜欢! e& }0 V& F5 \) Q' T2 G1 n
  25.                 Set Att = Attes(J)
    * F! z- S7 [/ k- T9 D
  26.                
    / q: l  N( e$ k5 S3 y
  27.                 '由用户在命令行输入属性值字符串
    3 x, P6 q+ G, ]% f! n
  28.                 '第一个参数为True时返回的字符串可以包含空格,只能以回车键为结束。
      M' D7 ^! k- i! I* ^, o5 w) k3 N- V
  29.                 '当第一个参数为False时返回的字符串不许包含空格,可以以回车键或空格结束。
    7 m8 W7 N; P/ {
  30.                 '第二个参数(命令提示)中使用了块属性对象的"标记"属性5 g2 t* ?" [0 g- I' }
  31.                 S = .Utility.GetString(True, "输入" & Att.TagString & "的值:")) [: b2 b8 V9 R4 q+ b6 \6 S0 G
  32.                
    ) q# B7 T& n# s! f& }2 @0 c
  33.                 '把用户输入的字符串赋值给块属性
    0 ]' q! C, ~7 N& c5 q0 ?2 Y! D& Z
  34.                 Att.TextString = S
    * A; _" e# V2 I
  35.             Next
    3 S  H- T( v; s- t3 `* ]
  36.         Next
    & L2 s; `4 c" w3 j6 |" t
  37.     End With
      m7 l5 F; m% H0 L6 y
  38. End Sub
复制代码

1.dwg

108.73 KB, 下载次数: 20

发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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