QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
有知道cad中vba调用块怎么编程,
: C  [" f+ d; r9 ?- @# M例如 我定义好一个块a  并且a中有3个属性,现在我要调用这个块300次,并且每次块中的属性需要修改,不知道怎么编程。有vba的高手指点下哈!
发表于 2008-11-10 12:37:15 | 显示全部楼层 来自: 中国辽宁营口
  1. Sub IB()1 @$ I# t* `( ~8 E6 z% [6 E
  2.     Dim I As Integer, J As Integer, B As AcadBlockReference, Attes As Variant, Att As AcadAttributeReference, P As Variant, S As String! U" H  V  C' \" V$ M  t4 ?! r
  3.     With ThisDrawing. C+ r3 ]0 }0 x# H2 v( y
  4.     & |$ V5 i3 b5 V+ d
  5.         '用For循环插入块参照300次
    0 G, q  q! d6 p  m; m
  6.         For I = 0 To 2998 I8 g3 M9 f' S  p
  7.         
    % [4 G& r; B& Q2 _6 E
  8.              '在屏幕上指定点,也可以用其它方法指定点
    / o4 X8 x0 K# F7 d$ d/ ^
  9.             P = .Utility.GetPoint(, "指定插入点:")+ b0 X1 p# G5 L! X+ k
  10.             3 Y5 K( i# Z$ ]& D$ i
  11.             '在指定点插入块参照并赋值给变量B
    7 A" G) z- l1 K7 \8 m" O
  12.             '三维比例(在这个例程中均设为1)和旋转角(在这个例程中设为0)都可以按需要设置
    ' H7 @! _3 W$ u9 j& G5 I& d- l# M
  13.             '还有一个可选参数"密码"在本例程中没有设置
    + V( ]" |9 v3 {8 ^; E
  14.             Set B = .ModelSpace.InsertBlock(P, "A", 1, 1, 1, 0)) A4 x2 v! f% K7 F
  15.             
    9 y4 _3 D5 _5 c$ P, w) U, \
  16.             '用变体变量获得块参照中的属性集合) m4 F1 ?+ c* M; q! I9 R. f% x
  17.             Attes = B.GetAttributes
    - L! ?7 [# q0 p$ h' W1 e$ T/ Q7 [
  18.             2 w# ]1 u+ R1 N4 l" o/ t
  19.             '用For循环分别修改块参照中三个属性的值) B+ p3 t9 ?. z5 T/ d
  20.             For J = 0 To 28 ^' H* r! O+ i
  21.             
    - l$ Z$ u- ^4 ^
  22.                 '把属性集合中的第J个元素赋值给属性参照变量
    + J2 z. o9 e1 G3 P5 n
  23.                 '这不是必须的,这样做只是为了输入代码方便,因为在对象型变量后面输入"."时可以弹出可用的属性提示列表框,而变体变量没有提示! f: m, G; t. u- S" a  [6 }
  24.                 '就是说下面两行代码中"Att."完全可以用"Attes(J).",但这样一来它后面的属性关键字就全靠键盘输入了,不喜欢
    0 B6 W  H& S6 D7 ^6 A5 j
  25.                 Set Att = Attes(J)  d6 P# W! u+ A5 N/ f9 q! {) v6 c
  26.                 " ~3 `7 h, y0 z7 c/ k
  27.                 '由用户在命令行输入属性值字符串
    ' k) i$ z. m$ \8 l8 A
  28.                 '第一个参数为True时返回的字符串可以包含空格,只能以回车键为结束。3 _  [1 ]" [. S3 j0 p4 j1 k
  29.                 '当第一个参数为False时返回的字符串不许包含空格,可以以回车键或空格结束。5 \- F# e9 v2 M: ?* F4 R, a
  30.                 '第二个参数(命令提示)中使用了块属性对象的"标记"属性
    : {4 r9 J1 Y" h! w" b
  31.                 S = .Utility.GetString(True, "输入" & Att.TagString & "的值:")
    ; n, u4 X' ?6 S- v8 ?5 q* F3 q
  32.                
    : j! `5 d3 E' m, c8 v
  33.                 '把用户输入的字符串赋值给块属性
    8 V: e# c7 i2 t5 t3 @$ P( r2 g& n, f
  34.                 Att.TextString = S
    2 Q$ I) V/ k' H3 _! q+ S
  35.             Next
    : o+ z) y2 i! _9 R( R7 I9 S0 M
  36.         Next) _  C9 L: W* X9 [) r
  37.     End With& ^! O/ Y; m' l% W. ]" p+ \
  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 )

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