|
|

楼主 |
发表于 2009-4-11 12:19:44
|
显示全部楼层
来自: 中国北京
多谢版主详尽的指导和提供的学习资料,受益颇多。
* Y3 b2 l) A9 q' {# x* B6 i这些天总是想在版主49楼的方法中再完善一下,可总不能实现,无奈再次请教:5 s& T0 Y! `4 k7 D
问题见下面程序中括号内的标注:
$ L& i8 ?9 r4 s------------------------------------------------------------------------------------------------------------------------) M; Z$ }9 n0 J F, _
ACAD的VBA并没有提供“孤岛检测”的方法,不过可以照下面的调用图形界面的“边界”命令实现它。( {3 C/ K. Y* U, R
Dim I As Integer, SS As AcadSelectionSet, FT(0) As Integer, FD(0) As Variant, P As Variant, LP As AcadLWPolyline5 w' D' ~7 k& |7 e6 ^% Q# ~6 a
With ThisDrawing
% ]8 g& u5 b& C( o \ On Error Resume Next) F# c: }8 q: _/ @
Set SS = .SelectionSets.Add("SS" )& Z/ ^. j# U, `/ C6 B% F0 x+ A
FD(0) = "lwpolyline"
4 w7 U. F" L% \2 ?6 k: j2 e Do
, K7 k9 [+ N% n3 j0 T$ _$ e P = .Utility.GetPoint(, vbCrLf & "拾取内部点:")
' [/ y/ Z- n! i* B6 K# M+ R$ t If Err Then Exit Do
1 g& G# {7 Y- s! P3 S S( T5 W' Y .SendCommand "-boundary " & P(0) & "," & P(1) & " "
% _, y2 l9 x0 d! H$ [: l# @ S9 p SS.Select acSelectionSetLast, , , FT, FD6 q v: H* w/ Z" t. c+ E
If SS.Count = I Then8 ]" D: a6 q2 b, K4 y
.SendCommand "n "
1 s- r3 O4 p3 v; S Exit Do
) n9 ]& p( v8 p1 T Else" x- O( F# O0 {' L' m# e" N
SS.Item(I).Highlight (True) '选择集的最后一个元素即新创建的多段线用高亮显示
0 m" b3 t$ a# x, [4 _ (请问在此处能实现将点击的图形,填充图案或填充底色的语句)
0 |% q+ U s* V1 Z% L. h1 X% J I = I + 1
% [1 @/ _8 w( _, \ End If, z" T4 g& v0 p/ i5 H
Loop h: m; B# \& l I3 k1 ^
4 \, J" n: h8 ^8 L. D
[ 本帖最后由 koutx 于 2009-4-11 14:10 编辑 ] |
|