Vla-getinput
- 構文
- (vla-getinput vla-object)
- 機能
- ユーザからの入力文字列をキーワード インデックスに変換する。
- 引数
-
- vla-object … Utility の VLAオブジェクト
- 戻り値
- nil
- MEMO : このメソッドは、ユーザ入力関数(Get* メソッド)を呼び出している間に、CAD ユーザによって入力されたキーワードを取り出す。
- キーワードの最大長は 511 文字です(512 番目の文字は NULL 文字のために予約されている)。
- GetInput メソッドの呼び出しは意味がなく、直前にユーザ入力関数の呼び出しがなければ異常終了する。ユーザ入力関数を呼び出した場合でも、「ユーザ入力がキーワードです」というエラー メッセージが返されたときのみ正常終了する。
- GetKeyword メソッドを呼び出した後で、GetInput メソッドを呼び出す必要はない。
- アプリケーションによって認識されるキーワードは、直前の InitializeUserInput メソッドの呼び出しで指定される。キーワードの解釈はアプリケーションに任されている。キーワードが、CAD のコマンド名と重複しないようにすること。
- ユーザはキーワードを短縮して入力することができるが、GetInput メソッドは、InitializeUserInput メソッドの呼び出しで定義された表記のままの完全なキーワードを返す。したがって、アプリケーションはキーワードごとに 1 つの文字列を比較するだけですむ。
- サンプル
(vl-load-com)
(defun c:Example_GetInput()
;; ユーザのポイントを入力するよう求める。例は InitializeUserInput メソッドを使用して、
;; キーワード リストを定義する、ユーザーが入力するキーワードを返すことも。
(setq acadObj (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acadObj))
;; キーワードの設定
(setq keywordList "Line Circle")
;; キーワードを設定する InitializeUserInput を呼び出す
(vla-InitializeUserInput (vla-get-Utility doc) 128 keywordList)
;; ユーザー入力を取得します。
(setq returnPntOrErr (vl-catch-all-apply 'vla-GetPoint (list (vla-get-Utility doc) nil "点の入力 [Line/Circle]: ")))
(if (= (type returnPntOrErr)'VL-CATCH-ALL-APPLY-ERROR)
(progn
(if (= (vl-catch-all-error-message returnPntOrErr) "オートメーション エラー。ユーザーの入力がキーワード")
(progn
(setq inputString (vla-GetInput (vla-get-Utility doc)))
(alert (strcat "入力されたキーワードは: " inputString))
)
(alert "ユーザーが esc キーまたは未知の入力を押したが提供されました。")
)
)
;; 表示ポイントの座標
(progn
(setq returnPnt (vlax-safearray->list (vlax-variant-value returnPntOrErr)))
(alert (strcat "WCS の点: " (rtos (nth 0 returnPnt) 2) ", " (rtos (nth 1 returnPnt) 2) ", " (rtos (nth 2 returnPnt) 2)))
)
)
)
関連事項