QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
有知道cad中vba调用块怎么编程,
5 U$ S) ?# C* ~) ~$ \例如 我定义好一个块a  并且a中有3个属性,现在我要调用这个块300次,并且每次块中的属性需要修改,不知道怎么编程。有vba的高手指点下哈!
发表于 2008-11-10 12:37:15 | 显示全部楼层 来自: 中国辽宁营口
  1. Sub IB()1 i4 j: O, Z5 g( U# v' t
  2.     Dim I As Integer, J As Integer, B As AcadBlockReference, Attes As Variant, Att As AcadAttributeReference, P As Variant, S As String/ _! h3 t  p! |( v# t7 h
  3.     With ThisDrawing
    " @$ V* I5 a- C1 ^
  4.     2 Z0 ]8 @! Y* {* y
  5.         '用For循环插入块参照300次  ]& ~- ^- U+ c+ v5 G) M2 _) d: }, j
  6.         For I = 0 To 2995 V( f( {; @( [/ `  U; z& d
  7.         8 P& ~: w7 E( W$ M. L9 w
  8.              '在屏幕上指定点,也可以用其它方法指定点
    3 v5 @* e+ }; [* k# L  o, _* C* \
  9.             P = .Utility.GetPoint(, "指定插入点:")5 u  J9 b/ A* |
  10.             0 R0 [3 W7 a+ T( y1 v
  11.             '在指定点插入块参照并赋值给变量B
    ' Y3 x4 M) g2 Z* }
  12.             '三维比例(在这个例程中均设为1)和旋转角(在这个例程中设为0)都可以按需要设置$ O7 r# q4 R, z" u
  13.             '还有一个可选参数"密码"在本例程中没有设置) s0 Y; r0 {/ E/ `
  14.             Set B = .ModelSpace.InsertBlock(P, "A", 1, 1, 1, 0)
    ) d7 P9 V6 ]7 u, M$ }
  15.             & i# L# }& G7 X0 p
  16.             '用变体变量获得块参照中的属性集合; F, c# E* Y& Z3 z
  17.             Attes = B.GetAttributes
    $ H  ?9 |* E9 e6 n
  18.             
    7 n$ N! m* U, E* H
  19.             '用For循环分别修改块参照中三个属性的值0 Y9 \3 t/ s% ]. A$ I
  20.             For J = 0 To 2* ]  g; d8 U+ N! s2 o3 r9 K4 L
  21.             
    0 `4 |/ t& Q* N3 O2 n4 p6 l* D; P
  22.                 '把属性集合中的第J个元素赋值给属性参照变量
    3 a& ?) Y+ ?6 b. r  T" _1 e% S
  23.                 '这不是必须的,这样做只是为了输入代码方便,因为在对象型变量后面输入"."时可以弹出可用的属性提示列表框,而变体变量没有提示
    . O8 z: w6 P& v
  24.                 '就是说下面两行代码中"Att."完全可以用"Attes(J).",但这样一来它后面的属性关键字就全靠键盘输入了,不喜欢
    2 K5 A# h8 }; w) A6 B
  25.                 Set Att = Attes(J)
    $ s9 H8 w( f+ N& B
  26.                 1 w+ ^- a- e$ I
  27.                 '由用户在命令行输入属性值字符串+ y- g9 T6 d5 @6 l; y$ G' \+ l3 v
  28.                 '第一个参数为True时返回的字符串可以包含空格,只能以回车键为结束。8 \1 A+ e+ I/ h0 L/ \  E2 i$ P! w. n
  29.                 '当第一个参数为False时返回的字符串不许包含空格,可以以回车键或空格结束。
    # g$ b$ T3 R+ p9 J
  30.                 '第二个参数(命令提示)中使用了块属性对象的"标记"属性
    , [9 j) u# T& v9 ?9 b
  31.                 S = .Utility.GetString(True, "输入" & Att.TagString & "的值:")
      a" E3 m4 U% L
  32.                
    * I# S, P/ _+ H, ~$ i8 H! R) @
  33.                 '把用户输入的字符串赋值给块属性
    # M/ U: ?3 q9 z; r$ R  v& c
  34.                 Att.TextString = S
    / M, a( v' G' ~
  35.             Next, _  x8 R% r& Q- J# Z5 z
  36.         Next4 B  N# B  I7 A$ }# L4 Q  e% M  x
  37.     End With
    ( N0 F% \1 L7 a7 `8 Z/ c: W
  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 )

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