QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
有知道cad中vba调用块怎么编程,3 [# M4 M- V5 T6 K- c- U
例如 我定义好一个块a  并且a中有3个属性,现在我要调用这个块300次,并且每次块中的属性需要修改,不知道怎么编程。有vba的高手指点下哈!
发表于 2008-11-10 12:37:15 | 显示全部楼层 来自: 中国辽宁营口
  1. Sub IB()0 s7 J: D5 w9 F
  2.     Dim I As Integer, J As Integer, B As AcadBlockReference, Attes As Variant, Att As AcadAttributeReference, P As Variant, S As String
    / T; y( c& i/ F7 D
  3.     With ThisDrawing' I7 I6 W: V2 g8 f. l9 M
  4.    
    / Z" L: G0 e0 Z8 D: C0 h
  5.         '用For循环插入块参照300次
    / x) q/ @" ]' R& N* o
  6.         For I = 0 To 299( N9 S9 d5 x7 v- y8 |
  7.         & a4 ~, C# `: L3 o! ^% Q. ]8 j
  8.              '在屏幕上指定点,也可以用其它方法指定点$ z1 C0 E8 Z* T" D! P& v- X
  9.             P = .Utility.GetPoint(, "指定插入点:")3 g2 N, F. N2 b2 J
  10.             : J  G8 Q( H6 @. S
  11.             '在指定点插入块参照并赋值给变量B
    * f; s  t5 U& J1 P
  12.             '三维比例(在这个例程中均设为1)和旋转角(在这个例程中设为0)都可以按需要设置4 k4 z5 c2 N$ `; }) d" P* F1 ~4 @
  13.             '还有一个可选参数"密码"在本例程中没有设置! I9 U& L* d: ], |+ e9 v
  14.             Set B = .ModelSpace.InsertBlock(P, "A", 1, 1, 1, 0)8 x% q! J+ k5 ~- z5 r. K2 w
  15.             " g1 U2 v5 T# Q# z  ^, b# F' w% B5 y
  16.             '用变体变量获得块参照中的属性集合. M% J% A2 |  v* u$ u+ F
  17.             Attes = B.GetAttributes$ f. `# X" o: T2 g: m% d  Y
  18.               u5 W) o6 D* X- B1 c1 M2 P- S
  19.             '用For循环分别修改块参照中三个属性的值$ S* R8 ?" h2 g8 C1 H# D5 U
  20.             For J = 0 To 2
    ; i0 g( ]( G: K3 L2 N7 ~" }. L
  21.             8 v# P" h$ e( K! J; K
  22.                 '把属性集合中的第J个元素赋值给属性参照变量. N5 N) V, |" l1 D# E* G
  23.                 '这不是必须的,这样做只是为了输入代码方便,因为在对象型变量后面输入"."时可以弹出可用的属性提示列表框,而变体变量没有提示0 R$ I$ i3 s2 G; o
  24.                 '就是说下面两行代码中"Att."完全可以用"Attes(J).",但这样一来它后面的属性关键字就全靠键盘输入了,不喜欢) E4 X/ X* ?# x9 D2 s
  25.                 Set Att = Attes(J)
    5 Q/ V  X5 g/ J2 ^; `
  26.                 # Y/ t6 \: S( F, A: C/ x- o
  27.                 '由用户在命令行输入属性值字符串+ T, T' c! c  b3 k# g! H1 |# X
  28.                 '第一个参数为True时返回的字符串可以包含空格,只能以回车键为结束。
    ) C( Y( o7 I! _3 L- P7 y
  29.                 '当第一个参数为False时返回的字符串不许包含空格,可以以回车键或空格结束。
    + R: ^) S" R) b+ R7 Q4 B$ V) j3 I3 Q
  30.                 '第二个参数(命令提示)中使用了块属性对象的"标记"属性5 ]" _! {: M& q( b5 L( ^& t* G  F
  31.                 S = .Utility.GetString(True, "输入" & Att.TagString & "的值:"): S( ~+ f; \$ J* o! C* K1 h
  32.                
    , z# U5 R; z, ]2 L2 {- w
  33.                 '把用户输入的字符串赋值给块属性
    8 u2 {" s. E2 g) m2 i
  34.                 Att.TextString = S+ Y- v" s- A# X1 _! _3 w
  35.             Next
    $ y9 C0 z- J8 f8 f( [4 A4 ~, b
  36.         Next2 _: q' H, z; U. c/ J- d- x6 N
  37.     End With: S0 u1 \. Q, l# @
  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 )

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