|
|
发表于 2012-4-4 08:29:21
|
显示全部楼层
来自: 中国辽宁
方法一:按照楼主的思路使用选择集- Private Sub cmdInsert_Click()
w# {: d; H* X! E& P6 v - Dim ptInsert(2) As Double
/ E5 c( j2 o0 p* t" u7 @0 L0 q) |* f - Dim lastSel As AcadSelectionSet
8 N% Q! Q5 b4 w, h - Dim lastBlock As Variant. ~7 I0 x/ d; @! t5 J0 |4 A8 ~/ |
- ptInsert(0) = 04 v# {. ^0 i: M) q" l) a) N' \) z
- ptInsert(1) = 0& @( q( d0 P) `7 _
- ptInsert(2) = 05 L0 D7 K4 w2 U ]% h% g, A
- ThisDrawing.ModelSpace.InsertBlock ptInsert, blkAName.Text, 1, 1, 1, 0, m2 J; m. j" |- V& h" {
3 V3 u" ?" j) C! A+ j- ; y8 v3 r3 O, z6 J- V* t( x2 `1 B
0 ^' t* W; J1 E Z- Set lastSel = ThisDrawing.SelectionSets.Add("SSet3") '- u- |( c s6 ?3 ^
- lastSel.Select acSelectionSetLast
; l& b6 B9 @/ ^* |2 @6 J U5 H - 3 J8 _) ]$ L5 l0 T& G
- Dim B As AcadBlockReference '声明一个块参照变量/ C" g0 b- x' e a) }0 g; \
- Dim P As Variant '声明一个变体变量用于接收三维点坐标# \4 L0 y V0 D3 n: d+ t
- Set B = lastSel(0) '把选择集中的第一个(也是唯一一个)元素(最后创建的对象,即上一步在图形中插入的块参照)赋值给变量
( k0 k2 R) N8 W' b! \ - P = B.InsertionPoint '提取上一步插入的块参照的插入点坐标,返回值是三元素双精度数组
7 B0 E* _ j: p1 \: K, h: L9 Q - 5 E' o. X# y: ]3 H7 ?: v
- lastSel.Delete '删除选择集3 r7 V; P8 A; h5 ~5 C
5 T: B( z- n$ e" h% N4 Z% v
7 F; e3 v8 Z% E# [% y- ThisDrawing.Regen acActiveViewport( ^ \1 i: ~: i& c4 `
& d9 r* n2 q' u, _6 X6 {- ; p( P$ S8 s; [$ B9 P& u
- End Sub
复制代码 不过,对于本例,完全可以不用选择集,直接使用前一个对象的返回值.如方法二:- Private Sub cmdInsert_Click()
* u8 u! ^8 I5 W% b4 A, k - Dim ptInsert(2) As Double+ ^+ O; y$ t5 V& I
- 'Dim lastSel As AcadSelectionSet
" u. f' W h# o! Y - Dim lastBlock As Variant
: r6 F* u5 w" n7 k - ptInsert(0) = 0, K; j+ t s% n
- ptInsert(1) = 0
: W4 `& w" c! g0 }% n - ptInsert(2) = 0# F4 J4 t" g6 Y S8 \
- & }5 E: Z, |3 R) C# a
- 5 @" O3 Y& y: t
, L2 l2 q7 L/ Y9 o# K: f2 M4 C- 'Set lastSel = ThisDrawing.SelectionSets.Add("SSet3") '1 H6 n# Q* z* L" z: ^- z
- 'lastSel.Select acSelectionSetLast6 l! T5 c E3 g/ |% c
2 Y6 e9 q5 k2 G, L- U- Dim B As AcadBlockReference '声明一个块参照变量
+ s3 S' I% ?7 [. P" c7 i! D - Dim P As Variant '声明一个变体变量用于接收三维点坐标
W( r7 V: b" A% O* V, M - Set B = ThisDrawing.ModelSpace.InsertBlock(ptInsert, blkAName.Text, 1, 1, 1, 0)
' ~+ r g5 s" W) B- y4 p - P = B.InsertionPoint '提取上一步插入的块参照的插入点坐标,返回值是三元素双精度数组' `3 T: t! h( N( I
- ' o) m Z3 W/ w0 a7 @0 Z1 u! O/ g
- 'lastSel.Delete '删除选择集
' [ u) q" F8 w! T' c" F; W - / l7 q* ~7 I" ]' ? I" z
9 m" T; V$ k0 e9 a& u. \1 m- ThisDrawing.Regen acActiveViewport I' J4 l7 E' H% I/ v; z# W
- 7 _: G; s+ [3 J1 ~" V1 q" Y
- # @9 N. y; C" |! R- L( v
- End Sub
复制代码 |
评分
-
查看全部评分
|