Vla-initializeuserinput
- 構文
- (vla-initializeuserinput vla-object Bits Keyword)
- 機能
- GetKeyword メソッドを初期化する。
- 引数
-
- vla-object … Utility の VLAオブジェクト
- Bits … キーワードのビット和を示す整数
- 一度に複数の条件を設定するには、値を自由に組み合せて加算する。この値が含まれない場合、または 0 に設定されている場合は、コントロール条件は適用されない。
- 1 : NULL 入力を認めない。ユーザが要求に対して、[Enter]またはスペースだけの入力で応答できないようにする。
- 2 : ゼロ(0)の入力を認めない。ユーザが要求に対して、0 の入力で応答できないようにする。
- 4 : 負の値を認めない。ユーザが要求に対して、負の値の入力で応答できないようにする。
- 8 : システム変数 LIMCHECK がオンに設定されていても、図面範囲をチェックしない。したがって、現在の図面範囲の外側にある点を入力することができる。この条件は、CAD のシステム変数 LIMCHEK が現在設定されている場合でも、次に呼び出されるユーザ入力関数に適用される。
- 16 : 現在使用されていない。
- 32 : ラバーバンド線またはボックスを描く際に破線を使用する。これによって、グラフィックス画面上の点の位置を選択することによってユーザが点を指定できるメソッドでは、ラバーバンド線またはボックスが実線ではなく破線で表現される(ディスプレイ ドライバによっては、破線の代わりに独自の色が使用される)。CAD のシステム変数 POPUPS が 0(ゼロ)の場合、CAD はこのビットを無視する。
- 64 : 3D 点の Z 座標を無視する(GetDistance メソッドのみ)。このオプションは、GetDistance メソッドから返される 3 次元の Z 座標を無視するので、確実に 2 次元の距離だけが返されるようにする。
- 128 : ユーザは何でも入力できる。
- Keyword … 次のユーザ入力メソッドが認識するキーワード。文字列の配列
- 戻り値
- nil
- 注意 : GetKeyword メソッドを呼び出す前に、このメソッドでキーワードが定義されていなければならない。ユーザ入力メソッドの中には、通常の戻り値だけでなくキーワード値を受け取るものがある。ただし、InitializeUserInput メソッドを呼び出してキーワードを定義しておかなければならない。キーワードを受け取ることができるユーザ入力メソッドは、GetKeyword、GetInteger、GetReal、GetDistance、GetAngle、GetOrientation、GetPoint、GetCorner。
- AutoLISP では、同様の関数として initget がある。
- サンプル
(vl-load-com)
(defun c:Example_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 "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 "貴殿の指定したキーワード : " inputString))
)
(alert "ESC を押したか、不明なキーワードです。")
)
)
;; 指示点の座標を表示
(progn
(setq returnPnt (vlax-safearray->list (vlax-variant-value returnPntOrErr)))
(alert (strcat "ワールド座標の点 : " (rtos (nth 0 returnPnt) 2) ", " (rtos (nth 1 returnPnt) 2) ", " (rtos (nth 2 returnPnt) 2)))
)
)
)
関連事項