| 家族 | リスプ |
|---|---|
| デザイン: | デビッド・ベッツ |
| 開発者 | オートデスク、ベーシスソフトウェア |
| 初登場 | 1986年1月 |
| 安定版リリース | 1995年2月13日 |
| タイピングの規律 | 動的 |
| 範囲 | 動的 |
| プラットフォーム | IA-32 |
| OS | リナックス |
| 方言 | |
| Vital-LISP、ビジュアルLISP | |
| 影響を受けた | |
| Lisp、XLISP | |
AutoLISPはプログラミング言語Lispの方言であり、AutoCADのフルバージョンとその派生製品(AutoCAD Civil 3D、AutoCAD Map 3D、AutoCAD Architecture、AutoCAD Mechanicalなど)で使用するために特別に構築されています。[1] AutoLISPコードを実行するためのアプリケーションプログラミングインタフェース(API)もインタープリタも、 AutoCAD LT製品ラインには含まれていません(リリース2023まで、AutoCAD LT 2024にはAutoLISPが含まれています)。[2] AutoLISP関数のサブセットは、ブラウザベースのAutoCAD Webアプリに含まれています。
特徴
AutoLISP は、ガベージ コレクション、不変リスト構造、設定可能なシンボルを備えた、小さく、動的スコープと動的型付けを持つ Lisp 言語方言です。マクロシステム、レコード定義機能、配列、可変数の引数を持つ関数、let バインディングなどの通常の Lisp 機能は備えていません。コア言語を除けば、プリミティブ関数のほとんどは、ジオメトリ、AutoCAD の内部DWGデータベースへのアクセス、または AutoCAD のグラフィカル エンティティの操作に使用されます。これらのグラフィカル エンティティのプロパティは、AutoLISP に連想リストとして公開されます。連想リストでは、定義ポイント、半径、色、画層、線種などのプロパティを示す AutoCADグループ コードと値がペアになっています。AutoCAD は、AutoLISP コードを .LSP ファイルから読み込みます。[3]
AutoLISP コードは、AutoCAD のグラフィカル エディタを介して、ポイントの選択、画面上のオブジェクトの選択、数値やその他のデータの入力を可能にするプリミティブ関数を使用して、ユーザーと対話できます。AutoLisp には、AutoCAD 内で自動レイアウトのモーダル ダイアログ ボックスを作成するための、グラフィカル ユーザー インターフェイス(GUI) ミニ言語またはドメイン固有言語(DSL)であるダイアログ コントロール言語も組み込まれています。[3]
歴史
AutoLISP は、David Betz によって作成されたXLISPの初期バージョンから派生したものです。 [4]この言語は、1986 年 1 月に AutoCAD バージョン 2.18 で導入され、1995 年 2 月のリリース 13 まで、リリースごとに機能強化が続けられました。その後、Autodeskでは、 Visual Basic for Applications (VBA)、. NET Framework、ObjectARXなどのより流行の開発環境を優先し、 AutoLISP の開発は行われなくなりました。しかし、AutoLISP は、AutoCAD の主要なユーザー カスタマイズ言語であり続けています。
Vital-LISP は、統合開発環境(IDE)、デバッガ、コンパイラ、およびActiveXサポートを含む AutoLISP の大幅に強化されたバージョンであり、サードパーティの開発会社 Basis Software によって開発および販売されました。Vital LISP は、既存の AutoLISP 言語のスーパーセットであり、AutoCAD オブジェクト モデル、リアクタ (AutoCAD オブジェクトのイベント処理)、一般的な ActiveX サポート、およびその他の一般的な Lisp 関数への VBA のようなアクセスが追加されました。Autodesk はこれを購入し、Visual LISPと名前を変更して、1997 年 5 月にリリースされた AutoCAD リリース 14 のアドオンとして短期間販売しました。これは、1999 年 3 月にリリースされた AutoCAD 2000 に組み込まれ、AutoLISP の代替となりました。それ以来、Autodesk はVisual LISP への主要な機能強化を中止し、VBA と.NET、およびC++に力を入れています。[アップデート]オートデスクは、ユーザーカスタマイズのためにVBAから.NETへ移行する長期プロセスの一環として、2014年1月31日をもってVBA 7.1より前のバージョンのサポートを終了しました。 [5] [6]
AutoLISP の支持者は非常に多く、他のコンピュータ支援設計(CAD) アプリケーション ベンダーも自社製品に AutoLISP を追加しています。Bricscad 、IntelliCAD、DraftSightなどにも AutoLISP 機能が搭載されているため、AutoLISP ユーザーは AutoCAD の代替としてこれらを検討できます。AutoCAD 2000 以降、AutoLISP を使用した開発のほとんどは Visual LISP 内で行われています。これは、元の AutoLISP エンジンが Visual LISP エンジンに置き換えられたためです。AutoLISP または Visual LISP を使用して開発されたユーティリティやアプリケーションは数千に上ります (LSP、FAS、VLX ファイルとして配布)。[7] [8]
例
AutoLISP での 簡単なHello world プログラムは次のようになります。
( defun hello ( )
( princ "\nHello World!" )
(プリンク)
)
関数定義内の最後の行に注意してください。引数なしで評価されると、関数はprincヌル シンボルを返しますが、これは AutoCAD のコマンド ライン インターフェースでは表示されません。AutoCAD コマンド ラインは読み取り、評価、印刷のループ(REPL) として機能するため、通常はコマンド ラインに「Hello World!」が印刷され、その後すぐに の呼び出しの戻り値が続きますprinc。したがって、関数への最後の呼び出しがない場合princ、この結果は次のようになります。
Hello World!"\nHello World!"
このprin1関数を使用して同じ結果を得ることもできます。
より複雑な例は次のとおりです。
( defun c:pointlabel ( / pnt )
( if ( setq pnt ( getpoint "\nポイントを指定: " ))
(プログン
(エントメイク
(リスト
' ( 0 . "ポイント" )
(定数10 (トランザクションポイント1 0 ))
)
)
(エントメイク
(リスト
' ( 0 . "テキスト" )
(コンス10 (トランス(コンス( + (車点) 0.6 ) ( cdr点)) 1 0 ))
( cons 40 ( getvar 'テキストサイズ))
( cons 1 ( strcat "X:" ( rtos ( car pnt )) " Y:" ( rtos ( cadr pnt ))))
)
)
)
)
(プリンク)
)
上記のコードは、指定されたポイントに AutoCAD ポイント オブジェクトを生成する新しい関数を定義します。この関数には、X 座標と Y 座標を表示する 1 行のテキスト オブジェクトが横に表示されます。関数の名前には特別なプレフィックス「c:」が含まれており、これにより AutoCAD は関数を通常のコマンドとして認識します。AutoCAD コマンド ラインで「pointlabel」と入力すると、X 座標と Y 座標を入力するか、図面内の場所をクリックしてポイントを選択するように求められます。関数は、そのポイントにマーカーを配置し、アクティブなユーザ座標系 (UCS) を基準にして表現されたポイントの X 座標と Y 座標を含む 1 行のテキスト オブジェクトをその隣に作成します。関数にはパラメータは必要なく、1 つのローカル変数(「pnt」) が含まれます。
上記の例は、AutoCAD の組み込みコマンドを使用して記述して同じ結果を得ることもできますが、この方法は AutoCAD のリリース間でコマンド プロンプトが変更される影響を受けやすくなります。
参考文献
- ^ 「AutoLISP」 。 2014年4月14日閲覧。
- ^ 「AutoCAD LT vs. AutoCAD」。2014年4月15日時点のオリジナルよりアーカイブ。 2014年4月14日閲覧。
- ^ ab 「AutoLISP 開発者ガイド」(PDF) 。2014 年4 月 14 日閲覧。
- ^ 「AutoLISP の歴史」。
- ^ 「Microsoft Visual Basic for Applications モジュール FAQ」 。2014年4 月 14 日閲覧。
- ^ 「AutoCAD 2011 での VBA サポート」。2014 年 4 月 15 日時点のオリジナルよりアーカイブ。2014 年4 月 14 日閲覧。
- ^ 「BricsCAD バージョン比較」。2014年3月15日時点のオリジナルよりアーカイブ。2014年4月14日閲覧。
- ^ 「IntelliCAD CAD プラットフォーム - 機能と利点」 。2014年4 月 14 日閲覧。
外部リンク
- AutoLISP よくある質問
