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

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

下面是帮助系统中的原文:
Selects an object passing through a given point and places it into a selection set.
在实用中,不如用下面的函数来代替:
' 选择通过某点的实体
Public Sub SelectAtPoint(ByRef SSet As AcadSelectionSet, ByVal pt As Variant)
                                ' 构造一个以pt为中心的小矩形作为选择范围
                                Dim pt1 As Variant, pt2 As Variant
                                Dim objUtility As Object
                                Set objUtility = ThisDrawing.Utility                                ' 必须使用后期绑定
                                objUtility.CreateTypedArray pt1, vbDouble, pt(0) - 0.01, pt(1) - 0.01, pt(2)
                                objUtility.CreateTypedArray pt2, vbDouble, pt(0) + 0.01, pt(1) + 0.01, pt(2)
                               
                                SSet.Select acSelectionSetCrossing, pt1, pt2
                                MsgBox SSet.count
End Sub

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

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

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

请问,会不会由于系统的舍入误差导致选择不准?
比如有条线 过上述该点的。
但是该点坐标最末一位和直线上相同点的最末一位 存在微小差异。
导致选择不准?
这种情况下小矩形可能更加准确些?
我是猜测。不知道有没有这种可能?

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

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