|
|

楼主 |
发表于 2009-4-11 12:19:44
|
显示全部楼层
来自: 中国北京
多谢版主详尽的指导和提供的学习资料,受益颇多。
& E: z7 o! J" U+ x8 E& T0 H R1 K这些天总是想在版主49楼的方法中再完善一下,可总不能实现,无奈再次请教:
& P2 q* c. ~% Y+ M) Z问题见下面程序中括号内的标注:
0 ~ Q$ `8 u8 X6 a0 k' [# `8 {------------------------------------------------------------------------------------------------------------------------
+ {. b: A7 L5 P# H6 oACAD的VBA并没有提供“孤岛检测”的方法,不过可以照下面的调用图形界面的“边界”命令实现它。* o/ a" k) T( M' X7 H! Y
Dim I As Integer, SS As AcadSelectionSet, FT(0) As Integer, FD(0) As Variant, P As Variant, LP As AcadLWPolyline
/ z p. C( w6 B6 f1 K3 W* b; i- _ With ThisDrawing
( k m7 {- {, p On Error Resume Next
+ j* Y' W" {/ h6 c4 Z" b Set SS = .SelectionSets.Add("SS" )
7 }( f5 E* D1 f+ Y& R+ w9 c FD(0) = "lwpolyline"- z8 V) m7 P3 Z5 B/ Y1 T. u5 \9 j
Do+ C: L/ f+ q, q' Y: r6 @8 s
P = .Utility.GetPoint(, vbCrLf & "拾取内部点:")
" C/ E$ @% C/ f If Err Then Exit Do
) s0 p; d3 B3 C$ j/ i' @. N( G .SendCommand "-boundary " & P(0) & "," & P(1) & " "( o" ^ U5 Y! ~ V
SS.Select acSelectionSetLast, , , FT, FD
8 L6 {& y B) a+ t: e If SS.Count = I Then- g0 v( M) J6 R7 l& _2 l* L2 k
.SendCommand "n "
" j2 A! e+ b) j8 H& U2 l% m Exit Do
* D- |: D% q1 P6 {, k Else
. s6 |1 x9 W! _4 ?$ g7 B1 j8 d SS.Item(I).Highlight (True) '选择集的最后一个元素即新创建的多段线用高亮显示- n8 z, ~# [1 E/ `9 b7 \$ t! @
(请问在此处能实现将点击的图形,填充图案或填充底色的语句)0 ~- x& {9 ~3 N {* S
I = I + 1
: [# E, y! \' R) D6 W+ v End If
: N8 H6 `; W# o* Y {$ O Loop. N f( P1 U& Z0 @! P. n
+ M( v( \" u( @; ]$ R[ 本帖最后由 koutx 于 2009-4-11 14:10 编辑 ] |
|