|
|

楼主 |
发表于 2009-4-11 12:19:44
|
显示全部楼层
来自: 中国北京
多谢版主详尽的指导和提供的学习资料,受益颇多。
/ e, O- c2 Y1 B这些天总是想在版主49楼的方法中再完善一下,可总不能实现,无奈再次请教:
9 t3 `- ^2 M7 i- O- V3 k问题见下面程序中括号内的标注: P+ `, ^0 m: B# b6 N, V# ]; z/ q
------------------------------------------------------------------------------------------------------------------------3 q3 p" }% d7 s( [6 U
ACAD的VBA并没有提供“孤岛检测”的方法,不过可以照下面的调用图形界面的“边界”命令实现它。
2 M: n0 |7 H, b' ?8 |, M ]: z& ODim I As Integer, SS As AcadSelectionSet, FT(0) As Integer, FD(0) As Variant, P As Variant, LP As AcadLWPolyline
_, C( A$ j) O# ^& `! p- E With ThisDrawing' M, M1 c7 \! p8 o7 r! [7 }
On Error Resume Next
2 V i- t, {: ]/ |0 X2 ~# E. d4 M Set SS = .SelectionSets.Add("SS" )
8 E! J3 H/ N/ Q* { X5 D* E FD(0) = "lwpolyline"4 U5 e! I* r8 c$ N% ^: A; Q g
Do& c1 r. M/ [+ M) @0 y
P = .Utility.GetPoint(, vbCrLf & "拾取内部点:")
0 F, E- X9 q( m& t' S If Err Then Exit Do( h5 R8 z: J1 Z! q- k
.SendCommand "-boundary " & P(0) & "," & P(1) & " "8 b- Q" |* O U; W7 }
SS.Select acSelectionSetLast, , , FT, FD
9 {7 o, ~8 x% L If SS.Count = I Then
) u. Z# {. J( \3 l, v .SendCommand "n "
* f6 S6 d$ T3 {; T7 l Exit Do
6 M- M6 ]+ [: ~; g' z, [( k7 c0 a Else
- B1 Q" e+ ?! L, s8 H. q0 A SS.Item(I).Highlight (True) '选择集的最后一个元素即新创建的多段线用高亮显示
) D a9 M3 V" F3 Q8 {5 F# X (请问在此处能实现将点击的图形,填充图案或填充底色的语句)3 G' k$ E; D7 b
I = I + 1
3 p. J: O# y- f7 _, e2 Q End If
6 E a! `* }: T; M Loop, a$ \8 ~; m, ~) G8 e5 |. R
L' f& o& i& x) j4 J[ 本帖最后由 koutx 于 2009-4-11 14:10 编辑 ] |
|