hardwired 发表于 2008-3-3 11:28:43

在选择集中拾取一个对象..

嗨,
我知道这一定很简单,但我可以编码一个选择集只选择一个对象吗?
我正在使用SelectOnScreen方法,但我可以选择很多对象,我只想强制它为ONE。
我有这个代码:
Private Sub blockpick1BTN_Click()
FixingsChartFRM.Hide
On Error Resume Next
ThisDrawing.SelectionSets.Delete ("FiX_SS")
Set SS = ThisDrawing.SelectionSets.Add("FiX_SS")
Dim Ftype(0) As Integer
Dim FData(0) As Variant
Ftype(0) = 2
FData(0) = "AcDbBlockReference"
On Error Resume Next
SS.SelectOnScreen Ftype, FData
FixingsChartFRM.Show
End Sub
....1:它不会显示我选择的任何块(命令行显示选择对象:0已找到)和:
2:有没有比这更好的方法来将对象添加到选择集?
**** Hidden Message *****

Atook 发表于 2008-3-3 11:31:27

实用程序类的GetEntity方法将只允许您选择一个实体。

hardwired 发表于 2008-3-3 11:48:51

GetEntity的好处是您不再需要选择集,只需直接与实体一起使用即可。但是,您需要检查实体是否是正确的类型,但是,当您期望块时,您的用户总是会选择折线。

hardwired 发表于 2008-3-4 04:28:18

对不起,我解决了,但还有一件事......
...我想把块名称放在用户表单的文本框中,但是AcadObject只有ObjectName,我如何从选定的对象中获取块名称...
这是我在GetEntity部分之后使用的粗略代码:
ThisDrawing.Utility.GetEntity FixBlock, PickPoint, "Select a fixing.."
If FixBlock.ObjectName = "AcDbBlockReference" Then
    fx1descTXT.Text = FixBlock.ObjectName
    FixingsChartFRM.Show
ElseIf FixBlock.ObjectName"AcDbBlockReference" Then
    MsgBox "Please pick a block.."
    GoTo PICK
End If

Arizona 发表于 2008-3-4 04:45:26

fixblock.name = “您的文本”

hardwired 发表于 2008-3-4 05:57:01

哦对了,就这么简单,哈哈。我认为AcadObject没有Name属性,因为它没有出现在intellisense列表中。谢谢
页: [1]
查看完整版本: 在选择集中拾取一个对象..