Vla-initializeuserinput

提供:GizmoLabs - だいたい CAD LISP なサイト
2015年12月25日 (金) 10:55時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成:「{{AutoLISP}} ; 構文 : (vla-initializeuserinput ''vla-object'' ''Bits'' ''Keyword'') ; 機能 : GetKeyword メソッドを初期化する。 ; 引数 :* vla-object...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(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)))
	)
    )
)

関連事項