selectAtpoint方法
你好SelectAtpoint不起作用。
有人能指出错误吗
Dim tpt1(0 To 2) As Double
ftype(0) = 0
fdata(0) = "LINE"
ftype(1) = -4
fdata(1) = "<OR"
ftype(2) = 8
fdata(2) = "LAYER1"
ftype(3) = 8
fdata(3) = "LAYER2"
ftype(4) = -4
fdata(4) = "OR>"
qset.SelectAtPoint tpt1, ftype, fdata
未选择任何对象。 我现在无法使用VBA访问AutoCAD,而且已经有一段时间没有使用它了。所以,在有这方面经验的人看到这条线索之前,我会做一些猜测:
选择集对象是否正确声明和注册?你试过没有过滤器的选择吗?用于选择的点是否在屏幕上可见?这个问题是否与当前缩放级别相关的拾取框大小有关? 我尝试过不使用过滤器,对象seelcted不属于层“Layer1”或“layer2”
拾取框的增加不起作用。
宣言:
dim qset作为acadselectionset
设置qset=thisdrawing。选择集。添加(“qsetname”) 卡莱,
我不知道你的代码中哪里有问题,但我写了几行,似乎没有问题。我正在发布我的代码,希望它能帮助你
Sub TrySelectAtPoint()
On Error Resume Next
Dim ss As AcadSelectionSet
ThisDrawing.SelectionSets("MySS").Delete
If Err Then
Err.Clear
End If
ThisDrawing.SelectionSets.Add "MySS"
Set ss = ThisDrawing.SelectionSets("MySS")
Dim selPt(2) As Double
selPt(0) = 0
selPt(1) = 0
selPt(2) = 0
MsgBox ss.Count & " BEFORE selecting"
ss.SelectAtPoint selPt
MsgBox ss.Count & " AFTER selecting"
Line.sel
End Sub
感谢您的回复,
但此(selectatPoint)方法仅选择一个对象。 是-只选择了一个对象,因为这只是一个基本示例,可以向您展示此功能的工作原理。如果你表现出色。使用不同的点多次选择点。更多对象将添加到选择集。有两点:
Sub TrySelectAtPoint()
On Error Resume Next
Dim ss As AcadSelectionSet
ThisDrawing.SelectionSets("MySS").Delete
If Err Then
Err.Clear
End If
ThisDrawing.SelectionSets.Add "MySS"
Set ss = ThisDrawing.SelectionSets("MySS")
Dim selPt(2) As Double
selPt(0) = 0
selPt(1) = 0
selPt(2) = 0
MsgBox ss.Count & " BEFORE selecting"
ss.SelectAtPoint selPt
selPt(0) = 100
selPt(1) = 0
selPt(2) = 0
ss.SelectAtPoint selPt
MsgBox ss.Count & " AFTER selecting"
End Sub
这不是SelectAtPoint应该做的吗?这就好像用户通过拾取图元来选择,即使有1000个图元穿过该点,也只会选择绘制顺序中最顶部的图元。如果需要特定点的拾取框区域内的所有图元,则需要计算与当前缩放因子相关的拾取框尺寸,然后将Select与acSelectionSetCrossing模式和“拾取框”的计算矩形一起使用。 在我看来,OP的问题在于定义的过滤器不能按预期工作。
页:
[1]