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.") )