vb。净选择点
我有一个代码可以创建一个选择窗口。我需要编辑代码,以便用户可以选择屏幕上的窗口点,而不是硬编码的点
有什么想法吗?
Public Class Class1
<CommandMethod("selectwindowa")> _
Public Sub selectwindowa()
Dim mydwg As Document = DocumentManager.MdiActiveDocument
Dim myeditor As Editor = DocumentManager.MdiActiveDocument.Editor
Dim mypsr As PromptSelectionResult = mydwg.Editor.SelectWindow( _
New Point3d(-2, -2, 0), New Point3d(2, 2, 0))
If mypsr.Status = PromptStatus.OK Then
Using myTrans As Transaction = mydwg.TransactionManager.StartTransaction
For Each myObjectID As ObjectId In mypsr.Value.GetObjectIds
Dim myEnt As Entity = myObjectID.GetObject(OpenMode.ForRead)
MsgBox(myEnt.Layer & vbTab & myEnt.GeometricExtents.ToString)
Next
End Using
End If
获得两个用户选择点的一种方法是首先使用PromptPointOptions/Editor,同时向用户提供一些视觉反馈。GetPoint()/PromptPointResult交互以获取初始点。然后,该点可以与PromptCornerOptions/Editor一起使用。GetCorner()/PromptPointResult。这两点可以提供给编辑器选择方法。 谢谢肖特,我试过你的建议,效果很好。
仅供参考最终代码如下
Public Class Class1
<CommandMethod("selectwindowa")> _
Public Sub selectwindowa()
Dim mydwg As Document = DocumentManager.MdiActiveDocument
Dim myeditor As Editor = DocumentManager.MdiActiveDocument.Editor
Dim myPPR As Point3d = myeditor.GetPoint("Select 1st Point: ").Value
Dim myPPR1 As Point3d = myeditor.GetCorner("Select 2nd Point: ", myPPR).Value
Dim mypsr As PromptSelectionResult = mydwg.Editor.SelectWindow( _
myPPR, myPPR1)
If mypsr.Status = PromptStatus.OK Then
Using myTrans As Transaction = mydwg.TransactionManager.StartTransaction
For Each myObjectID As ObjectId In mypsr.Value.GetObjectIds
Dim myEnt As Entity = myObjectID.GetObject(OpenMode.ForRead)
MsgBox(myEnt.Layer & vbTab & myEnt.GeometricExtents.ToString)
Next
End Using
End If
End Sub
End Class
页:
[1]