initget 関数を使用すると、次に呼び出すユーザ入力関数を特定レベルでコントロールできます。
initget 関数は、次に呼び出す entsel、nentsel、nentselp、getXXX 関数( getstring、getvar、getenv を除く)で使用する各種のオプションを定義します。この関数には bits と string の 2 つの引数を指定します。これらの引数は両方とも省略可能です。bits 引数に、1 つまたは複数のコントロール ビットを指定することにより、次に呼び出すユーザ入力関数に対して、特定の入力値を許可または禁止にします。string 引数には、次に呼び出すユーザ入力関数が認識するキーワードを指定できます。
initget のビット値とキーワードは、次に呼び出すユーザ入力関数にだけに適用され、その関数を呼び出した後は放棄されます。アプリケーションは特定の条件を解除するために、もう一度 initget を呼び出す必要はありません。
initget の引数 bits の値は、次に呼び出すユーザ入力関数に対してユーザ入力のタイプを制限します。これにより、エラー チェックの必要性が少なくなります。
次に、使用可能なビット値のいくつかを示します。
(任意の組み合わせの)値を加算して 0 ~ 255 のビット値を作成することにより、一度に複数の条件を設定することができます。bits を省略した場合、または 0(ゼロ)に設定した場合、コントロール条件は次に呼び出すユーザ入力関数に適用されません。(initget ビット設定の完全なリストの場合)。
たとえば、これらの値を、次に呼び出される getint 関数に適用すると、ユーザは 0(ゼロ)より大きな整数値を入力しなくてはなりません。
(initget (+ 1 2 4)) (getint "\nHow old are you? ")
このコードは、ユーザの年齢を要求します。ユーザが負の値やゼロを入力したり、[Enter]だけを押したり、または文字列を入力すると(getint 関数は整数以外の値の入力を拒否します)、AutoCAD はエラー メッセージを表示します。
initget の省略可能な string 引数には、次に呼び出すユーザ入力関数が認識する一連のキーワードのリストを指定します。ユーザ入力関数は、ユーザの入力がキーワードのスペルと一致した場合(大文字と小文字は区別されません)や、ユーザがキーワードの省略形を入力した場合に、定義済みのキーワードの 1 つを返します。
次のコード例に、getreal を呼び出す前に、initget を使用して 2 つのキーワードを定義する方法を示します。プログラムはこれらのキーワードをチェックし、それに従って入力値を設定します。
(defun C:GETNUM (/ num) (initget 1 "Pi Two-pi") (setq num (getreal "Pi/Two-pi/<number>: ")) (cond ((eq num "Pi") pi) ((eq num "Two-pi") (* 2.0 pi)) (T num) ) )
initget の bits 引数には null 入力を禁止する値 1 が渡され、string 引数には 2 つのキーワード、"Pi" と "Two-pi" を表す文字列値が渡されます。 getreal 関数を使用して実数を取得しますが、このとき次のプロンプトが表示されます。
Pi/Two-pi/<number>:
結果はローカル変数シンボル num に格納されます。ユーザが数値を入力すると、C:GETNUM はその数値を返します。しかし、ユーザがキーワード Pi (または単に P)と入力すると、getreal はキーワード Pi を返します。cond 関数はこれを検出し、この例では PI の値を返します。キーワード Two-pi も同様に扱われます。