getreal を使うと、ユーザーが入力した数値(実数)が戻り値です。
基礎知識
関数 getreal
AutoLISP関数 getreal は、ユーザーに実数入力を促す機能を持った関数です。
戻り値は、入力された整数です。
(getreal) で、ユーザー入力を促します。
(getreal “メッセージ”) このように、文字列を引数にすると、コマンドラインと、ダイナミック入力ON時にはカーソル下にもメッセージを出してくれます。
では、実際にAutoLISPプログラムに入れて使ってみましょう。
- getreal で数字を得る。
- ssget にフィルターをかけてポリラインだけの選択セットを作る。
- AutoCADコマンドPEDITを使ってポリラインの幅を、getreal で数字を得た数字にする。
これをAutoLISPにするとこうなります。
AutoLISP
(defun c:Test ( / Num Objs)
(setq Num (getreal "線の幅: "))
(setq Objs (ssget '((0 . "*POLYLINE"))))
(command-s "._PEDIT" "M" Objs "" "W" Num "")
(princ))
カスタマイズ例
円弧と線分も含める
今回はポリラインだけを選ぶようにしましたが、円弧と線分も選択セットに入れ、if を使って、円弧と線分ならポリラインに変えて幅に数字を入れる、ポリラインなら幅を入れる。としてもいいと思います。
オブジェクトを1つづつ選んで while で繰り返す
好みの問題ですが、グループで選ぶよりも、一つ一つ図形を選択していく方が使いやすい場合もあります。その場合、図形選択を(car (entsel)) を使って1つづつ選ぶようにしてもいいと思います。
(while T ) で図形選択とコマンドの部分を囲めば、数字入力は一度だけで、次々ポリラインを選んでいけるコマンドにできます。
if を使って、もし、コマンドを実行する前に図形を選んでいたらグループ選択、図形を選択していない状態でコマンドを実行したときは1つづつ選ぶ。ということもできます。
グローバル変数
基本的に同じ線幅が欲しい時は、ローカル変数の宣言はせずに、線幅の変数に数値が入っていない場合のみ、getrealにするということもできます。
その場合は、変数の数値を変えたいときもあると思うので、変数を変更するコマンドも作った方が便利だと思います。
まとめ
- getreal は、実数をユーザー入力するように促し、その入力された数字を戻す。
- 引数にメッセージを付け加えることもできる。
Comments