zfbj 发表于 2005-5-25 11:18:00

[讨论]SelectAtPoint方法是鸡肋,仅能选择过一点的一个对象!

下面是帮助系统中的原文:


Selects an object passing through a given point and places it into a selection set.


在实用中,不如用下面的函数来代替:


' 选择通过某点的实体<BR>Public Sub SelectAtPoint(ByRef SSet As AcadSelectionSet, ByVal pt As Variant)<BR>                                ' 构造一个以pt为中心的小矩形作为选择范围<BR>                                Dim pt1 As Variant, pt2 As Variant<BR>                                Dim objUtility As Object<BR>                                Set objUtility = ThisDrawing.Utility                                ' 必须使用后期绑定<BR>                                objUtility.CreateTypedArray pt1, vbDouble, pt(0) - 0.01, pt(1) - 0.01, pt(2)<BR>                                objUtility.CreateTypedArray pt2, vbDouble, pt(0) + 0.01, pt(1) + 0.01, pt(2)<BR>                                <BR>                                SSet.Select acSelectionSetCrossing, pt1, pt2<BR>                                MsgBox SSet.count<BR>End Sub

mccad 发表于 2005-5-25 12:54:00

这个问题三年前已经发现。<BR>解决方法很简单,并不需要构造小矩形,只需要把点做为两个点的参数。<BR>SSet.Select acSelectionSetCrossing, pt , pt

evaporated 发表于 2005-5-26 10:05:00

请问,会不会由于系统的舍入误差导致选择不准?


比如有条线 过上述该点的。


但是该点坐标最末一位和直线上相同点的最末一位 存在微小差异。


导致选择不准?


这种情况下小矩形可能更加准确些?


我是猜测。不知道有没有这种可能?

mccad 发表于 2005-5-27 21:54:00

如果有误差,单选时也有误差。
页: [1]
查看完整版本: [讨论]SelectAtPoint方法是鸡肋,仅能选择过一点的一个对象!