Sponsored links

【AutoLISP ユーザー入力】実数 getreal

Sponsored links
AutoLISP
Sponsored links

getreal を使うと、ユーザーが入力した数値(実数)が戻り値です。

Sponsored links

基礎知識

関数 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