|
发表于 2012-4-4 08:29:21
|
显示全部楼层
来自: 中国辽宁
方法一:按照楼主的思路使用选择集- Private Sub cmdInsert_Click()! H( F0 N7 E! f1 ~6 w6 {) {1 p
- Dim ptInsert(2) As Double' S" \ D& p. F. y" V
- Dim lastSel As AcadSelectionSet g. @" O7 ]$ J" m3 V2 ], T2 o2 p
- Dim lastBlock As Variant
! w' }, K5 e$ g" |: N; N - ptInsert(0) = 0: f) R7 {3 B2 U/ q B9 ^8 {
- ptInsert(1) = 0
/ T B7 }& ~, S# I# v6 Q - ptInsert(2) = 0
1 O6 m }( s4 Y) J; r7 n2 O - ThisDrawing.ModelSpace.InsertBlock ptInsert, blkAName.Text, 1, 1, 1, 07 k8 M) l; F2 m" O
- 7 Z; T6 u, D5 J0 @/ z8 D
) m. u/ q% Y! g; X
" \" g4 C# {9 ?- Set lastSel = ThisDrawing.SelectionSets.Add("SSet3") '
7 e" H8 u9 O' \* ]; v - lastSel.Select acSelectionSetLast3 c6 t; k. ^8 o* W) E4 q
- v3 Q A8 v! B4 g4 r* C
- Dim B As AcadBlockReference '声明一个块参照变量6 m( H$ P0 ]5 C' W
- Dim P As Variant '声明一个变体变量用于接收三维点坐标: C3 u9 K# f$ | ~1 F# A
- Set B = lastSel(0) '把选择集中的第一个(也是唯一一个)元素(最后创建的对象,即上一步在图形中插入的块参照)赋值给变量
% m2 [" p6 {$ y0 W4 _ - P = B.InsertionPoint '提取上一步插入的块参照的插入点坐标,返回值是三元素双精度数组
/ }3 x( I+ G% m6 U; A
, q0 I3 k3 D3 G) m5 i- lastSel.Delete '删除选择集: a1 e/ \. N* u; \
/ I! ^( Y1 @7 R7 q- , [6 e; Z3 s6 q: f; s4 N
- ThisDrawing.Regen acActiveViewport
/ x ]7 Z: G+ Y. l2 o( r' F% [. ^4 D8 l - " z1 o+ r5 E7 |/ r
- 9 E+ U- W( l& A9 g
- End Sub
复制代码 不过,对于本例,完全可以不用选择集,直接使用前一个对象的返回值.如方法二:- Private Sub cmdInsert_Click()
3 j6 x* c8 [6 Q* W$ o9 ~4 t8 { - Dim ptInsert(2) As Double
" `+ \) h+ q: D4 O: E% d+ { - 'Dim lastSel As AcadSelectionSet! w x8 P- O* C" Q! K
- Dim lastBlock As Variant
3 k) R1 B0 }) k% a9 G, W' b+ W - ptInsert(0) = 09 `1 o4 K* s1 H3 m1 u8 ~
- ptInsert(1) = 0
6 H* e) X+ I5 _7 D3 y - ptInsert(2) = 0
8 t8 S- m# L3 ?% a( Y! G- Q8 K" f* e
: U$ ?) W/ [' P W O( q+ s- % m# N8 P1 ^3 X. v5 e* Z3 E8 P
- * B5 k" U# u, D9 d2 d
- 'Set lastSel = ThisDrawing.SelectionSets.Add("SSet3") '
- _+ D* A, `* N3 l! ]. C4 W. R - 'lastSel.Select acSelectionSetLast8 |) A2 X' o2 x& d) G8 ~, M: f, X
# C& j- @8 R$ U5 s/ o" k; O; p- Dim B As AcadBlockReference '声明一个块参照变量 U0 d/ r5 L1 t4 U8 v1 q
- Dim P As Variant '声明一个变体变量用于接收三维点坐标
3 |/ i7 s! V7 T1 I2 s - Set B = ThisDrawing.ModelSpace.InsertBlock(ptInsert, blkAName.Text, 1, 1, 1, 0)" O2 }) a$ D& M( B( ?& c) b
- P = B.InsertionPoint '提取上一步插入的块参照的插入点坐标,返回值是三元素双精度数组
" b" ~$ m0 F/ f# F
- K1 n7 V" x4 P& ]* _7 k- 'lastSel.Delete '删除选择集' q7 j- B/ k0 j' b$ P
- - M9 l* ?1 |( J1 J9 D
( ? @% A' N8 u) s2 ~# {- ThisDrawing.Regen acActiveViewport
& l: _6 w* Z, E* F$ h6 k4 {
9 y. p9 B x# P. t$ ?
9 s$ o# g- x) r- End Sub
复制代码 |
评分
-
查看全部评分
|