QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
有知道cad中vba调用块怎么编程,) H/ _: c* z6 j) W( R
例如 我定义好一个块a  并且a中有3个属性,现在我要调用这个块300次,并且每次块中的属性需要修改,不知道怎么编程。有vba的高手指点下哈!
发表于 2008-11-10 12:37:15 | 显示全部楼层 来自: 中国辽宁营口
  1. Sub IB()
    # W6 K4 K, g7 n9 m( H; @
  2.     Dim I As Integer, J As Integer, B As AcadBlockReference, Attes As Variant, Att As AcadAttributeReference, P As Variant, S As String+ O6 v  d/ [% r0 ^$ O" }
  3.     With ThisDrawing
    7 f/ P2 m7 {( P9 t
  4.    
    / C! z! _' b, h, L7 ]2 B( t
  5.         '用For循环插入块参照300次$ h8 ~6 R9 W! q. ]6 F. y0 L- z( T% S
  6.         For I = 0 To 299
    8 P% r- f5 [% x' [
  7.         
    ( K( ?( L! u. l5 X' q* `
  8.              '在屏幕上指定点,也可以用其它方法指定点
    . i' N0 O9 X0 N0 N5 c6 Q3 A
  9.             P = .Utility.GetPoint(, "指定插入点:")
    2 [) Q% {: }- g# W; c, B) @
  10.             6 u2 g2 k+ o+ e# t. X4 M
  11.             '在指定点插入块参照并赋值给变量B
    4 p& S6 f4 C1 w3 v
  12.             '三维比例(在这个例程中均设为1)和旋转角(在这个例程中设为0)都可以按需要设置
    / }5 A) Y* K# A8 D' {* Y
  13.             '还有一个可选参数"密码"在本例程中没有设置0 t$ Z# R! S( D' Y+ F
  14.             Set B = .ModelSpace.InsertBlock(P, "A", 1, 1, 1, 0)- b9 {) K6 K- T4 O4 s# Y
  15.             0 X% J! D- x8 H
  16.             '用变体变量获得块参照中的属性集合. N" F: s4 }5 d4 i3 K+ L
  17.             Attes = B.GetAttributes% K0 O. O6 |0 Y. y. N
  18.               C; f2 b4 |9 c6 r6 P
  19.             '用For循环分别修改块参照中三个属性的值
    $ X: R; N2 X+ P' j8 w/ v( G; n
  20.             For J = 0 To 2' ?  w& v2 Q) y% Q; k
  21.             : u1 {+ F  {. `' D( \2 D
  22.                 '把属性集合中的第J个元素赋值给属性参照变量
    9 e* `0 x6 t, Z( f/ Z; \3 H
  23.                 '这不是必须的,这样做只是为了输入代码方便,因为在对象型变量后面输入"."时可以弹出可用的属性提示列表框,而变体变量没有提示
    " h5 l& b* S" x5 E
  24.                 '就是说下面两行代码中"Att."完全可以用"Attes(J).",但这样一来它后面的属性关键字就全靠键盘输入了,不喜欢
    9 h# S$ E. E4 G  J
  25.                 Set Att = Attes(J)
    8 g, L; A7 i1 f/ D) g' Q$ r& K
  26.                
    ' A6 s4 |$ c2 o. L8 t  A' A0 g
  27.                 '由用户在命令行输入属性值字符串, }! [% q" B( s( u7 c# E
  28.                 '第一个参数为True时返回的字符串可以包含空格,只能以回车键为结束。
    . @6 G9 H$ L$ s/ t- T2 A) [$ d  J3 ^
  29.                 '当第一个参数为False时返回的字符串不许包含空格,可以以回车键或空格结束。  w2 ~" X. S! E
  30.                 '第二个参数(命令提示)中使用了块属性对象的"标记"属性
    ; v9 ^8 s( f1 x6 Q
  31.                 S = .Utility.GetString(True, "输入" & Att.TagString & "的值:")- y. y4 t6 b$ S
  32.                 9 x0 \! M- e% C3 {" {
  33.                 '把用户输入的字符串赋值给块属性
    * R) \, `( M/ C6 n% V. d5 A
  34.                 Att.TextString = S$ Z& ]5 @. f8 U* q4 Q& M: b8 I- A. F
  35.             Next  e! E6 [9 \- _, L, n' _
  36.         Next1 ~3 x) U; v7 Z
  37.     End With9 q  U8 Q9 H) o9 U8 ~, `# L3 }
  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 )

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