QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
有知道cad中vba调用块怎么编程,& U# k+ o( X  y$ G( Y
例如 我定义好一个块a  并且a中有3个属性,现在我要调用这个块300次,并且每次块中的属性需要修改,不知道怎么编程。有vba的高手指点下哈!
发表于 2008-11-10 12:37:15 | 显示全部楼层 来自: 中国辽宁营口
  1. Sub IB()
    / w: `  Q- Z& j& R+ l  `
  2.     Dim I As Integer, J As Integer, B As AcadBlockReference, Attes As Variant, Att As AcadAttributeReference, P As Variant, S As String
    5 r6 @0 V9 o; X# `& ?7 r
  3.     With ThisDrawing# n: \- F! R6 @2 e9 r
  4.    
    5 g" Z/ P, ]0 F' G. b; _% R5 f
  5.         '用For循环插入块参照300次
    , y2 W( X+ d8 @; \5 ~
  6.         For I = 0 To 299
    % I8 |, _4 n1 f1 }. Q) a: ^1 W. Y
  7.         5 }& _& p5 S9 `( F- P" {- O- E: y
  8.              '在屏幕上指定点,也可以用其它方法指定点" o& x8 r6 C! I' S0 |1 s0 O6 p9 D
  9.             P = .Utility.GetPoint(, "指定插入点:")
    - Z+ W8 R  v( x! D+ k5 H3 d; @
  10.             ( I" q* a" z. d+ _' p1 f
  11.             '在指定点插入块参照并赋值给变量B
    ( b' t; `0 F$ ?( A
  12.             '三维比例(在这个例程中均设为1)和旋转角(在这个例程中设为0)都可以按需要设置% I2 i4 n4 b+ [1 ~1 Z3 I* |
  13.             '还有一个可选参数"密码"在本例程中没有设置
    ' J" R$ S3 c6 y3 k+ |+ E
  14.             Set B = .ModelSpace.InsertBlock(P, "A", 1, 1, 1, 0)
    8 `9 Z" r! c3 F8 o
  15.             
    9 H, U" R) l, U! f1 m( L* b
  16.             '用变体变量获得块参照中的属性集合
    ( A" Z' J' o: x; N/ O4 o/ ~
  17.             Attes = B.GetAttributes
    6 d, L  b2 l, A( x7 B( q
  18.             
    7 \/ n/ r1 W  N  Q+ ?$ w7 I
  19.             '用For循环分别修改块参照中三个属性的值5 a% E9 f. A5 A3 r" \% U8 A
  20.             For J = 0 To 2* M. t! D# i2 M/ D- x7 U, b
  21.             ' g; @9 a! W7 a' d1 Y& e/ D8 w
  22.                 '把属性集合中的第J个元素赋值给属性参照变量4 `/ V, i+ Q5 N" T) L. B
  23.                 '这不是必须的,这样做只是为了输入代码方便,因为在对象型变量后面输入"."时可以弹出可用的属性提示列表框,而变体变量没有提示
    0 D& U5 d4 V* }
  24.                 '就是说下面两行代码中"Att."完全可以用"Attes(J).",但这样一来它后面的属性关键字就全靠键盘输入了,不喜欢
    / p& e( v2 Y+ g
  25.                 Set Att = Attes(J)! `6 x5 u' t6 ]. a( i; H2 J
  26.                
    ) d9 b, q" e6 ?4 j) h4 \
  27.                 '由用户在命令行输入属性值字符串0 `' u& F! n0 I
  28.                 '第一个参数为True时返回的字符串可以包含空格,只能以回车键为结束。
    * I" w( q+ @: ]: }+ x$ q1 q
  29.                 '当第一个参数为False时返回的字符串不许包含空格,可以以回车键或空格结束。
    3 Q) m% C, l- @* r- f/ g% ~) }. ?$ V. n
  30.                 '第二个参数(命令提示)中使用了块属性对象的"标记"属性+ S# \3 d* Y3 S. r, E& W
  31.                 S = .Utility.GetString(True, "输入" & Att.TagString & "的值:")% Z5 [  d( Y# o& W) |' W
  32.                 + H* L, }+ j) h" Y9 B5 z
  33.                 '把用户输入的字符串赋值给块属性
    $ H8 C2 j5 ?5 C2 J- c
  34.                 Att.TextString = S
    - b' L6 d" M0 K" W" a' w
  35.             Next1 z; r' }( y& P! {
  36.         Next
    8 w) g, L$ b7 Q2 r4 x5 G& W
  37.     End With
    " S  [, C0 h4 J: r
  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 )

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