|
|

楼主 |
发表于 2009-4-11 12:19:44
|
显示全部楼层
来自: 中国北京
多谢版主详尽的指导和提供的学习资料,受益颇多。
1 _* c; E0 @; N这些天总是想在版主49楼的方法中再完善一下,可总不能实现,无奈再次请教:' T0 v8 f* G* V$ N8 I0 `/ {4 ]0 r: Y
问题见下面程序中括号内的标注:/ r9 c q! U" g; ?3 d# M I
------------------------------------------------------------------------------------------------------------------------5 S1 [- b K: c4 w' ]' u9 Z; L
ACAD的VBA并没有提供“孤岛检测”的方法,不过可以照下面的调用图形界面的“边界”命令实现它。; x0 i0 A% A+ i& {* ~( k8 C
Dim I As Integer, SS As AcadSelectionSet, FT(0) As Integer, FD(0) As Variant, P As Variant, LP As AcadLWPolyline+ y! p$ D, N2 g
With ThisDrawing( @; ?- t% ?% C2 K& A/ c$ F+ G
On Error Resume Next
! q; ?/ |3 O+ k' ~ Set SS = .SelectionSets.Add("SS" )3 T2 |0 u* D+ W& s- j+ a9 O" x
FD(0) = "lwpolyline"( A* e7 \- ]/ Z4 I; g$ k- A K# q
Do
0 t7 Z! A: E# p! N) i" @* G0 P P = .Utility.GetPoint(, vbCrLf & "拾取内部点:")
9 w6 m5 r2 Q6 [0 v If Err Then Exit Do' i" `# \+ W/ v1 @. p! e1 o
.SendCommand "-boundary " & P(0) & "," & P(1) & " "
2 r+ Z) }" H) m' V, r8 z SS.Select acSelectionSetLast, , , FT, FD: j9 Q. ^: d/ M+ |, F+ M% L
If SS.Count = I Then
; {) i, r9 o% J; ~0 _5 ^3 ? .SendCommand "n "
1 h" {. g* R& b! X1 O, u Exit Do G. `1 f' q2 e j- d
Else
9 T$ v- Y! l4 h# @+ b6 ~3 S/ d SS.Item(I).Highlight (True) '选择集的最后一个元素即新创建的多段线用高亮显示' R: S" h9 m; W3 G: ]$ O9 P4 e$ P. s
(请问在此处能实现将点击的图形,填充图案或填充底色的语句)0 U; e, q4 D6 N6 j" Q
I = I + 1
5 l5 B6 s. l, ^: Y4 Z8 t0 ? End If, g0 o! k& l& G. P5 G
Loop
4 ~" P, j1 Q5 D& R7 y- y l" t" e0 a7 y; b- ?' ?
[ 本帖最后由 koutx 于 2009-4-11 14:10 编辑 ] |
|