QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
有知道cad中vba调用块怎么编程,* j: V# b1 ^- `' q+ o8 [$ u/ W! D2 p
例如 我定义好一个块a  并且a中有3个属性,现在我要调用这个块300次,并且每次块中的属性需要修改,不知道怎么编程。有vba的高手指点下哈!
发表于 2008-11-10 12:37:15 | 显示全部楼层 来自: 中国辽宁营口
  1. Sub IB()
    # h; e$ s, T0 X/ y
  2.     Dim I As Integer, J As Integer, B As AcadBlockReference, Attes As Variant, Att As AcadAttributeReference, P As Variant, S As String
    % e4 E7 z$ F; T  \" m8 r: n/ C5 u& ^
  3.     With ThisDrawing* _# A2 D5 S! W' x  F
  4.     4 w. u* r% }5 N1 w
  5.         '用For循环插入块参照300次
    5 f" t$ P( C5 D- ^2 d7 Y
  6.         For I = 0 To 2993 v! c7 p% Q0 @3 X7 b7 I
  7.         
    ) U8 d" z+ p( t
  8.              '在屏幕上指定点,也可以用其它方法指定点
    - S+ ^0 n& F  q! u
  9.             P = .Utility.GetPoint(, "指定插入点:")" C) e' [; f& U7 B  W$ a4 b/ T' W
  10.             % {7 m& y; `+ q2 ~0 F" f
  11.             '在指定点插入块参照并赋值给变量B
    9 A. h) Z7 v9 G0 [/ O8 H) L
  12.             '三维比例(在这个例程中均设为1)和旋转角(在这个例程中设为0)都可以按需要设置0 p9 t* [9 H$ G' q: [
  13.             '还有一个可选参数"密码"在本例程中没有设置
    ( E# L. U* T) ?+ q. o
  14.             Set B = .ModelSpace.InsertBlock(P, "A", 1, 1, 1, 0)
    : x: H0 `/ m: Q
  15.             
    . }3 B+ j7 a, ]) ^6 E* |, J' u. w
  16.             '用变体变量获得块参照中的属性集合
    0 x/ X+ ?% t- N( R7 E
  17.             Attes = B.GetAttributes
    ( q1 T3 W6 `- S5 K, R! V5 J
  18.             + Q& N2 P9 Z$ }9 L5 [/ I# Q( R
  19.             '用For循环分别修改块参照中三个属性的值+ K5 K2 c& `# L! E4 @
  20.             For J = 0 To 2
    ; L/ s  S/ E1 `7 N
  21.             
    / x* _% @$ D& o5 t/ M
  22.                 '把属性集合中的第J个元素赋值给属性参照变量: e6 M/ r8 l( P; T& K0 o/ [+ F8 b% f+ i
  23.                 '这不是必须的,这样做只是为了输入代码方便,因为在对象型变量后面输入"."时可以弹出可用的属性提示列表框,而变体变量没有提示) R9 A. E6 h- S; v2 r( I8 Q
  24.                 '就是说下面两行代码中"Att."完全可以用"Attes(J).",但这样一来它后面的属性关键字就全靠键盘输入了,不喜欢
    ' X- [* N9 Y$ g, A
  25.                 Set Att = Attes(J)
    ! d" o- b6 P( G
  26.                 * J6 x* D8 `) |# ^6 I" j5 ~$ Y5 i
  27.                 '由用户在命令行输入属性值字符串
    3 F, G& O' g8 t1 {3 r! |% }
  28.                 '第一个参数为True时返回的字符串可以包含空格,只能以回车键为结束。" x% P2 P  i1 _. S
  29.                 '当第一个参数为False时返回的字符串不许包含空格,可以以回车键或空格结束。
    8 E0 o7 g3 _: n
  30.                 '第二个参数(命令提示)中使用了块属性对象的"标记"属性
    2 D1 _2 U6 w+ Y9 s
  31.                 S = .Utility.GetString(True, "输入" & Att.TagString & "的值:")
    9 \, L1 c: @  }. I% r, h# T
  32.                 7 F  x; U4 J0 o/ Q% c
  33.                 '把用户输入的字符串赋值给块属性8 M: O& O8 n4 {8 F2 G
  34.                 Att.TextString = S* k" n2 n4 e9 m7 w7 _& j! N
  35.             Next! B- v& a8 @. D: N7 E
  36.         Next% K4 l4 V* v; S: y/ g  `
  37.     End With
    . s) h/ v: I6 e; u3 [
  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 )

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