|
|

楼主 |
发表于 2009-4-11 12:19:44
|
显示全部楼层
来自: 中国北京
多谢版主详尽的指导和提供的学习资料,受益颇多。+ p4 D, [8 C% L+ k( S" R
这些天总是想在版主49楼的方法中再完善一下,可总不能实现,无奈再次请教:
- W# `, B/ t2 V& c5 t3 t问题见下面程序中括号内的标注:# u0 @$ \) g. Z1 n
------------------------------------------------------------------------------------------------------------------------
% ]6 }1 Q" G: `# D8 j5 QACAD的VBA并没有提供“孤岛检测”的方法,不过可以照下面的调用图形界面的“边界”命令实现它。+ T8 V; m% R: b' H: D5 p% H9 a4 t3 P
Dim I As Integer, SS As AcadSelectionSet, FT(0) As Integer, FD(0) As Variant, P As Variant, LP As AcadLWPolyline- k s8 W0 x9 Z! i9 ]1 m
With ThisDrawing- o0 V( j0 C) y' K3 N
On Error Resume Next
( a$ A5 q: c* m- C% n6 m1 V) p Set SS = .SelectionSets.Add("SS" )3 t: x7 Y0 x% {" e) L) x: S* f2 z
FD(0) = "lwpolyline"2 ]7 a: r( c7 a Z0 ~+ p5 X, T
Do
7 v; q9 a0 Q' I1 W- H/ x H P = .Utility.GetPoint(, vbCrLf & "拾取内部点:")+ x( Q* U) e6 E8 l X! f
If Err Then Exit Do
' |8 F! P3 A7 p .SendCommand "-boundary " & P(0) & "," & P(1) & " "
+ ?0 W8 Z# K; x; N& w6 n2 W3 s SS.Select acSelectionSetLast, , , FT, FD
* x, a: t5 k' F# m- t If SS.Count = I Then4 u' \" b" ]' I" q" Z8 l/ i
.SendCommand "n "4 H) O7 R& F3 K1 C3 D1 y
Exit Do) U; M( X3 z! a
Else$ M& z0 V; y z) @
SS.Item(I).Highlight (True) '选择集的最后一个元素即新创建的多段线用高亮显示* s! i$ n( T$ |# y- ^
(请问在此处能实现将点击的图形,填充图案或填充底色的语句)
4 I G! a1 ]1 S/ L7 n; | n I = I + 15 x% a0 F, Q, j- n$ e+ N. Z
End If* |6 q( i& d" _* Y. v
Loop
) {9 G% \; q2 h! p" I% H; S" G# `) L k, @6 d& s0 H; `, T
[ 本帖最后由 koutx 于 2009-4-11 14:10 编辑 ] |
|