|
发表于 2012-4-4 08:29:21
|
显示全部楼层
来自: 中国辽宁
方法一:按照楼主的思路使用选择集- Private Sub cmdInsert_Click()
* V8 M# u- l" e1 E - Dim ptInsert(2) As Double) ^: Q" d/ p+ M9 X5 o7 @
- Dim lastSel As AcadSelectionSet
: ~# t: ^! L m2 e q" }; j - Dim lastBlock As Variant- D# B3 [. n) Y0 J a. _
- ptInsert(0) = 0! c' I) r7 }6 g" L8 f
- ptInsert(1) = 07 N5 g- o7 l6 h+ {' p* B$ Y
- ptInsert(2) = 08 y8 r! N% @5 J* [( d7 e& h: F5 G
- ThisDrawing.ModelSpace.InsertBlock ptInsert, blkAName.Text, 1, 1, 1, 0
. M" `8 z/ }7 F+ ` [: u$ x6 B - ! l% p0 t9 |+ l$ G" Y# V) B- t
- 5 ^7 t3 n/ Q' g, b7 B3 v6 N# C
- , R* y- ~5 v: Z; z# R) e
- Set lastSel = ThisDrawing.SelectionSets.Add("SSet3") '7 x: m0 \( q9 n" J/ V; L6 I+ n
- lastSel.Select acSelectionSetLast2 l n$ H# G2 x$ Y
- 1 r' k$ @$ p, @/ P2 J; @
- Dim B As AcadBlockReference '声明一个块参照变量4 V9 R; f; s: D5 [% e) Y/ q* s$ ~
- Dim P As Variant '声明一个变体变量用于接收三维点坐标1 i/ \% f/ {9 ?7 Z9 V
- Set B = lastSel(0) '把选择集中的第一个(也是唯一一个)元素(最后创建的对象,即上一步在图形中插入的块参照)赋值给变量! g0 q) ?( l' E( L8 o& L3 y5 f! O
- P = B.InsertionPoint '提取上一步插入的块参照的插入点坐标,返回值是三元素双精度数组' V, Z* k* j) S; K& c6 V' d
! O0 x0 N9 P; h2 L! ^% F$ q- lastSel.Delete '删除选择集" u C) F4 [; D
- 4 y9 R* w2 W. ^5 l4 o
" b: M1 \+ L. h2 |7 a+ H2 t- ThisDrawing.Regen acActiveViewport
# i2 T; S& D5 Q. [/ ~( g: r
! s4 i" G* d9 y. O# w- , g8 h; k5 t3 m* _, l9 W
- End Sub
复制代码 不过,对于本例,完全可以不用选择集,直接使用前一个对象的返回值.如方法二:- Private Sub cmdInsert_Click()4 M$ [, V- N7 A7 T
- Dim ptInsert(2) As Double
: m' n6 }4 f) Y - 'Dim lastSel As AcadSelectionSet$ M# S4 l4 F, B/ z
- Dim lastBlock As Variant
: y4 ~. h7 {6 g( c) p# h& ~" L7 A/ K - ptInsert(0) = 0
- i) R+ S9 `5 G3 ]7 L, D - ptInsert(1) = 07 o, ^- J% L# G
- ptInsert(2) = 0- p4 } u& a$ U; ?0 a
- 6 H& F" T1 C3 n% k9 J6 z3 ~) B
- 0 T+ m. s7 m- I9 m9 ^0 o- s7 J5 r
- * v( N7 q' o& ^/ |3 W
- 'Set lastSel = ThisDrawing.SelectionSets.Add("SSet3") ' `8 A1 q" x* A; s. }1 J; V
- 'lastSel.Select acSelectionSetLast
; U4 S, s w# M% k5 O - * f; F1 O! k9 S5 A* y
- Dim B As AcadBlockReference '声明一个块参照变量
9 t2 a9 Y9 `/ k! w. ] - Dim P As Variant '声明一个变体变量用于接收三维点坐标
6 u4 K& J0 m) t2 g, H" m5 ^; R - Set B = ThisDrawing.ModelSpace.InsertBlock(ptInsert, blkAName.Text, 1, 1, 1, 0)% Q8 S# Z4 [" `$ a; O
- P = B.InsertionPoint '提取上一步插入的块参照的插入点坐标,返回值是三元素双精度数组 k5 W N# S* p- m8 R! x- u
- % U$ U/ P! G; w# p6 X
- 'lastSel.Delete '删除选择集
( j( F8 ~8 e) X3 k8 C; v1 K
1 f) |& U9 \ r4 ~/ M5 m- 7 S) ]* E, F/ D) d$ M5 I5 Z" |* }- O( k
- ThisDrawing.Regen acActiveViewport. ^9 ^& U+ L: A" k, I
, ]6 o1 }4 u. H9 n8 i- + P+ [& p. W8 a" c. Q
- End Sub
复制代码 |
评分
-
查看全部评分
|