QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
有知道cad中vba调用块怎么编程,3 |) k" o+ P; ~' [4 ]& X1 Q* T8 M
例如 我定义好一个块a  并且a中有3个属性,现在我要调用这个块300次,并且每次块中的属性需要修改,不知道怎么编程。有vba的高手指点下哈!
发表于 2008-11-10 12:37:15 | 显示全部楼层 来自: 中国辽宁营口
  1. Sub IB()
    ' }# a" U$ A3 M% T6 L
  2.     Dim I As Integer, J As Integer, B As AcadBlockReference, Attes As Variant, Att As AcadAttributeReference, P As Variant, S As String
    * j% w" B7 S4 c+ K) K) X
  3.     With ThisDrawing7 D/ s1 c4 h+ {* {! r. `5 q7 H1 H
  4.    
    ' g$ Q2 J) N5 Q6 e# W
  5.         '用For循环插入块参照300次2 w3 N+ K" M" @; z4 s) @! `0 _
  6.         For I = 0 To 299  @4 a# B  h& G: ~: f- [
  7.         % t" E6 ?7 Q  g3 f
  8.              '在屏幕上指定点,也可以用其它方法指定点
    7 e" P; d( h/ G
  9.             P = .Utility.GetPoint(, "指定插入点:")
    7 k7 H+ ~4 P6 ~5 F
  10.             
    1 H  w! d( Y/ T8 o
  11.             '在指定点插入块参照并赋值给变量B
    0 u4 [- r8 g+ l4 g4 t
  12.             '三维比例(在这个例程中均设为1)和旋转角(在这个例程中设为0)都可以按需要设置; \# B3 g- T# Y- p2 |& q; m
  13.             '还有一个可选参数"密码"在本例程中没有设置6 g' l1 C9 N5 Q1 i+ j" h, Z; X
  14.             Set B = .ModelSpace.InsertBlock(P, "A", 1, 1, 1, 0)
    + P3 s. ^' p$ M
  15.             
    . A5 L8 o$ Z' \, V3 N- s1 z& f
  16.             '用变体变量获得块参照中的属性集合+ o4 C$ K4 I! K9 ?9 B9 o$ j
  17.             Attes = B.GetAttributes) l7 m* l7 E/ B, i' T( q+ Z: W
  18.             
    / H, x# N, `, |4 z& v, X3 I
  19.             '用For循环分别修改块参照中三个属性的值0 R  s. H' t0 `4 e
  20.             For J = 0 To 2
    / F6 f$ G# i3 u+ ?  h& B; L
  21.             
    + g7 ^" w' A9 a6 |2 t- z0 `
  22.                 '把属性集合中的第J个元素赋值给属性参照变量
    , D: \- B5 l7 p! v, |* u2 m1 w9 s
  23.                 '这不是必须的,这样做只是为了输入代码方便,因为在对象型变量后面输入"."时可以弹出可用的属性提示列表框,而变体变量没有提示) d1 |+ j5 W# D7 R" m9 _; e
  24.                 '就是说下面两行代码中"Att."完全可以用"Attes(J).",但这样一来它后面的属性关键字就全靠键盘输入了,不喜欢
    1 x3 U  K2 z& x3 G6 c+ ~1 r5 R$ @
  25.                 Set Att = Attes(J)$ m2 `% Q5 Q0 I4 ]1 A4 l3 p1 Q
  26.                 " H5 Y. U' v; _; Q/ @
  27.                 '由用户在命令行输入属性值字符串
    6 `" f8 \4 a: q! _% @& i1 [
  28.                 '第一个参数为True时返回的字符串可以包含空格,只能以回车键为结束。
    ; |$ p2 T' A& t  x% [" J
  29.                 '当第一个参数为False时返回的字符串不许包含空格,可以以回车键或空格结束。1 I2 [6 E. [" ~  E( M9 K1 r
  30.                 '第二个参数(命令提示)中使用了块属性对象的"标记"属性
      ^1 p; I( V+ Q$ n2 L3 ~+ A
  31.                 S = .Utility.GetString(True, "输入" & Att.TagString & "的值:")( u  i( J5 X) l& b
  32.                
    " s) h1 k+ p* X& I
  33.                 '把用户输入的字符串赋值给块属性
    * M6 Q4 P/ r, ?  y! f
  34.                 Att.TextString = S
    * ~/ H) b' c/ w) F5 D# H4 j' N# m
  35.             Next
    4 N0 G, r" d5 L* v* `- S1 e
  36.         Next
    , F' n1 I$ k  N% Z; N* @; E4 k. `
  37.     End With
    - L- ]3 A+ l. ?4 ~( {  T
  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 )

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