Gets an object interactively.
Supported platforms: Windows only
VBA:
object.GetEntity Object, PickedPoint [, Prompt]
Type: Utility
The object this method applies to.
Access: Output-only
Type: Object
The picked object. Can be one of any of the drawing objects.
Access: Output-only
Type: Variant (three-element array of doubles)
A 3D WCS coordinate specifying the point that was selected.
Access: Input-only; optional
Type: Variant (string)
The text to display that prompts the user for input.
No return value.
This method requires the AutoCAD user to select an object by picking a point on the graphics screen. If an object is picked, it is returned in the first parameter and the second parameter will contain the point picked in WCS coordinates. If the pick point is not on an object the call will fail.
The pick point returned by GetEntity does not necessarily lie on the selected object. The returned point represents the location of the crosshairs at the time of selection. The relationship between this point and the object varies depending on the size of the pickbox and the current zoom scale.
This method can retrieve an object even if it is not visible on the screen or if it is on a frozen layer.
VBA:
Sub Example_GetEntity()
' This example creates several objects in model space. It then
' prompts the user to select an object. The example continues to
' have the user select objects until the user selects in empty space.
AppActivate ThisDrawing.Application.Caption
' Create a Ray object in model space
Dim rayObj As AcadRay
Dim basePoint(0 To 2) As Double
Dim SecondPoint(0 To 2) As Double
basePoint(0) = 3#: basePoint(1) = 3#: basePoint(2) = 0#
SecondPoint(0) = 1#: SecondPoint(1) = 3#: SecondPoint(2) = 0#
Set rayObj = ThisDrawing.ModelSpace.AddRay(basePoint, SecondPoint)
' Create a polyline object in model space
Dim plineObj As AcadLWPolyline
Dim points(0 To 5) As Double
points(0) = 3: points(1) = 7
points(2) = 9: points(3) = 2
points(4) = 3: points(5) = 5
Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
plineObj.Closed = True
' Create a line object in model space
Dim lineObj As AcadLine
Dim startPoint(0 To 2) As Double
Dim endPoint(0 To 2) As Double
startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0
endPoint(0) = 2: endPoint(1) = 2: endPoint(2) = 0
Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
' Create a circle object in model space
Dim circObj As AcadCircle
Dim centerPt(0 To 2) As Double
Dim radius As Double
centerPt(0) = 20: centerPt(1) = 30: centerPt(2) = 0
radius = 3
Set circObj = ThisDrawing.ModelSpace.AddCircle(centerPt, radius)
' Create an ellipse object in model space
Dim ellObj As AcadEllipse
Dim majAxis(0 To 2) As Double
Dim center(0 To 2) As Double
Dim radRatio As Double
center(0) = 5#: center(1) = 5#: center(2) = 0#
majAxis(0) = 10: majAxis(1) = 20#: majAxis(2) = 0#
radRatio = 0.3
Set ellObj = ThisDrawing.ModelSpace.AddEllipse(center, majAxis, radRatio)
ZoomAll
' Begin the selection
Dim returnObj As AcadObject
Dim basePnt As Variant
On Error Resume Next
' The following example waits for a selection from the user
RETRY:
ThisDrawing.Utility.GetEntity returnObj, basePnt, "Select an object"
If Err <> 0 Then
Err.Clear
MsgBox "Program ended.", , "GetEntity Example"
Exit Sub
Else
returnObj.Update
MsgBox "The object type is: " & returnObj.EntityName, , "GetEntity Example"
returnObj.Update
End If
GoTo RETRY
End Sub
Visual LISP:
(vl-load-com)
(defun c:Example_GetEntity()
;; This example creates several objects in model space. It then
;; prompts the user to select an object. The example continues to
;; have the user select objects until the user selects in empty space.
(setq acadObj (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acadObj))
(setq modelSpace (vla-get-ModelSpace doc))
;; Create a Ray object in model space
(setq basePoint (vlax-3d-point 3 3 0)
secondPoint (vlax-3d-point 1 3 0))
(setq rayObj (vla-AddRay modelSpace basePoint SecondPoint))
;; Create a polyline object in model space
(setq points (vlax-make-safearray vlax-vbDouble '(0 . 5)))
(vlax-safearray-fill points '(3 7
9 2
3 5
)
)
(setq plineObj (vla-AddLightWeightPolyline modelSpace points))
(vla-put-Closed plineObj :vlax-true)
;; Create a line object in model space
(setq startPoint (vlax-3d-point 0 0 0)
endPoint (vlax-3d-point 2 2 0))
(setq lineObj (vla-AddLine modelSpace startPoint endPoint))
;; Create a circle object in model space
(setq centerPt (vlax-3d-point 20 30 0)
radius 3)
(setq circObj (vla-AddCircle modelSpace centerPt radius))
;; Create an ellipse object in model space
(setq center (vlax-3d-point 5 5 0)
majAxis (vlax-3d-point 10 20 0)
radRatio 0.3)
(setq ellObj (vla-AddEllipse modelSpace center majAxis radRatio))
(vla-ZoomAll acadObj)
;; Begin the selection
;; The following example waits for a selection from the user
(while (= (setq err (vl-catch-all-apply 'vla-GetEntity (list (vla-get-Utility doc) 'returnObj 'basePnt "Select an object"))) nil)
(vla-Update returnObj)
(alert (strcat "The object type is: " (vla-get-ObjectName returnObj)))
(vla-Update returnObj)
)
(alert "Program ended.")
)