|
楼主 |
发表于 2012-4-4 09:33:50
|
显示全部楼层
本帖最后由 woaishuijia 于 2012-4-4 11:17 编辑 9 Q: F/ p' N! S$ F/ K( w, `4 ^. t
5 r# K9 Z z8 h# h: J6 I* y首先感谢斑斑大人一大早的悉心解答,你说的第二个思路很好,不用选择集,直接使用块的insertPoint属性获取插入点坐标。我又学到了一招,呵呵。我修改了一下代码,现在可以按照坐标计算后来取得blockB的插入坐标,但是存在一个问题,换算后的坐标实际上和blockA的左上顶点坐标有出入(y方向出入0.72,虽然很小,但是显得不够严谨),因为我是用下面这个坐标换算得出的blockB插入点的:
I f* D, k. n# u e- pNew(0) = P(0) - 500$ M, X9 A$ o. d# }& S
- pNew(1) = P(1) + 1405.8
- K/ s& r, r8 Z - pNew(2) = P(2)
复制代码
" t% b M. W6 q% [我知道出现问题的原因可能是精度问题,所以再请问斑斑大人,可不可以让程序实现在插入blockB的时候,系统通过捕捉blockA左上角顶点来实现呢?
: f) J& h' W5 N) q就是Set B = ThisDrawing.ModelSpace.InsertBlock(pNew, blkBName.Text, 1, 1, 1, 0)这一句中,pNEW如果能是系统通过顶点捕捉后自动产生的坐标数据,而不要是我通过换算后的坐标。/ c& J' s! p5 F& X( ]
谢谢版主
* ?9 p e; s% ]5 B4 R8 B5 g! g" X: J$ e* K+ B
. E7 W- k9 o! V) J: a' {- Private Sub cmdInsert_Click()4 a) P1 K6 Y8 P6 V2 I
- Dim ptInsert(2) As Double/ Q) i: Z6 l$ ~# U, T
- Dim lastBlock As Variant, g& ^6 T( Y3 m+ U4 j
- ptInsert(0) = 0) L+ \& V9 v5 I" x
- ptInsert(1) = 0
* p- G) k# n. z% B; S8 @- K - ptInsert(2) = 0
* d( T4 |- Q" S) E6 i5 C - / f& ?2 e: o( w x
- '----------插入块A 仅仅一个---------------------------------& H }9 `, K' g7 ]3 k
- Dim B As AcadBlockReference '声明一个块参照变量
) Y. S4 B5 c' W, D2 X - Dim P As Variant '声明一个变体变量用于接收三维点坐标
7 U& P8 M( A& O3 [5 w - Set B = ThisDrawing.ModelSpace.InsertBlock(ptInsert, blkAName.Text, 1, 1, 1, 0)3 @. m& N" E: h
- P = B.InsertionPoint '提取上一步插入的块参照的插入点坐标,返回值是三元素双精度数组' f& _8 {+ q8 l" `7 t
- '----------插入块A 完成---------------------------------
) W& ^7 b4 Q0 L& k
% s% @# W( ]& h- '----------插入块B---------------------------------
9 _2 d6 r! }: N( w! e - '第一个块,需要单独插入
, W ?8 f0 i' I+ b) K - Dim pNew(2) As Double* M4 L9 t8 f1 ~0 L
- pNew(0) = P(0) - 500; ^' s- b+ o8 q) \6 [% E
- pNew(1) = P(1) + 1405.8$ c5 \ w- m" C3 I/ Q
- pNew(2) = P(2)
( {9 J, F( s. g- M9 I* ?! @ - Set B = ThisDrawing.ModelSpace.InsertBlock(pNew, blkBName.Text, 1, 1, 1, 0)2 N) B0 A' w0 O- l
- P = B.InsertionPoint '提取上一步插入的块参照的插入点坐标,返回值是三元素双精度数组
/ p* [4 q8 Z9 L/ \ - ThisDrawing.Regen acActiveViewport
[ M' O# X7 g/ k! k1 a5 P9 J' T - End Sub
复制代码 |
|