|
|
发表于 2012-4-4 08:29:21
|
显示全部楼层
来自: 中国辽宁
方法一:按照楼主的思路使用选择集- Private Sub cmdInsert_Click() s% G! [. R. f
- Dim ptInsert(2) As Double
& z/ r7 K2 Y( m' p% ~7 \# e8 D - Dim lastSel As AcadSelectionSet
! B- E* y4 y1 \7 T: p. s' c - Dim lastBlock As Variant% }$ c. d3 w$ W8 t, O
- ptInsert(0) = 0
3 T' {" `' S. _! _& I- ?0 \% r - ptInsert(1) = 08 D$ y& l( X' z4 D+ F+ N
- ptInsert(2) = 0
5 I6 g$ }7 l5 ` - ThisDrawing.ModelSpace.InsertBlock ptInsert, blkAName.Text, 1, 1, 1, 0
1 N9 e9 e& p2 G7 u$ y2 m - - l+ z( ]1 H+ k: d
- 3 u% h; y3 I- K! d+ x
, j/ R7 S' W6 S3 _( \- Set lastSel = ThisDrawing.SelectionSets.Add("SSet3") '
5 ~7 B3 u) ~- g+ [+ Q% e - lastSel.Select acSelectionSetLast7 w5 |) ^7 N$ M. R
- y& A: i7 @( s& t- Dim B As AcadBlockReference '声明一个块参照变量2 f2 g) N' r: K) b9 d
- Dim P As Variant '声明一个变体变量用于接收三维点坐标
~& T: P- I. H- E% D1 r, o - Set B = lastSel(0) '把选择集中的第一个(也是唯一一个)元素(最后创建的对象,即上一步在图形中插入的块参照)赋值给变量
2 h8 N* v @2 ~% F& F - P = B.InsertionPoint '提取上一步插入的块参照的插入点坐标,返回值是三元素双精度数组4 ?2 R$ k! z: |9 b
8 L, S2 Y9 `0 F- lastSel.Delete '删除选择集
) J4 Z9 D! E( Y& ^. r* h - 7 T0 A1 ?6 Y$ z/ q
; V, t. O, K1 c( c% ?1 Y6 x- ThisDrawing.Regen acActiveViewport
( l, h7 Y- U+ B! E' v2 p - + H g% y/ X+ u4 y6 Z8 [ o/ F
- : g$ ]" ?4 i" p! B( r) r
- End Sub
复制代码 不过,对于本例,完全可以不用选择集,直接使用前一个对象的返回值.如方法二:- Private Sub cmdInsert_Click()
5 v, ?' L- f! O9 z: m5 w - Dim ptInsert(2) As Double* y, r7 \% X: r, N5 ]
- 'Dim lastSel As AcadSelectionSet
6 x1 N' U6 m3 i& m - Dim lastBlock As Variant) I6 y/ L+ w7 V& F8 ?0 t/ w
- ptInsert(0) = 0. a3 k+ G9 w, x3 T. \3 z
- ptInsert(1) = 0. S/ y$ |+ P- `8 l. M" |
- ptInsert(2) = 0
* P O$ v3 y. t1 }9 [
5 N2 u+ M- h d8 Z9 y- ; N: k3 C: B. w# i# ] D. }3 R1 I- ^- p
: ] N7 u2 ]) y p" i8 t- ~9 T- 'Set lastSel = ThisDrawing.SelectionSets.Add("SSet3") '
! ]$ E' i. }" a# O$ y- {$ Z - 'lastSel.Select acSelectionSetLast
& }! D, m# B _' F
* A: w) b$ l( c; b; k( T- Dim B As AcadBlockReference '声明一个块参照变量
2 }, \7 `! V" B* s% T - Dim P As Variant '声明一个变体变量用于接收三维点坐标
7 ?+ B. Z2 [9 k |. C - Set B = ThisDrawing.ModelSpace.InsertBlock(ptInsert, blkAName.Text, 1, 1, 1, 0)
) v) S! x: t# [0 n2 Z - P = B.InsertionPoint '提取上一步插入的块参照的插入点坐标,返回值是三元素双精度数组
; [" i7 [( J. |) n c
' h" k, i; ~# I5 b/ W- 'lastSel.Delete '删除选择集
; H: {4 _2 e; X( N6 |/ s - 0 W2 A1 D3 l( z# h" l: i8 R( }
- / J/ X6 e3 P; {6 c: n
- ThisDrawing.Regen acActiveViewport: J/ e8 L0 b# u3 V" X
- 9 v) h0 `: i& N& u
- b# B' G/ m; C6 ?! F% \
- End Sub
复制代码 |
评分
-
查看全部评分
|