QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
有知道cad中vba调用块怎么编程,! s' O, a; Y8 O3 C( j5 m
例如 我定义好一个块a  并且a中有3个属性,现在我要调用这个块300次,并且每次块中的属性需要修改,不知道怎么编程。有vba的高手指点下哈!
发表于 2008-11-10 12:37:15 | 显示全部楼层 来自: 中国辽宁营口
  1. Sub IB()9 A" [6 V* c3 G
  2.     Dim I As Integer, J As Integer, B As AcadBlockReference, Attes As Variant, Att As AcadAttributeReference, P As Variant, S As String
    " v% M' F( T+ m5 E# K! M
  3.     With ThisDrawing, V8 p$ C3 z0 I' r  W- H
  4.    
    - J5 }4 A& W/ F/ {& C
  5.         '用For循环插入块参照300次
    8 c' e. @0 _4 v4 H9 I9 n) J) ~7 A
  6.         For I = 0 To 299  ?+ [7 S- h" T3 \
  7.         ; K5 G) y) p7 r3 S. g- z
  8.              '在屏幕上指定点,也可以用其它方法指定点
    2 f" h0 u& x# ~/ l1 G- r7 ?" k. `
  9.             P = .Utility.GetPoint(, "指定插入点:")
    & k; p5 d4 M1 Q& z, m' b
  10.             1 W* q/ y/ W$ ~+ M  v
  11.             '在指定点插入块参照并赋值给变量B
    $ K  s9 q% q  ^3 l: e$ L, U$ I
  12.             '三维比例(在这个例程中均设为1)和旋转角(在这个例程中设为0)都可以按需要设置
    ; R; V. r' A7 `4 k
  13.             '还有一个可选参数"密码"在本例程中没有设置, m! s# Q) I2 |2 \7 f
  14.             Set B = .ModelSpace.InsertBlock(P, "A", 1, 1, 1, 0)0 ?: s% }- K8 e) @* c" X. f3 S; W
  15.             
    : B) ?# ?8 }9 l! X
  16.             '用变体变量获得块参照中的属性集合9 [6 V* G/ o0 ]% H* _/ m' I4 @
  17.             Attes = B.GetAttributes
    $ X! x9 H8 \5 x1 H* S0 v
  18.             + B: R% }5 p" _* w6 O! R
  19.             '用For循环分别修改块参照中三个属性的值
    8 W1 \$ t8 s: {8 w# i
  20.             For J = 0 To 2
    1 W1 p8 o2 A1 @0 R, s  c# c
  21.             
    6 z9 {: x' w0 [. ~5 E
  22.                 '把属性集合中的第J个元素赋值给属性参照变量
    & S( |# C( Z1 L. r
  23.                 '这不是必须的,这样做只是为了输入代码方便,因为在对象型变量后面输入"."时可以弹出可用的属性提示列表框,而变体变量没有提示
    # `  o$ |( r3 [3 q" L+ {
  24.                 '就是说下面两行代码中"Att."完全可以用"Attes(J).",但这样一来它后面的属性关键字就全靠键盘输入了,不喜欢
    / p; e7 Q8 s1 W; z$ f, t1 @1 @
  25.                 Set Att = Attes(J)
    8 w- V# n9 I- I) ^
  26.                 1 c, M! Q: K- m/ S
  27.                 '由用户在命令行输入属性值字符串
    : U0 z2 J3 I: e) Y" P
  28.                 '第一个参数为True时返回的字符串可以包含空格,只能以回车键为结束。
    # `. h6 e% E# h& R
  29.                 '当第一个参数为False时返回的字符串不许包含空格,可以以回车键或空格结束。1 K. F, Z% M3 [4 h: D7 N
  30.                 '第二个参数(命令提示)中使用了块属性对象的"标记"属性( f# D0 A  G$ d$ C4 m; V/ H
  31.                 S = .Utility.GetString(True, "输入" & Att.TagString & "的值:")1 h9 f; o# K1 O( e
  32.                 ' n# F$ V5 T2 \
  33.                 '把用户输入的字符串赋值给块属性
    ! z7 X- q" c" s( `6 u$ Y% I1 J
  34.                 Att.TextString = S" [2 |1 W7 r# L3 I
  35.             Next
    + O  s$ a+ @/ u6 j2 k
  36.         Next
    ; u5 O" `4 q' `& j/ ?% {
  37.     End With
    - B& p7 o+ u/ S1 i/ Y( J0 C1 ~
  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 )

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