GetInput メソッド(ActiveX)

ユーザからの入力文字列をキーワード インデックスに変換します。

サポートされているプラットフォーム: Windows のみ

構文と要素

VBA:

RetVal = object.GetInput()
object

タイプ: Utility

このメソッドが適用されるオブジェクト。

戻り値(RetVal)

タイプ: 文字列

どのキーワードが入力されたかを指定するインデックス

注意

このメソッドは、ユーザ入力関数(Get* メソッド)を呼び出している間に、AutoCAD ユーザによって入力されたキーワードを取り出します。

キーワードの最大長は 511 文字です(512 番目の文字は NULL 文字のために予約されています)。

GetInput メソッドの呼び出しは意味がなく、直前にユーザ入力関数の呼び出しがなければ異常終了します。ユーザ入力関数を呼び出した場合でも、「ユーザ入力がキーワードです」というエラー メッセージが返されたときのみ正常終了します。

GetKeyword メソッドを呼び出した後で、GetInput メソッドを呼び出す必要はありません。

アプリケーションによって認識されるキーワードは、直前の InitializeUserInput メソッドの呼び出しで指定されます。キーワードの解釈はアプリケーションに任されています。キーワードが、AutoCAD コマンド名と重複しないようにしてください。

ユーザはキーワードを短縮して入力することができますが、GetInput メソッドは、InitializeUserInput メソッドの呼び出しで定義された表記のままの完全なキーワードを返します。したがって、アプリケーションはキーワードごとに 1 つの文字列を比較するだけですみます。

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