図描きの備忘録

日々の業務の時間短縮。残業しないで帰る事を目指し、悪戦苦闘中。AutoCAD、Lisp、効率化、自動化、合理的、プログラミング、資産運用勉強中

AutoCAD LISP 入門 - 4 - ユーザー入力待ち

f:id:ekakio:20160210130720j:image

使いやすく設定

 
こんにちは!
 
エカキオです!
 
今回はLisp内で、ユーザーの入力待ちの状態を作ります。
 
前回は「pause」というのを使いましたが、今回は少しレベルアップします。
 
 
 
 

 

(get~)
 
この(get~)にはいくつかの目的で使い分けます。
代表的なものを紹介します。
 
getint
ユーザーが整数を入力するまで待機(整数:小数点なし)
 
getreal
ユーザーが実数を入力するまで待機(実数:小数点あり)
 
getkword
ユーザーがキーワードを入力するまで待機
 
getpoint
ユーザーが点を入力するまで待機
 
getstring
ユーザーが文字列を入力するまで待機
 
です。
英語の意味を考えていただけると少し覚えやすいかもしれません。
 
 
前回のcommand関数を(getpoint)を使って書き換えてみましょう。
 
(defun c:maru ()
      (setq p1 (getpoint" 基点を指定:"));基点をp1に保存
      (command "circle" p1 "d" "100");pauseの代わりにp1を入れる
      (princ)
)
 
3点ほど注記します。
 
  • (get~ " ")←この" "を入れることで、説明文を付けてユーザー待ち状態にできます。
 
  • 「;」←セミコロンマークの右側は全て無効として扱われますので、メモ書きとして使用しましょう。
 
  • (command "circle" p1 "d" "100")←「p1」に注目すると" "で囲っていません。変数を入れる時は囲う必要なしです。
 
 
もう一つくらい例を上げます。
 
今度は(getreal~)を使ってみましょう。
 
(defun c:maru ()
      (setq d1 (getreal" 直径を入力:"));直径(実数)をd1に保存
      (command "circle" "0,0" "d" d1);d1で直径を指定
      (princ)
)
 
詳しくは解説しませんが、(get~)関数の使用の仕方は理解できましたか?
 
 

変数のリセット

 
この記事でも変数をいくつか利用しています。
 
p1d1
 
これはAutoCADを開いている間自動ではリセットされません。
 
もし大量のLispコマンドを作成したら、別のLispコマンド内で
同じ変数を使ってしまうことが考えられます。
そうすると、意図していた結果にならず、しかも大量のデータから
同じ変数を探すのは大変な労力ですよね。。。
 
そこで、Lispコマンドの中で毎回リセットする方法を説明します。
 
先ほどの直径を「d1」としたもので説明します。
 
(defun c:maru (○/d1);←ここに変数を記入、○の部分は半角スペースを入れる。
      (setq d1 (getreal" 直径を入力:"));直径(実数)をd1に保存
      (command "circle" "0,0" "d" d1);d1で直径を指定
      (princ)
)
 
簡単です。初めのコマンド名を定義した()を( / )として、
「/」スラッシュの右側にLisp内で使用しているものを全て書きます。
 
複数変数を利用している場合は、半角スペースで区切って書きます。
 
p1d1を同時に使ったとした場合。
 
(defun c:maru ( /p1 d1);p1d1を書いてください。
      (setq p1 (getpoint" 基点を指定:"));基点をp1に保存
      (setq d1 (getreal" 直径を入力:"));直径(実数)をd1に保存
      (command "circle" p1 "d" d1);
 (princ)
)
 
これで完了です。
 

プログラミング

 
上の例題は理解していただけましたでしょうか?
ここまで来ると、プログラム書いてるぜー!
って気がして来ないですか?
 
ただ、上の例は変数に入れても入れなくても、動作としては同じですね。
入力するタイミングが違うくらいです。
 
今後は、もう少し深いところを紹介していければと思います。
プログラミングではよくある、条件分岐や繰り返し動作などを解説していく予定です。
あと、前の記事のオブジェクト情報の利用の仕方ですね。
 
いやぁ、覚えることたくさんですね。
 
それでは、この辺で。
 
エカキオ

 

 

 

 
Related Posts Plugin for WordPress, Blogger...