
コラム
AutoLISPで業務を効率化する 第一回【使用方法】

AutoLISPをご存じでしょうか。AutoCADを業務で使用している方なら耳にした事があると思います。耳にしたことのない方はAutoCADのExpress Toolsタブをご覧ください。
様々な機能があると思いますが、複数の図形に連続した番号を振ったり(Automatic Text Numbering)、3Dオブジェクトを2Dへ変換したり(Flatten objects)と、どれも非常に便利なものです。そして、これらの正体はAutoLISPだったりします。
AutoCADでの作図では、定められた様々なルールを基にミリ単位で図面を管理するため、業務は丁寧さや堅実さが求められますが、人手不足や迫る工期により、手早く終わらせなくてはなりません。工期に間に合わせようと急いだ結果、手戻りが増え、工期に間に合わず、成果物の質も悪い、なんてことはよく聞く話です。しかし、工期を度外視してでも丁寧に堅実にこなす、なんて訳にもいきません。どちらかを立てればどちらかが立たない、そんな作図業務を両取りできるのがAutoLISPです。
本記事では、AutoLISPを数か月学び実際に開発して業務に使用した経験を基に、使用方法から開発方法までを解説します。全2回を予定として、今回は使用方法を解説します。
AutoLISPとは
まずはAutoLISPについて。
AutoLISPは、AutoCADの機能を拡張することができるプログラミング言語です。LISPというプログラミング言語が基になっており、AutoCAD専用の関数等が追加されています。
プログラミング?
プログラミングと言われると非常にハードルが高く感じますが、AutoLISP(以下LISP)はさほどプログラミングの知識がなくても使用、開発を行うことができます。また、LISPは構文がシンプルで一貫しており、誤解を恐れずに言うならばExcel感覚で開発が可能です。業務でExcelを使っている方なら、LISPも比較的早く扱えるようになると思います。
AutoLISPは無料で開発できる
LISPはテキストエディタを使って開発可能です。
ご存知の通り、テキストエディタはWindowsのPCであれば標準搭載されているため、無料で使う事ができます。
また、AutoCADにも「Visual LISPエディタ」が標準搭載されており、様々な補助機能を使いながら開発する事ができます。
AutoLISPで何ができるのか【具体例】
AutoCAD自体にも便利な機能は様々あります。
例として、複写(COPY)コマンドの[配列]機能を使えば一定のピッチで図形を配置できます。
このように、基本的にはAutoCADの便利な機能を網羅することがCADオペレーターとし重要です。しかし、AutoCADでもどうにもならないことは存在します。
AutoCADの基本機能のみの場合
不等ピッチの線の上に円を配置したい場合はどうでしょうか。AutoCADの基本的な機能だけでは地道に貼り付けていくしか手段がないように思えます。
余談ですが、線の端点に直接配置せず、オブジェクトスナップで端点を拾って配置しています。ミスが起きた際に明らかにずれて配置されるので、見逃すことが少なくなるでしょう。この様にAutoCADの基本機能を使ってミスを放置しないような工夫はできますが、ミス自体をなくすことはできません。また、今回は10本の線分ですが、実際の配筋図の作業は100本以上の入り組んだ線分を扱う事になります。これでは疲れますし、ミスが起きる可能性、起きたミスを放置する可能性が上がってしまいます。
実際AutoLISPを知るまではこのような作業に明け暮れていました。
AutoLISPを使う場合
LISPを使えばこのようになります。
貼り付ける図形を選択、貼り付ける図形の基点を指定、貼り付け先の図形を指定、の3手順で済むのです。線の数が10000本になろうとこの手順は変わりませんが、手動で複写すると10000回クリックすることになります。
AutoLISPを使うメリット
このように、LISPを使うと繰り返し行う手順を自動化できます。手動で行う作業と異なり手ブレ等人為的なミスは起こりませんし、繰り返すはずだった作業が圧縮されるため、時間的にも体力的にも非常に楽になります。LISPファイルは読み込めば誰でも使用できるため、チームで共有することでより効率的に作図を進めることが可能です。
また、図枠や寸法スタイル等の基本様式を作図前に決めて置き、LISPで設定できるようにすれば、チーム内で何故か仕様が異なる等の不具合もなくなります。
AutoLISPを使う際の注意
LISPは大量の処理を自動で行えますが、ものによってはコマンドラインに履歴が全て残ってしまう場合があります。しかし、取り消し(UNDO)は1000工程前までしか行えません。また、場合によってはループ構造等の原因でAutoCADがフリーズしてしまう可能性があるため、事前に保存しておくようにしましょう。
その他、システム変数を変更して処理を行うLISPもあります。基本的には最後に処理前のシステム変数に戻す処理が含まれているとは思いますが、気を付けましょう。
AutoLISPの使い方
LISPファイルには、LISP式と呼ばれるコードが複数書かれており、それらが組み合わさって様々な機能を実現します。なので、極端に言えばLISP式を直接コマンドラインに入力するという使い方も可能です。基本的には、そのようなことをする必要はありませんが、開発の際には一部だけLISP式を実行したい場合、稀ですが業務中にふと思いついた際などに直接LISP式をコマンドラインに書き込み、実行することがあります。
まず、LISP式をテキストの形式で入手した場合の保存の仕方から解説し、
次にLISPファイルの読み込み方を解説していきます。
LISPファイルとして保存する方法
まず、テキストエディタを用いる場合です。
テキストエディタを開きLISP式を張り付けてください。
- ファイル名の拡張子を「.lsp」に変更します。
- エンコードは「ANSI」を選択します。
これで保存します。
次にAutoCADのVisual LISPエディタを使う方法ですが、こちらも起動後にLISP式を貼り付けます。後は名前を付けて保存から任意の位置に保存するだけで完了です。
成功すれば、以下の様なアイコンで保存されます。
※BricsCAD等、AutoLISP互換のCADソフトがPCにインストールされている場合は、アイコンがそちらのものになることがあります。
ドラッグアンドドロップ
LISPファイルを読み込む方法について解説します。
まず、ドラッグアンドドロップです。
作図領域にドラッグアンドドロップすると、このような警告が表示されます。
- 「常にロードする」を選ぶと、ロードされます。AutoCADを再起動して再度ファイルを開く際、LISPを読み込んでも警告が出なくなります。
- 「一回ロードする」を選ぶと、ロードされます。AutoCADを再起動して再度ファイルを開く際、LISPを読み込むと同じ警告が出ます。
- 「ロードしない」を選ぶと、ロードされません。再度ドロップアンドドロップしても、ロードがキャンセルされます。ロードしたい場合は、一度AutoCADを再起動すればロードできます。
|
ロード |
再起動後の警告 |
常にロードする |
される |
でない |
一回ロードする |
される |
でる |
ロードしない |
されない |
でる |
余談ですが、複数選んでドラッグアンドドロップすることも可能です。
APPLOAD コマンド
APPLOAD コマンドを使用すると、以下の様なダイアログボックスが表示されます。
- [内容]ボタン
- [追加]ボタン
- 任意のLISPファイルを指定して[開く]を押せば、スタートアップに登録され、以後は自動でロードされるようになります。
↓スタートアップに登録された状態。
管理タブから登録
- [管理]タブ→[カスタマイズ]パネル
- [ユーザーインタフェース]→[ユーザーインタフェースをカスタマイズ]ダイアログボックス
- [LISPファイル]を右クリック→[ファイルをロード]ダイアログボックスで任意のLISPファイルを選択
- [開く]を押せば自動でロードされるようになります。


[LISPファイル]の下に配置されているのが確認できます。
LISPコマンドの呼び出し方
読み込まれたLISPはコマンド名を入力すれば呼び出せます。
基本的にはファイル名がコマンド名であることが多いですが、もしそうでない場合はLISPファイルを開いて「defun C:~」と書かれている個所を探しましょう。
サンプルで言えば「test」の箇所がコマンド名になります。
AutoCADで「test」と入力すれば、(princ ~)のLISP式が起動し、コマンドラインに「Let’s get the Begining」と表示されます。
LISPファイルの入手法
LISPファイルは、どこで入手することができるのか。ネット上の様々な場所で配布されていますが、良くないことが起こりそうで怖いという方は「Lee Mac Programming 」から探すことをおすすめします。
LISP開発界隈の最大手で、2009年から今まで多くのLISPを開発・配布しています。
まとめ
AutoLISPを使えば業務を効率化できます。LISPを使用すること自体は非常に簡単に行えるので、積極的に活用してみてはいかがでしょうか。また、一通りLISPを使えるようになり、イメージが湧いてきたら次のステップ、LISPの開発に進んでみてもよいでしょう。第二回では具体的な開発方法について解説する予定です。では第二回でまた会いましょう。