QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
有知道cad中vba调用块怎么编程,% q) H( [* R, x
例如 我定义好一个块a  并且a中有3个属性,现在我要调用这个块300次,并且每次块中的属性需要修改,不知道怎么编程。有vba的高手指点下哈!
发表于 2008-11-10 12:37:15 | 显示全部楼层 来自: 中国辽宁营口
  1. Sub IB()
      X0 ?. O+ O1 o3 d! r' L' a
  2.     Dim I As Integer, J As Integer, B As AcadBlockReference, Attes As Variant, Att As AcadAttributeReference, P As Variant, S As String! `, I/ b1 J0 b
  3.     With ThisDrawing2 I6 a/ U; K/ q6 ?% ~+ S
  4.    
    2 ]+ o9 |0 a0 l- a
  5.         '用For循环插入块参照300次
    * P+ |. b6 k$ n
  6.         For I = 0 To 299
    9 J! U) Z, i% B$ Z
  7.         2 Z4 O9 @) l1 r$ s/ r( J" c
  8.              '在屏幕上指定点,也可以用其它方法指定点" a# M* M1 J/ s$ J$ W
  9.             P = .Utility.GetPoint(, "指定插入点:")+ r1 T' h; }5 S/ ^2 h
  10.             1 L; C4 c# H! ]- _0 ~7 M
  11.             '在指定点插入块参照并赋值给变量B: W7 B" Z; c- z( ~! [' y
  12.             '三维比例(在这个例程中均设为1)和旋转角(在这个例程中设为0)都可以按需要设置3 i' f( \  w4 i2 W
  13.             '还有一个可选参数"密码"在本例程中没有设置% O5 {; T8 O/ F5 E% s; q: D6 ?% _: l
  14.             Set B = .ModelSpace.InsertBlock(P, "A", 1, 1, 1, 0)
    , S3 Q, h3 c- q$ V( t5 ?* p' }
  15.             7 x0 t  i7 J2 B+ b
  16.             '用变体变量获得块参照中的属性集合
    ( o/ D+ t9 z: L" Q# K* ]
  17.             Attes = B.GetAttributes
    : ^  Y/ w+ r- ]/ S1 L; ]
  18.             
    ( F! I0 v$ n0 I
  19.             '用For循环分别修改块参照中三个属性的值5 `5 _" T) s1 @3 k1 x# Y7 @6 D
  20.             For J = 0 To 29 v* `  C- u9 M
  21.             
    " ^7 t" _# E1 N5 c% z
  22.                 '把属性集合中的第J个元素赋值给属性参照变量: |4 y6 Q* i+ i: X* b
  23.                 '这不是必须的,这样做只是为了输入代码方便,因为在对象型变量后面输入"."时可以弹出可用的属性提示列表框,而变体变量没有提示0 r& l* F/ J0 d# A/ z: h' ~: g+ k$ Q
  24.                 '就是说下面两行代码中"Att."完全可以用"Attes(J).",但这样一来它后面的属性关键字就全靠键盘输入了,不喜欢: p& c2 W( h% L& P7 A* b
  25.                 Set Att = Attes(J)' a6 R+ R- ?: B; X! \5 B/ u6 r1 Y
  26.                 ! E9 n" X! q) D3 I$ P  m* {) W7 b
  27.                 '由用户在命令行输入属性值字符串& d- f9 H% N' C) H
  28.                 '第一个参数为True时返回的字符串可以包含空格,只能以回车键为结束。
    5 w. y" E& Y' i
  29.                 '当第一个参数为False时返回的字符串不许包含空格,可以以回车键或空格结束。
      O* V0 H- ?/ H
  30.                 '第二个参数(命令提示)中使用了块属性对象的"标记"属性
    , B' J, N: J& z* \0 ]9 ?8 d
  31.                 S = .Utility.GetString(True, "输入" & Att.TagString & "的值:")8 V) w0 d0 _5 P& `( W. d
  32.                
    8 L4 }$ |8 S4 o, x
  33.                 '把用户输入的字符串赋值给块属性
    * c5 ]2 C3 O6 F7 N+ A( }2 o
  34.                 Att.TextString = S
    % n* s5 I: _$ ]3 K
  35.             Next, _  r+ I) H3 A! Z0 O; g
  36.         Next& Y( J) }( R3 A  p7 M6 a; |
  37.     End With7 w4 {( l) F  D% g( e& O+ [
  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 )

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