|
发表于 2012-4-4 08:29:21
|
显示全部楼层
方法一:按照楼主的思路使用选择集- Private Sub cmdInsert_Click(). L2 H9 }: W5 p$ L3 K) F& q
- Dim ptInsert(2) As Double
' \" s5 I: ?, ^4 A6 c9 ^: E - Dim lastSel As AcadSelectionSet+ n1 H; j3 N( R, @. w8 [3 f1 N
- Dim lastBlock As Variant
! z8 i. R/ S' G7 d( n - ptInsert(0) = 0
; i a* [$ [/ N* h" v& {' P. d - ptInsert(1) = 0
" d0 q! }. S" P% r1 |! p - ptInsert(2) = 0/ { B' s- Y; R! N
- ThisDrawing.ModelSpace.InsertBlock ptInsert, blkAName.Text, 1, 1, 1, 0
8 Z$ X% [' n' \
, N: ]/ r! n1 F" e. G/ F+ `/ f8 a- ' p+ V: C2 Y! c1 x! K- o
$ O" a8 k0 l* ^6 f+ Z. B+ b- Set lastSel = ThisDrawing.SelectionSets.Add("SSet3") '' O# [' G/ g: w2 x, p/ `6 q& |4 b
- lastSel.Select acSelectionSetLast) N5 \8 I% C2 K1 Z. W/ M
$ {9 L, s) [2 r$ W- c- Dim B As AcadBlockReference '声明一个块参照变量& o# Q* [! E5 Z5 Q0 |% }4 c
- Dim P As Variant '声明一个变体变量用于接收三维点坐标
, M5 p: D7 U# `1 ~ - Set B = lastSel(0) '把选择集中的第一个(也是唯一一个)元素(最后创建的对象,即上一步在图形中插入的块参照)赋值给变量% B6 |- H( u! [+ A' r+ o( S
- P = B.InsertionPoint '提取上一步插入的块参照的插入点坐标,返回值是三元素双精度数组/ G, c, o. Q+ n4 }
- . X/ A: h+ I. l/ G5 V! v/ ?9 H; n
- lastSel.Delete '删除选择集
4 p8 c# f9 [0 g# }! q, S3 b( t
]0 T. i) _1 d$ O# `
. |6 Z3 \7 e5 _: Z- ThisDrawing.Regen acActiveViewport$ l) o# n3 C+ s! V
* N, C% r, U9 }- b: M q
, B1 `6 k5 _" b+ ^; `) b* R3 F- End Sub
复制代码 不过,对于本例,完全可以不用选择集,直接使用前一个对象的返回值.如方法二:- Private Sub cmdInsert_Click()9 D# N0 t s7 W2 f [. q- Y+ _
- Dim ptInsert(2) As Double) \; N/ `( S* a" ?
- 'Dim lastSel As AcadSelectionSet
' u& T6 i; m: E( U$ i& P - Dim lastBlock As Variant
& T: t' z7 x C7 F2 V% N - ptInsert(0) = 02 p$ c1 d& y( }) G2 d$ K4 T8 Y. K
- ptInsert(1) = 0
, n- `* Z/ F2 V; f# F - ptInsert(2) = 0
$ ^% t: F; R2 ?/ p6 K - 2 c. E: k2 [8 @0 |' W! @3 Y
- 8 y0 c, e$ w6 ^: w" u
0 G5 q& K+ s' i: C# R- 'Set lastSel = ThisDrawing.SelectionSets.Add("SSet3") '
. z$ G5 k- w4 k( M - 'lastSel.Select acSelectionSetLast
1 c- E5 I' H: K9 F# W+ ?
9 f9 m) f4 z9 N2 c/ v- Dim B As AcadBlockReference '声明一个块参照变量
' Q" x! I# Q0 m N - Dim P As Variant '声明一个变体变量用于接收三维点坐标. g. q& @( ~+ }; w' P
- Set B = ThisDrawing.ModelSpace.InsertBlock(ptInsert, blkAName.Text, 1, 1, 1, 0)
# T! Z4 M6 Y5 G3 t - P = B.InsertionPoint '提取上一步插入的块参照的插入点坐标,返回值是三元素双精度数组+ j- Y4 j4 p( [, v+ q
- : A2 f f' s1 p" y
- 'lastSel.Delete '删除选择集0 j5 ]* I- t0 J: D* u" V* F2 I
- * y( `2 y' B g s$ V4 U3 A: X
- " j/ J6 A- \# u4 G$ H: K) e
- ThisDrawing.Regen acActiveViewport0 {1 y8 x2 j; k% Q2 D* a ?* z
- " r m+ a- _" P+ w
- y- ], H* f1 j O$ U- End Sub
复制代码 |
评分
-
查看全部评分
|