ダイアログ コントロール言語(DCL) は、AutoCAD内でシンプルなグラフィカル ダイアログを作成するための高水準記述言語およびインタープリタです。AutoLISP拡張機能は、これを使用して 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 = "名前: ";
キー = "名前";
}
: 名前ボタン {
キー = "送信名";
}
: 文章 {
キー = "挨拶";
}
ok_only;
}
ダイアログは、組み込みタイル「ダイアログ」から継承して作成されます。プロパティは、ダイアログと他のウィジェットに名前/値のペアで設定されます。タイルは、名前を付けるだけで、または名前を付けて追加のプロパティを指定することで、ダイアログ内に配置できます。新しいタイル (「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 にあるすべてのコントロールを備え、Visual-LISP から呼び出してアクセスできるダイアログを VB または C# で作成できるようになりました。
外部リンク
- Jeffrey P. Sander の DCL チュートリアル
- AfraLISP DCL チュートリアル
- AutoLISP-Exchange.com Dcl ダイアログ入門
