QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
有知道cad中vba调用块怎么编程,
0 w& M9 n( ~$ I( n4 {" t/ }- j例如 我定义好一个块a  并且a中有3个属性,现在我要调用这个块300次,并且每次块中的属性需要修改,不知道怎么编程。有vba的高手指点下哈!
发表于 2008-11-10 12:37:15 | 显示全部楼层 来自: 中国辽宁营口
  1. Sub IB()
    1 @2 b: k8 ~3 y( g0 q4 S# c% \6 W
  2.     Dim I As Integer, J As Integer, B As AcadBlockReference, Attes As Variant, Att As AcadAttributeReference, P As Variant, S As String+ r$ {/ o! _7 Y- U6 X( N  c# L9 H
  3.     With ThisDrawing
    7 ~) S( K; ~5 U  M/ N+ R1 ?+ H
  4.     ) u+ N8 E+ u& w: U( A* i- N8 d# M1 z
  5.         '用For循环插入块参照300次
    5 C" m2 F6 y: l# `+ _- P; b' a6 g
  6.         For I = 0 To 299' f* J- t1 i1 `. v, }
  7.         
    " W  s+ D& S! l" R# P, F7 w; i9 g
  8.              '在屏幕上指定点,也可以用其它方法指定点1 W: |5 B3 E2 T. J( `( `; ?" j8 _
  9.             P = .Utility.GetPoint(, "指定插入点:")) j6 Z5 T: _- w/ M6 V9 X
  10.             0 _' a% L8 A0 F7 h7 D: Q# K1 x
  11.             '在指定点插入块参照并赋值给变量B0 \+ u; W* O4 H
  12.             '三维比例(在这个例程中均设为1)和旋转角(在这个例程中设为0)都可以按需要设置
    $ P* P; l; W* C8 J& D; `, h
  13.             '还有一个可选参数"密码"在本例程中没有设置
    7 {2 |2 a  {5 e( K" d6 h% E: i
  14.             Set B = .ModelSpace.InsertBlock(P, "A", 1, 1, 1, 0)
    1 K6 m0 C$ u$ {* R
  15.             
    0 I0 C- Z. T2 |" \  z5 D
  16.             '用变体变量获得块参照中的属性集合2 [9 y5 }4 |8 ^+ P( |
  17.             Attes = B.GetAttributes
    + X$ s2 n& G. Z4 E7 }
  18.             ( ?" ~  C6 k6 \* c3 s, p* x
  19.             '用For循环分别修改块参照中三个属性的值9 o- @+ N: x( ~6 A* `$ T
  20.             For J = 0 To 2& ]" E6 {# \8 L0 O
  21.             
    . C) }4 K* u2 {" N, x4 q
  22.                 '把属性集合中的第J个元素赋值给属性参照变量0 z; X, V. F, h: h4 X
  23.                 '这不是必须的,这样做只是为了输入代码方便,因为在对象型变量后面输入"."时可以弹出可用的属性提示列表框,而变体变量没有提示
    4 X: R2 a: x; R* V4 H
  24.                 '就是说下面两行代码中"Att."完全可以用"Attes(J).",但这样一来它后面的属性关键字就全靠键盘输入了,不喜欢+ V1 M  F4 ~$ F* ~9 z% U1 h* d* e/ @, q
  25.                 Set Att = Attes(J)
    1 ^' |$ a9 L6 S- U0 a4 p; A
  26.                 5 i- A  N* c; w! Q. W; m: t
  27.                 '由用户在命令行输入属性值字符串' Z& M4 Y) q4 Y" F5 y/ L1 }# |; |( b
  28.                 '第一个参数为True时返回的字符串可以包含空格,只能以回车键为结束。
    + t; U, [* M# S  g) a
  29.                 '当第一个参数为False时返回的字符串不许包含空格,可以以回车键或空格结束。
    + E* N% ]9 E+ b; {# r
  30.                 '第二个参数(命令提示)中使用了块属性对象的"标记"属性
    3 l" M. K' C$ T/ c
  31.                 S = .Utility.GetString(True, "输入" & Att.TagString & "的值:")
    : s; M6 r. C/ P, F: q# z
  32.                 8 g; V" n  ]# p1 k0 |8 ?
  33.                 '把用户输入的字符串赋值给块属性3 u1 O( n! l* t# _( z. }; I) ^& t
  34.                 Att.TextString = S) y' v) U5 {% ~$ r/ E
  35.             Next  P& T$ [* H; S( T. d- h# |
  36.         Next
    4 x- J$ c4 N( q5 P+ B
  37.     End With  L* k; n5 B: K. c1 p3 C8 c
  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 )

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