Vla-getinput

提供:GizmoLabs - だいたい CAD LISP なサイト
構文
(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)))
           )
    )
)

関連事項