|
|

楼主 |
发表于 2009-4-11 12:19:44
|
显示全部楼层
来自: 中国北京
多谢版主详尽的指导和提供的学习资料,受益颇多。
$ F0 c3 n9 w, N7 s% L5 X这些天总是想在版主49楼的方法中再完善一下,可总不能实现,无奈再次请教:
6 x+ H" }8 F" l- |9 w! G问题见下面程序中括号内的标注:- d1 g/ P6 \+ n0 U7 t5 a: |9 P
------------------------------------------------------------------------------------------------------------------------
# A4 g2 o( F/ v& ~( j1 QACAD的VBA并没有提供“孤岛检测”的方法,不过可以照下面的调用图形界面的“边界”命令实现它。
r/ W( b+ k7 l8 z; S0 A- u, fDim I As Integer, SS As AcadSelectionSet, FT(0) As Integer, FD(0) As Variant, P As Variant, LP As AcadLWPolyline
+ p7 q) h& l4 N1 p) h- i: ^, ] With ThisDrawing
. d* h" U L* D- }4 ~ d; g" ] On Error Resume Next
0 J! I0 E5 A( H Set SS = .SelectionSets.Add("SS" )
( A0 u& |! z: o2 |+ ~ FD(0) = "lwpolyline"
0 W6 ]1 J) w* h+ q- `9 q Do
$ y) k) p7 R9 s6 o P = .Utility.GetPoint(, vbCrLf & "拾取内部点:")
: F' W7 ~- [8 O+ Z) _" q0 m If Err Then Exit Do
* [, z I" u+ |; m9 k0 I! u& q+ m9 t .SendCommand "-boundary " & P(0) & "," & P(1) & " "6 n5 q u- @9 Q- a1 j) @8 p
SS.Select acSelectionSetLast, , , FT, FD
# F) ]+ r8 B" s7 _# P: l If SS.Count = I Then
{: }; |0 w+ Q! k% \/ A- M( _# b, X .SendCommand "n "2 E9 Z' h: P$ t3 d2 \
Exit Do
2 E( Z, Q; k6 T: R t Else; }$ H" W# b$ n+ [! w( p
SS.Item(I).Highlight (True) '选择集的最后一个元素即新创建的多段线用高亮显示
$ {$ O2 F: ~$ m9 p# x* t (请问在此处能实现将点击的图形,填充图案或填充底色的语句)
" z3 X1 `0 S! z5 E# W+ K2 | I = I + 1
! s8 f1 l6 u! @5 t End If/ z6 J+ {7 M- e! |. b' S
Loop
: W9 I" W7 }' L5 i$ V' k
8 d4 q# Q$ `4 ]6 F1 C& D/ y[ 本帖最后由 koutx 于 2009-4-11 14:10 编辑 ] |
|