|
发表于 2012-4-4 08:29:21
|
显示全部楼层
来自: 中国辽宁
方法一:按照楼主的思路使用选择集- Private Sub cmdInsert_Click()
5 c7 \, `; U# D# ]$ V - Dim ptInsert(2) As Double, J0 x* B: ~) @" V7 e- J
- Dim lastSel As AcadSelectionSet) g7 ]" n+ D. G( P; `4 ~1 o4 R2 I( |
- Dim lastBlock As Variant
0 N3 {9 T9 i% S. \1 _ - ptInsert(0) = 0
2 [. I4 d" R, u& k - ptInsert(1) = 04 O% X0 G7 z4 ]3 b) i3 g8 T
- ptInsert(2) = 0" Y U6 t3 I# R8 B0 o
- ThisDrawing.ModelSpace.InsertBlock ptInsert, blkAName.Text, 1, 1, 1, 01 O0 t) d, U" V% @% E, O
* M/ P+ x3 e2 f; V" W4 I
8 y: x! m- a' F0 d
: T; s" i) c3 d4 U9 U( r8 s- Set lastSel = ThisDrawing.SelectionSets.Add("SSet3") '
) @3 u) B1 }7 _9 Q+ e5 C - lastSel.Select acSelectionSetLast
* r% g' l D& I# X' f. E
3 S& V4 j% ~. P7 n# S7 ]2 p! f- Dim B As AcadBlockReference '声明一个块参照变量
4 V" p3 z+ n/ Y) q2 x - Dim P As Variant '声明一个变体变量用于接收三维点坐标
& {8 G2 N0 |4 F) }# e - Set B = lastSel(0) '把选择集中的第一个(也是唯一一个)元素(最后创建的对象,即上一步在图形中插入的块参照)赋值给变量
& i+ F6 N0 M" u - P = B.InsertionPoint '提取上一步插入的块参照的插入点坐标,返回值是三元素双精度数组
$ R2 B' ~3 z9 u/ c+ T
0 P- p" v3 R' t2 U) w/ I- lastSel.Delete '删除选择集6 f, y" g$ l7 x& \. @$ k+ f4 p
- ) u8 F7 m2 ~8 A0 e. K) S, G+ a
7 Y4 l! V! b1 l- ThisDrawing.Regen acActiveViewport" ^/ L: p, x' p9 _4 o7 c
- 0 ^. Q8 S6 w0 C: ?+ \9 B8 g) x; x4 k5 |
8 n1 N) J2 |. b3 p" R3 q: {2 A- End Sub
复制代码 不过,对于本例,完全可以不用选择集,直接使用前一个对象的返回值.如方法二:- Private Sub cmdInsert_Click()
& m2 }$ c7 ?" x7 D - Dim ptInsert(2) As Double4 c* B9 C9 K# V7 \
- 'Dim lastSel As AcadSelectionSet
- V' d% b4 N3 w. P - Dim lastBlock As Variant0 v0 _' b2 \8 B+ x2 B" c' Q
- ptInsert(0) = 0
- B7 ^1 D' N# M1 Q9 u2 ^ - ptInsert(1) = 0- A6 [" o8 \- q# t. |3 V
- ptInsert(2) = 0
$ l9 e# |) G; `( Y
/ l, p5 h) s9 b( n3 A# j
2 [8 V1 n0 o( a6 E; ~- ) [- m# u* g0 ^# m6 k
- 'Set lastSel = ThisDrawing.SelectionSets.Add("SSet3") '
0 b; b4 t( t% \. j - 'lastSel.Select acSelectionSetLast3 X/ `$ j2 H. |+ h: P* |* m" Q
- + W7 D/ D# ^! a
- Dim B As AcadBlockReference '声明一个块参照变量
4 q9 O7 {+ Q3 t O - Dim P As Variant '声明一个变体变量用于接收三维点坐标" ? r+ H$ c$ \- i8 W
- Set B = ThisDrawing.ModelSpace.InsertBlock(ptInsert, blkAName.Text, 1, 1, 1, 0)# Y5 X1 L5 m" T4 s$ p: N
- P = B.InsertionPoint '提取上一步插入的块参照的插入点坐标,返回值是三元素双精度数组6 Q. Z* S0 f4 ~9 e- D8 G0 b
/ Q! u* y' ?4 [: `( e- 'lastSel.Delete '删除选择集. T1 z7 Z8 J) S
$ o3 [ d) [ n2 O+ H& p0 W
" b; c3 A4 b" ] b, d1 y4 A- ThisDrawing.Regen acActiveViewport H5 K# [/ E4 s! k" R
- 7 ]9 a( T5 ?4 H {
, ~3 r' R2 ]5 c- End Sub
复制代码 |
评分
-
查看全部评分
|