QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
有知道cad中vba调用块怎么编程,
# Q7 ~  f8 v0 S$ ]8 ?例如 我定义好一个块a  并且a中有3个属性,现在我要调用这个块300次,并且每次块中的属性需要修改,不知道怎么编程。有vba的高手指点下哈!
发表于 2008-11-10 12:37:15 | 显示全部楼层 来自: 中国辽宁营口
  1. Sub IB()
    8 ^9 s: I% c# E, w  V1 z1 O$ B* A
  2.     Dim I As Integer, J As Integer, B As AcadBlockReference, Attes As Variant, Att As AcadAttributeReference, P As Variant, S As String( }/ ]9 H3 [! F6 ~# O) h9 n
  3.     With ThisDrawing5 p; x9 e: \0 U( o  b. V/ g+ W
  4.    
    - U0 p2 y# B  m7 _7 x# [, l
  5.         '用For循环插入块参照300次3 Q& I" N, ^: S7 @: y
  6.         For I = 0 To 299
    0 \+ i3 a6 C0 H+ b+ Q
  7.         2 B  T0 ]0 P6 f9 A( j
  8.              '在屏幕上指定点,也可以用其它方法指定点
    2 S7 N% p, C0 N/ a- r
  9.             P = .Utility.GetPoint(, "指定插入点:")
    - y. L. n+ }2 Z1 a# p5 ]$ p8 J
  10.             
    # M' c, W. y/ Y% `6 g- Y
  11.             '在指定点插入块参照并赋值给变量B
    $ M" k$ g0 |/ I" W" h% `* ^" u& m
  12.             '三维比例(在这个例程中均设为1)和旋转角(在这个例程中设为0)都可以按需要设置9 O! Z( Z0 C) u" q! e& x' D
  13.             '还有一个可选参数"密码"在本例程中没有设置
      w5 L" U. z- s0 j0 z4 n! {
  14.             Set B = .ModelSpace.InsertBlock(P, "A", 1, 1, 1, 0)
    1 w/ f1 ~, M  x+ B& H, U$ w7 v
  15.             
    4 X; E8 s/ k& X; Z% r' i
  16.             '用变体变量获得块参照中的属性集合
    5 U# t5 Z* p" Q# c( l' L8 g
  17.             Attes = B.GetAttributes
    ' i/ J0 q7 n( M! i& Z
  18.             + g' a; [6 {8 @3 J8 n# X- U4 c
  19.             '用For循环分别修改块参照中三个属性的值1 V7 H0 O3 T# U9 k
  20.             For J = 0 To 2
    7 M, I2 R" f' A- w1 k5 t$ p
  21.             . n+ W  i. x( H0 ]# a
  22.                 '把属性集合中的第J个元素赋值给属性参照变量
    " y$ m% `8 f5 t* S0 [& z
  23.                 '这不是必须的,这样做只是为了输入代码方便,因为在对象型变量后面输入"."时可以弹出可用的属性提示列表框,而变体变量没有提示
    3 ?  Z9 K  T* g
  24.                 '就是说下面两行代码中"Att."完全可以用"Attes(J).",但这样一来它后面的属性关键字就全靠键盘输入了,不喜欢
    ( t  P- Q' k& F2 o, n
  25.                 Set Att = Attes(J)7 G" M$ i" P& A. a7 _
  26.                 - `# f( O  k5 Z3 d$ C! }
  27.                 '由用户在命令行输入属性值字符串  p( ~7 y; t# c9 U
  28.                 '第一个参数为True时返回的字符串可以包含空格,只能以回车键为结束。3 f2 x  f+ k* R8 O! S, [5 {
  29.                 '当第一个参数为False时返回的字符串不许包含空格,可以以回车键或空格结束。
    2 b& P' \' p2 D* [+ O
  30.                 '第二个参数(命令提示)中使用了块属性对象的"标记"属性
    . a; @* X# ^4 Q+ |# c0 p
  31.                 S = .Utility.GetString(True, "输入" & Att.TagString & "的值:")
    ; B" O3 J0 P" q: y: R
  32.                   w1 C! t' M" ~- o$ Z$ Q2 Z* N
  33.                 '把用户输入的字符串赋值给块属性
    : d; ]; L, z6 c/ p& i" B3 a
  34.                 Att.TextString = S
    * c4 }+ Y7 z2 j
  35.             Next1 G) Q1 n8 a' J& N
  36.         Next& x" S/ B! J) n4 A- o( ~
  37.     End With; b# u% K. v0 Q& d. Q$ ?# B9 }
  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 )

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