TOP PAGE > 記事閲覧
LISPについて
投稿日 | : 2016/08/05(Fri) 10:42 |
投稿者 | : アルサポ |
参照先 | : |
この掲示板を立ち上げて1年位経ちますが、LISPのコマンドは色々と紹介してきましたが、
気づけばLISPの良さについては、あまり紹介してこなかったように思います。
そこでLISPについて少し(私自身あまり詳しくはないのですが)説明する事にします。
まず、LISPとは正式にはAutoLISPと言って、LISPをベースとしたプログラミング言語です。
私は面倒くさがってAutoLISPをLISPと呼んでいますが、インターネットでは正式名称の
「AutoLISP」で検索しないと、ベースの「LISP」の方がヒットされるのでご注意が必要です。
長所としては、テキストエディタ(メモ帳など)で作成できる点ではないでしょうか?
初め易いし、インターネットに書いてある便利コマンドもソースを貼り付けて
保存(拡張子は.lsp)するだけで使う事が出来る手軽さが、私はとても気に入っています。
(テキストエディタは様々なものがありますが、おすすめは秀丸です。LISPに対応し、
CADへドラッグ&ドロップする事でファイルロードの手間が省けます。)
LISPに関しての書籍は少ないですが、プログラム言語としては簡単で扱いやすい方だと思います。
プログラムを書いた事がない方などには、ハードルが高いかもしれませんが、
CADで図面を引く方には、特にLISPを勉強する事をお勧めします。
Re: はじめのLISPにどうですか?
投稿日 | : 2016/08/05(Fri) 10:52 |
投稿者 | : アルサポ |
参照先 | : |
LISPに挑戦するのであれば、まず「Hello, world!」を表示させるのは
どうでしょうか?
・・・冗談です、私が思うにコマンドラインに組み込みコマンドを送る関数を
利用した連続処理を学ぶのがお勧めです。
まずは、LISPの書き方をザックリ説明しておきます。下記のような形になります。
(defun C:○○()
(プログラムの内容)
)
カッコ書きの中に「defun C:○○()」とプログラムの内容を書けば動きます(内容があっていれば!)。
「○○」については、CADのコマンドラインに「○○」とコマンドを入力すれば、実行するコマンド名になります。
※作成したLISPファイルは、一度CADにロードさせる必要があります。ロード方法を知りたい場合は、
http://r-support.org/bbs/patio.cgi?read=152&ukey=0 に方法が書いてありますので参考にして下さい。
それでは、まず実際のCADの組み込みコマンドについて見てみます。
例えば線分を引く場合、ボタンを押して実行、またはメニューバーから線分を指定して実行すると、
コマンドラインに「_line」と表示されます。この文字が組み込みコマンドになります。
次に線分の起点を指示して、最後に終点を指示して、(色々ありますがとりあえず)Enterキーを押すと終了。
これをLISPで書くと
(defun C:Test()
;線分を引く。pauseはユーザーの入力を待つ定数。
(command "_line" pause pause "")
)
となります。「;」以降(1行)の文字はプログラムに実行されません。メモ書き(コメント)に使います。
(command "_line" pause pause "")の部分に注目すると
commandはコマンドラインにコマンドを送る関数です。それ以降の文は、先ほどのCADで線分を引いた手順と同じです。
コマンドラインに送る文字は"で囲む必要があり、2つ連続で並んである""はEnterキーを意味しています。
次に、移動コマンドを追加してみましょう!
CADでは「_move」コマンドが実行され、移動させるオブジェクトを選択、Enterキーを押して選択完了、
基点を指示して、移動先を指示します。これを先ほどのLISPに追加してみましょう。
(defun C:Test()
;線分を引く。pauseはユーザーの入力を待つ定数。
(command "_line" pause pause "")
;移動する。lの意味は選択オプションの最後(L)。
(command "_move" "l" "" pause pause)
)
になります。これもCADでの手順そのままです。
これを踏まえると、やりたいコマンドを一度CADで確認して、
その手順通りLISPに書くと同じ事が出来ます。
これだけの簡単なLISPでも単純な連続した作業に役に
立つと思いませんか?
是非、試してみてはどうでしょうか