QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
有知道cad中vba调用块怎么编程,- z& k4 M) g( a7 P8 C
例如 我定义好一个块a  并且a中有3个属性,现在我要调用这个块300次,并且每次块中的属性需要修改,不知道怎么编程。有vba的高手指点下哈!
发表于 2008-11-10 12:37:15 | 显示全部楼层 来自: 中国辽宁营口
  1. Sub IB()! q, \( J1 k$ e, \# Y9 b/ @
  2.     Dim I As Integer, J As Integer, B As AcadBlockReference, Attes As Variant, Att As AcadAttributeReference, P As Variant, S As String
    2 D5 F- n, S  R( G" O$ e
  3.     With ThisDrawing' D: |+ {# |% `
  4.    
    * k  L! a, [* Q( i! [# L' ~. i
  5.         '用For循环插入块参照300次1 K& T) y: }+ V8 E; j# q
  6.         For I = 0 To 2998 q+ S4 n8 i8 C0 ?0 p
  7.         
    / Q* U! v; B. |7 J$ p9 V/ _- q
  8.              '在屏幕上指定点,也可以用其它方法指定点3 l8 n% j4 }$ V7 W9 b% ~2 z! t
  9.             P = .Utility.GetPoint(, "指定插入点:")
    - `. v# m2 i5 E8 `! Z4 b* R4 I1 m1 r( L
  10.             
    4 ?1 a' v( }# H! n' n, X0 v
  11.             '在指定点插入块参照并赋值给变量B. C5 Y6 v$ ?) w6 R6 \  R) H' S
  12.             '三维比例(在这个例程中均设为1)和旋转角(在这个例程中设为0)都可以按需要设置. r4 r$ q2 |+ q; J
  13.             '还有一个可选参数"密码"在本例程中没有设置
    8 C3 H. |# [1 v; N8 j7 F
  14.             Set B = .ModelSpace.InsertBlock(P, "A", 1, 1, 1, 0)$ B% K+ W% J* g7 |' L
  15.             
    , r: g) b& I3 L9 m5 c5 w2 E
  16.             '用变体变量获得块参照中的属性集合
    ' L4 P2 ?5 Y6 e5 z
  17.             Attes = B.GetAttributes
    5 {7 }' E0 b' y  V% t. x- I
  18.             6 H$ U6 x) \( `; o5 q
  19.             '用For循环分别修改块参照中三个属性的值5 r6 `7 Z& ?: \$ q" s; f
  20.             For J = 0 To 2
    3 \/ ]  g3 ^0 ]3 P1 a# D% }
  21.             
    % p' l; _9 W- R8 J: {- B
  22.                 '把属性集合中的第J个元素赋值给属性参照变量% \1 X6 J8 F$ ]7 n) E9 [% v, S( H
  23.                 '这不是必须的,这样做只是为了输入代码方便,因为在对象型变量后面输入"."时可以弹出可用的属性提示列表框,而变体变量没有提示
    , c& r4 Y+ c7 e9 `6 q
  24.                 '就是说下面两行代码中"Att."完全可以用"Attes(J).",但这样一来它后面的属性关键字就全靠键盘输入了,不喜欢  W, x8 A0 K" B- J' Q! `+ j
  25.                 Set Att = Attes(J)& ^0 L$ t" U( T+ D9 ]2 j) i
  26.                
    # w7 x1 q0 ~! S2 E& X" N( m& ]
  27.                 '由用户在命令行输入属性值字符串3 k( ]# d" Y" a; M4 x
  28.                 '第一个参数为True时返回的字符串可以包含空格,只能以回车键为结束。
    " `: z! I' c& W: c- m  v8 p$ e4 j
  29.                 '当第一个参数为False时返回的字符串不许包含空格,可以以回车键或空格结束。9 d8 A, n( k8 }: f/ ~. |
  30.                 '第二个参数(命令提示)中使用了块属性对象的"标记"属性
    0 a7 p/ Z5 d" g7 J2 H
  31.                 S = .Utility.GetString(True, "输入" & Att.TagString & "的值:")
    % u' [/ L& G0 c+ d9 _" Z
  32.                
    . b5 Y  r$ M- P2 P$ e5 K9 w
  33.                 '把用户输入的字符串赋值给块属性
    8 L( \# G- Y1 P) J
  34.                 Att.TextString = S
    * j" I( ~! H- \- Y8 s
  35.             Next
    / \* z0 s# Q  {6 q2 x
  36.         Next& K& f4 k% K* W: }. w: O  l3 a
  37.     End With
    9 \+ i+ C; ^( `& m0 ]6 F
  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 )

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