QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
9天前
查看: 2863|回复: 1
收起左侧

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

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

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

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

x
有知道cad中vba调用块怎么编程,& q. B7 `* G! A$ V( w
例如 我定义好一个块a  并且a中有3个属性,现在我要调用这个块300次,并且每次块中的属性需要修改,不知道怎么编程。有vba的高手指点下哈!
发表于 2008-11-10 12:37:15 | 显示全部楼层 来自: 中国辽宁营口
  1. Sub IB()
    ' r0 k5 C' g( M5 k6 z& r$ c
  2.     Dim I As Integer, J As Integer, B As AcadBlockReference, Attes As Variant, Att As AcadAttributeReference, P As Variant, S As String
    + b  u9 ~. p. ]- G8 U  M2 v
  3.     With ThisDrawing/ D: k  T9 \4 f* o  X3 n& o: F; j
  4.     2 S0 G  n, ~& Y2 u3 p% ^* z
  5.         '用For循环插入块参照300次
    6 i2 j9 v( `( a- b
  6.         For I = 0 To 2991 V4 b& r* |( _7 a
  7.         7 w7 [6 i/ i! k0 @) {7 X5 w
  8.              '在屏幕上指定点,也可以用其它方法指定点
    1 u' A- @# w8 v9 m
  9.             P = .Utility.GetPoint(, "指定插入点:")% p8 y+ t& n  e6 ^3 O) I- {$ q
  10.             3 C, I" s) S' h' x1 G9 u$ z1 b7 Q
  11.             '在指定点插入块参照并赋值给变量B5 M  L1 T  p- P! P
  12.             '三维比例(在这个例程中均设为1)和旋转角(在这个例程中设为0)都可以按需要设置
    2 h- F/ h0 O4 |; K2 R1 n
  13.             '还有一个可选参数"密码"在本例程中没有设置# d+ p' ~( @) q( A/ h0 j2 M' N
  14.             Set B = .ModelSpace.InsertBlock(P, "A", 1, 1, 1, 0)
    + C+ U8 }9 f, _1 G5 I& ~
  15.             
    ' r6 G0 R+ t4 \. f; f* R& q6 D
  16.             '用变体变量获得块参照中的属性集合
    ( y5 R; k1 k& b: S9 N8 ?/ v0 m
  17.             Attes = B.GetAttributes/ B  [3 Y; a$ R& D8 @  o# U
  18.             3 s+ H3 e: a* Z7 k
  19.             '用For循环分别修改块参照中三个属性的值
    4 @0 ?( C* \: ?3 |3 g' }' ?
  20.             For J = 0 To 24 D/ S  k6 J$ `4 e  z: |
  21.             2 x& p( X8 d. y& j
  22.                 '把属性集合中的第J个元素赋值给属性参照变量
    3 w2 o6 P) m1 E+ S+ a
  23.                 '这不是必须的,这样做只是为了输入代码方便,因为在对象型变量后面输入"."时可以弹出可用的属性提示列表框,而变体变量没有提示
    ' {/ F* Y1 g3 O% o
  24.                 '就是说下面两行代码中"Att."完全可以用"Attes(J).",但这样一来它后面的属性关键字就全靠键盘输入了,不喜欢: u. [. b, Y5 h: Z) ^$ U: ~  x! Q
  25.                 Set Att = Attes(J)) n' M/ J8 L1 k6 L7 u  w
  26.                
    & @3 w+ G( J$ z5 m; O
  27.                 '由用户在命令行输入属性值字符串
    . ^5 M/ V$ O4 I! y+ S  j& P
  28.                 '第一个参数为True时返回的字符串可以包含空格,只能以回车键为结束。' F5 P8 l& _7 y9 W' R! k
  29.                 '当第一个参数为False时返回的字符串不许包含空格,可以以回车键或空格结束。
    6 J5 {  Q9 U1 A0 e: D- g* @
  30.                 '第二个参数(命令提示)中使用了块属性对象的"标记"属性* o, Y$ @, g, [) h" J
  31.                 S = .Utility.GetString(True, "输入" & Att.TagString & "的值:")5 ^1 L6 S$ B1 E( H$ [; z
  32.                
    % I: a! J, u  f( C
  33.                 '把用户输入的字符串赋值给块属性$ i8 v5 `0 d* X: u
  34.                 Att.TextString = S, p, N5 Y" F, N1 Z0 Q' R
  35.             Next( R1 H6 n1 B. g/ W) l  _4 N; c
  36.         Next6 D! c  m# ]$ l- d
  37.     End With
    + I* M) W: p" n5 I7 n) I  X
  38. End Sub
复制代码

1.dwg

108.73 KB, 下载次数: 19

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

本版积分规则


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

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

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