図描きの備忘録

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

AutoCAD Lisp 入門 - 3 - よく使うコマンド処理を登録する

f:id:ekakio:20160209091418j:image

コマンド処理をLisp化

 

こんにちは!

 

エカキオです!

 

今回の記事は「Lisp」内でコマンドを使用する方法と、

その派生について紹介致します。

 

まず、今までいくつか紹介してきた( )カッコで囲われているアルファベットを関数と言います。

 

 

 

(defun 〜)

(princ *)

(setq ◯ □)

 これらです。

AutoCAD Lisp 入門 - 1 - 最強の時短ツール「Lisp」とは - 図描きの備忘録

AutoCAD Lisp 入門 - 2 - オブジェクトの情報を抽出 - 図描きの備忘録

この関数を使い分けることで、いろいろな効率化が図れるわけですね。

 

今回紹介する関数は

(command)関数です。

こちらの関数の使い方を例をあげて紹介致します。

 

例えば、座標(0,0)の位置に直径100mmの円を描きます。

これは通常のコマンド入力です。

f:id:ekakio:20160209091442p:image

これでもアイコン入力よりは早いです。

 

では、「Lisp」command関数を使って行います。

(command "circle" "0,0" "d" "100")

 解説します。

 

(command)関数は、コマンドラインにキーボード入力をしているという表現が分かりやすいかもしれません。

いや、、分かりづらいですね。

具体的に言います。

(command 〜)

この部分は関数ですね。

 

"       "←このダブルクォーテーションマークで囲われているものがキーボード入力されていると思ってください。

また、"      "この中の最後には隠れた「Enter」があると思ってください。

あとは、先ほどのコマンド入力で行っていた順番に"   "で囲むだけです。

「circle」(を入力Enter)

「0,0」(を入力してEnter)

「d」(を入力してEnter)

「100」(を入力してEnter)

f:id:ekakio:20160209091508p:image

という流れを一瞬で行っていることになります。

この作成した「command関数」をいつもの(defun 〜)に組み込んでみましょう。

(defun c:maru ()

     (command "circle" "0,0" "d" "100")

     (princ)

)

完成です。

 

command関数 応用編

 

先ほど作成したcommand関数、あれだと、(0,0)の位置にひたすら直径100mmの円を描くだけのコマンドになります。

 

そこでユーザーに指示をもらうまでコマンドが待機する方法を説明します。

「pause」

です。

これを先ほどのcommand関数に組み込みます。

(command "circle" "0,0" "d" "100")

(command "circle" pause "d" "100")

こんな感じ。

 

実行してもらうとわかりますが、コマンドラインには何も表示されません。

でも、AutoCADは待っています。

あなたの入力を。

え?

説明します。笑

f:id:ekakio:20160209092144p:image

なので、画面上のどこかをクリックするか、X,Yの座標をキーボード入力するかのどちらかをしてください。

あとあと使っていて混乱しないように、ユーザー入力待ちで求めていることを

(princ 〜)

を使って表示しておきましょう。

(defun c:maru ()

     (princ "¥n座標指定:")

     (command "circle" "0,0" "d" "100")

     (princ)

)

これでコマンドラインに説明が表示されて使いやすいです。command関数の使い方も応用できるようになりました。

 

今回はこの辺りで、一旦終わります。

次回は、ユーザー入力待ち状態にできるいろいろな関数を紹介します。

 

エカキオ

 

 

 

Related Posts Plugin for WordPress, Blogger...