GetInput Method (ActiveX)

Converts a user's input string into a keyword index.

Supported platforms: Windows only

Signature

VBA:

RetVal = object.GetInput()
object

Type: Utility

The object this method applies to.

Return Value (RetVal)

Type: String

The index specifying which keyword was entered.

Remarks

This method retrieves a keyword entered by the AutoCAD user during a call to one of the user-input functions (Get* methods).

The maximum length of the keyword is 511 characters (with the 512th character reserved for the NULL character).

A call to GetInput is meaningless and will fail unless it immediately follows a call to one of the user-input functions. Even then, the call will be successful only if the user-input function has returned the error description "User input is a keyword."

It is not necessary to call GetInput after a call to the GetKeyword method.

The keywords recognized by the application are specified by a prior call to the InitializeUserInput method. The interpretation of the keywords is entirely up to the application. Keywords should not duplicate the names of AutoCAD commands.

The user can abbreviate a keyword, but GetInput always returns the full keyword as it was defined in the InitializeUserInput call with the original capitalization, so the application needs to do only one string comparison for each keyword it defines.

Examples

VBA:

Sub Example_GetInput()
    ' This example prompts for user input of a point. By using the
    ' InitializeUserInput method to define a keyword list, the example can also
    ' return keywords entered by the user.
    
    AppActivate ThisDrawing.Application.Caption
    
    On Error Resume Next
    
    ' Define the valid keywords
    Dim keywordList As String
    keywordList = "Line Circle"
    
    ' Call InitializeUserInput to set up the keywords
    ThisDrawing.Utility.InitializeUserInput 128, keywordList
    
    ' Get the user input
    Dim returnPnt As Variant
    returnPnt = ThisDrawing.Utility.GetPoint(, vbLf & "Enter a point [Line/Circle]: ")
    If Err Then
         If StrComp(Err.Description, "User input is a keyword", 1) = 0 Then
         ' One of the keywords was entered
             Dim inputString As String
             Err.Clear
             inputString = ThisDrawing.Utility.GetInput
             MsgBox "You entered the keyword: " & inputString
         Else
             MsgBox "Error selecting the point: " & Err.Description
             Err.Clear
         End If
    Else
        ' Display point coordinates
        MsgBox "The WCS of the point is: " & returnPnt(0) & ", " & returnPnt(1) & ", " & returnPnt(2), , "GetInput Example"
    End If
    
End Sub

Visual LISP:

(vl-load-com)
(defun c:Example_GetInput()
    ;; This example prompts for user input of a point. By using the
    ;; InitializeUserInput method to define a keyword list, the example can also
    ;; return keywords entered by the user.
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))
    
    ;; Define the valid keywords
    (setq keywordList "Line Circle")
    
    ;; Call InitializeUserInput to set up the keywords
    (vla-InitializeUserInput (vla-get-Utility doc) 128 keywordList)
    
    ;; Get the user input
    (setq returnPntOrErr (vl-catch-all-apply 'vla-GetPoint (list (vla-get-Utility doc) nil "Enter a point [Line/Circle]: ")))

    (if (= (type returnPntOrErr)'VL-CATCH-ALL-APPLY-ERROR)
        (progn
            (if (= (vl-catch-all-error-message returnPntOrErr) "Automation Error. User input is a keyword")
	               (progn
                    (setq inputString (vla-GetInput (vla-get-Utility doc)))
                    (alert (strcat "You entered the keyword: " inputString))
		              )
                (alert "User pressed ESC or unknown input was provided.")
	           )
        )
        ;; Display point coordinates
        (progn
	           (setq returnPnt (vlax-safearray->list (vlax-variant-value returnPntOrErr)))
            (alert (strcat "The WCS of the point is: " (rtos (nth 0 returnPnt) 2) ", " (rtos (nth 1 returnPnt) 2) ", " (rtos (nth 2 returnPnt) 2)))
	       )
    )
)