ダイアログ制御言語(DCL)は、 AutoCAD内でシンプルなグラフィカルダイアログを作成するための高水準記述言語およびインタープリタです。AutoLISP拡張機能は、DCLを使用してAutoCAD環境でユーザーと対話します。
機能と使用方法
他の主要なGUI APIとは異なり、DCLはアプリケーションプログラミングのための完全なGUIツールキットではありません。AutoCAD内でシンプルなダイアログを提供することのみを目的としています。テキストボックス、ボタン、チェックボックス、リストボックスといった基本的なフォームウィジェットが含まれています。DCLはオブジェクト指向であり、継承と合成による再利用が可能です。
DCL構文は「タイル」の定義と使用に基づいています。「タイル」は、テキストボックスやテキストラベルなどのGUIウィジェットを表します。タイルはまた、列、ラジオボタングループ、ダイアログ自体など、他のウィジェットを保持するウィジェットも表します。DCLはすべての主要なウィジェットに組み込みのタイルを提供しており、他のタイルの継承と合成によって新しいタイルを定義できます。
DCLでは、実行時にLispコードでダイアログと対話できます。特定のウィジェットには、実行するAutoLISP関数とそれに渡す値を指定することにより、アクションを関連付けることができます。他の種類のGUIとは異なり、DCLダイアログは実行時に大幅に変更することはできません。テキストボックスやリストボックスなどの特定のウィジェットの内容は変更できますが、ウィジェットをダイアログから削除したり、ダイアログに追加したりすることはできません。
例
以下は、 DCL の主な機能を示す DCL ファイル (および付随するAutoLISPファイル)の例です。
name_button : ボタン { label = "名前を送信"; action = "(名前の変更)"; } こんにちは:ダイアログ{ label = "DCL の例"; : 編集ボックス { label = "名前: "; キー = "名前"; } : 名前ボタン { key = "送信名"; } : 文章 { キー = "挨拶"; } ok_only; } ダイアログは、組み込みタイル「dialog」を継承して作成されます。ダイアログとその他のウィジェットには、名前と値のペアでプロパティが設定されます。タイルは、名前を付けるだけでダイアログ内に配置することも、名前を付けて追加のプロパティを指定することもできます。新しいタイル(「name_button」)は、名前を付けてプロパティを指定することで定義されます。
; DCL は "hello.dcl" ( defun change-name () ( set_tile "greeting" ( strcat "Hello, " ( get_tile "name" ) "!" )))として保存されます( setq hello-dcl ( load_dialog "hello.dcl " )) ( new_dialog "hello" hello-dcl ) ( start_dialog ) ( unload_dialog hello-dcl )DCLダイアログは、AutoLispファイル内の一連の関数を呼び出すことでインスタンス化されます。タイルは特定のイベントでAutoLISPコードにコールバックすることができ、ダイアログの実行中にLispでタイルの内容を操作できます。
代替技術
CAD内でより汎用的なGUIやその他の拡張機能を作成するために、AutoDeskは他にもいくつかの選択肢を提供しています。C ++用のObjectARX APIを使用すると、Microsoft Visual Studio内と同様に拡張機能を構築できます。VBAを使用すると、 Microsoft Officeなどのアプリケーションと同様に、AutoCADでドラッグアンドドロップによるプログラミングが可能です。
AutoCAD 2007以降では、AutoLISPまたはVisual-LISPプログラムからVisual Studio .NET(VBまたはC#)で記述されたルーチンを呼び出すことができます。プログラマーは、.NETフォームAPIに含まれるすべてのコントロールを備えたダイアログをVBまたはC#で作成し、Visual-LISPから呼び出してアクセスできるようになりました。