・ ユーザー入力を制限・許容する
(initget) は、キーワードを指定する以外にもビットコードを指定することで、入力を制限できます。
1 : 「Enter」のみの入力を禁止
2 : 0(ゼロ)の入力を禁止
4 : 負の値の入力を禁止
8 : 現在の図面範囲外の点を入力禁止
32 : ラバーバンドとボックスを破線表示
64 : getdist
関数へのZ座標への入力を禁止
128
:キーワードに関係なく任意の入力を可能にする(ユーザー入力は文字列で返る)
たとえば、オフセットの距離を入力させる場合
(initget (+ 1 2 4) )
(getdist "\n距離を入力")
ポイントの入力を求め、オプションの入力を可能にする
(initget 128)
(getpoint "\n オプションを入力 または ポイントを指定 :")
但し、この場合はキーボード入力は文字列で返るし、「Enter」のみの入力も可能なため注意が必要
下の例は、返り値を (read)
でデータタイプを変換してます
これだと、ポイントの指定と整数すべてが入力可
(defun abc ( / f ret)
(while (not f) (initget 128)
(setq ret (getpoint "\n点or整数: "))
(cond
((listp ret) (setq f t))
((= (type (setq ret (read ret))) 'int) (setq f
t))
)
)
ret
)
または
(initget 1 "U")
(getpoint "\n オプションを入力 または ポイントを指定 :")
この場合は、ポイントの指定・"U"の入力のみの可能(Enterのみは不可)
参考文献:「おぉとりすぷの広場」 記事番号<16904> <16928>