QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
9天前
查看: 2860|回复: 1
收起左侧

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

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

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

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

x
有知道cad中vba调用块怎么编程,
$ H, O; ?9 m8 l6 ]0 V8 q  T5 D! C例如 我定义好一个块a  并且a中有3个属性,现在我要调用这个块300次,并且每次块中的属性需要修改,不知道怎么编程。有vba的高手指点下哈!
发表于 2008-11-10 12:37:15 | 显示全部楼层 来自: 中国辽宁营口
  1. Sub IB()0 l( c1 \2 h, ^# F+ v
  2.     Dim I As Integer, J As Integer, B As AcadBlockReference, Attes As Variant, Att As AcadAttributeReference, P As Variant, S As String
    8 E; C7 y& t& t7 `
  3.     With ThisDrawing2 u: F: U$ u8 B- \
  4.     0 B. K" H6 }& {3 Z' S
  5.         '用For循环插入块参照300次5 b$ y/ q. u: V' J& ~: x+ T  c
  6.         For I = 0 To 299
    + v1 R2 @6 N' Y' B
  7.         
    9 b# L! D1 T/ P0 j3 U3 Q
  8.              '在屏幕上指定点,也可以用其它方法指定点! n  Y: T" b4 H' P" v# L3 p9 }
  9.             P = .Utility.GetPoint(, "指定插入点:")2 _. d  E  m8 t6 f1 K% u, F
  10.             
    - i- [/ D. M! \7 K
  11.             '在指定点插入块参照并赋值给变量B
    0 A: ^- U$ o3 Q% B, R% W& L
  12.             '三维比例(在这个例程中均设为1)和旋转角(在这个例程中设为0)都可以按需要设置
    ( @& R$ J$ g& m& P
  13.             '还有一个可选参数"密码"在本例程中没有设置
    * |! B& Y! `" R- O, K6 |
  14.             Set B = .ModelSpace.InsertBlock(P, "A", 1, 1, 1, 0)
    6 N7 X, r; @" B  v
  15.             
    3 a: c. B% V! y4 _2 t  F, a/ J# _
  16.             '用变体变量获得块参照中的属性集合% C: R' t3 u. F, P4 Y) i" ^
  17.             Attes = B.GetAttributes
    " p9 q' k% Z0 D0 ~# r4 c0 w
  18.             , N0 B0 I0 }0 v7 h7 Q
  19.             '用For循环分别修改块参照中三个属性的值) j4 F6 Y% `5 N8 w4 j+ e
  20.             For J = 0 To 2# N2 W9 T3 s' h5 S4 _9 s! K9 R
  21.             $ W7 X; B: T1 S" S9 Q
  22.                 '把属性集合中的第J个元素赋值给属性参照变量( t  J+ D/ n4 N" `% E
  23.                 '这不是必须的,这样做只是为了输入代码方便,因为在对象型变量后面输入"."时可以弹出可用的属性提示列表框,而变体变量没有提示4 H9 A9 [, t$ h$ _
  24.                 '就是说下面两行代码中"Att."完全可以用"Attes(J).",但这样一来它后面的属性关键字就全靠键盘输入了,不喜欢
    * E! F4 c. K( M* q. \
  25.                 Set Att = Attes(J)( ?7 e3 h) C4 J6 {
  26.                
    % _, Q5 [1 Y% Z4 M4 d  r! Z/ d# I
  27.                 '由用户在命令行输入属性值字符串* m- T4 w3 R: t' m$ {" [4 }- f) A6 N
  28.                 '第一个参数为True时返回的字符串可以包含空格,只能以回车键为结束。" C/ h: w* k. _5 @/ E+ A( }0 s
  29.                 '当第一个参数为False时返回的字符串不许包含空格,可以以回车键或空格结束。$ h# O( m. M$ @7 c' [) M
  30.                 '第二个参数(命令提示)中使用了块属性对象的"标记"属性
    1 Z9 B- e0 O8 O# x# C. l$ \  I+ }
  31.                 S = .Utility.GetString(True, "输入" & Att.TagString & "的值:")
    : G! l, B7 j+ b2 y! ?8 A) X
  32.                 2 @# Z% @" y$ b, i! |  q3 d/ F
  33.                 '把用户输入的字符串赋值给块属性
    + _: ]7 ~/ H/ R6 C
  34.                 Att.TextString = S1 w8 [5 v8 U7 f4 j/ i: b
  35.             Next
    % i# g) b( R- a. r1 ~) E; z! a. m. {
  36.         Next
    6 n# u# d. Z) ^) l1 u
  37.     End With' g" x* h/ B+ r
  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 )

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