QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
有知道cad中vba调用块怎么编程,# N( G8 |; X3 h; `" S! O
例如 我定义好一个块a  并且a中有3个属性,现在我要调用这个块300次,并且每次块中的属性需要修改,不知道怎么编程。有vba的高手指点下哈!
发表于 2008-11-10 12:37:15 | 显示全部楼层 来自: 中国辽宁营口
  1. Sub IB()
    9 e: M3 J1 X$ c9 }! q
  2.     Dim I As Integer, J As Integer, B As AcadBlockReference, Attes As Variant, Att As AcadAttributeReference, P As Variant, S As String" v5 ]. n: R5 q+ P# \
  3.     With ThisDrawing% R9 Y2 {8 Z- J; Q* I8 Y& z8 Z& P
  4.    
    " r% [) @7 R4 _* p1 n' X! Y+ x0 k
  5.         '用For循环插入块参照300次" x- s% X0 l9 O% i* ~1 V# ]
  6.         For I = 0 To 2996 {  O( ]( w  T5 E- f
  7.         : K5 n0 e' j2 l$ m
  8.              '在屏幕上指定点,也可以用其它方法指定点
    / ^4 t7 l; n5 [
  9.             P = .Utility.GetPoint(, "指定插入点:")
    3 z7 M% ~% @+ P
  10.             / L" O2 ?+ u4 C  l8 U
  11.             '在指定点插入块参照并赋值给变量B
    ( M: |" ~2 O  p( l
  12.             '三维比例(在这个例程中均设为1)和旋转角(在这个例程中设为0)都可以按需要设置
    7 L$ X! b3 Y7 p+ }
  13.             '还有一个可选参数"密码"在本例程中没有设置" {, d8 n7 O/ P) b
  14.             Set B = .ModelSpace.InsertBlock(P, "A", 1, 1, 1, 0)8 m1 a8 C6 ^% _; h8 `( J9 v1 n
  15.             & b/ \) ~/ S$ ?' ?( ?
  16.             '用变体变量获得块参照中的属性集合' Y2 r. o4 x' J
  17.             Attes = B.GetAttributes( Y, D* U/ e! E+ t3 \$ h, u, \
  18.             3 d" C& L# @8 {+ m0 I- ~6 ?, b( O
  19.             '用For循环分别修改块参照中三个属性的值
    + R5 W8 E8 H& \& l
  20.             For J = 0 To 2
    & D5 B! D8 i) g( ?: h! {
  21.             ) p# W6 H0 J$ W2 E% J, O
  22.                 '把属性集合中的第J个元素赋值给属性参照变量
      }6 }5 |) J9 l' O+ [+ ~( v$ b4 \
  23.                 '这不是必须的,这样做只是为了输入代码方便,因为在对象型变量后面输入"."时可以弹出可用的属性提示列表框,而变体变量没有提示6 `- \7 O6 g. E& y/ o
  24.                 '就是说下面两行代码中"Att."完全可以用"Attes(J).",但这样一来它后面的属性关键字就全靠键盘输入了,不喜欢
    & y% C$ [1 L+ F
  25.                 Set Att = Attes(J)3 \1 q4 t0 Y( U+ t( [
  26.                
    # t4 l0 i5 U7 J! O- l2 W
  27.                 '由用户在命令行输入属性值字符串
    4 u+ @* ?  U( _' }
  28.                 '第一个参数为True时返回的字符串可以包含空格,只能以回车键为结束。
    2 l8 `. a( I1 B2 g* I; Q( E
  29.                 '当第一个参数为False时返回的字符串不许包含空格,可以以回车键或空格结束。3 Y/ @4 j. A8 N. k  V4 G
  30.                 '第二个参数(命令提示)中使用了块属性对象的"标记"属性3 `1 }" n3 M& h2 m# P: Q/ x- u3 F& v
  31.                 S = .Utility.GetString(True, "输入" & Att.TagString & "的值:"); V$ ~* h, _% s3 [1 d, j
  32.                
    3 y% D# ~4 y% s5 p
  33.                 '把用户输入的字符串赋值给块属性
    6 o8 S5 N5 e$ m
  34.                 Att.TextString = S
    ' y3 ~/ J; q, A& @
  35.             Next
    8 I' X8 q) b! m' R
  36.         Next
    % |7 K( z+ l7 @. @
  37.     End With
    8 [- r0 P- X/ Y2 ^9 U5 ]4 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 )

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