例: ダイアログ ボックスの概要(DCL)

この例では、AutoLISP を使用して基本的なダイアログ ボックスを作成し、表示する方法を説明します。

注: AutoLISP での DCL のサポートは Windows のみに制限されています。

DCL ファイルを作成する

この DCL は、テキスト タイルと 1 つの[OK]ボタンを含む、サンプル ダイアログ ボックスというラベルのダイアログ ボックスを定義しています。この DCL コードを hello.dcl という名前のファイルに格納します。

  1. 次のコードをクリップボードにコピーします。

    DCL コードをハイライト表示して[Ctrl]+[C]を押すか、右クリックして[コピー]をクリックします。

    hello : dialog
    {
      label = "Sample Dialog Box";
      : text {
        label = "Hello, world.";
      }
      ok_only;
    }
  2. Visual LISP エディタで、[ファイル] [ファイルを新規作成]をクリックします。
  3. 新しいエディタ ウィンドウで、[Ctrl]+[V]を押すか、右クリックして[貼り付け]をクリックします。
  4. [ファイル] [名前を付けて保存]をクリックします。[名前を付けて保存]ダイアログ ボックスの[ファイルの種類]ドロップ ダウン リストで、[DCL ソース ファイル]を選択します。[ファイル名]フィールドに、hello.dcl と入力します。DCL ファイルを保存する場所を開き、[保存]をクリックします。
    注: DCL ファイルは、必ず AutoCAD サポート ファイル検索パス内のフォルダの 1 つに保存する必要があります。

ダイアログ ボックスを表示し、ユーザによる[OK]の選択に応答する

  1. 次のコードをクリップボードにコピーします。
    DCL コードをハイライト表示して[Ctrl]+[C]を押すか、右クリックして[コピー]をクリックします。
    (defun C:HELLO ( / dcl_id )
      (setq dcl_id (load_dialog "hello.dcl")) ; Load the DCL file.
      (if (not (new_dialog "hello" dcl_id))   ; Initialize the dialog.
        (exit)                                ; Exit if this does not work.
      )
      (start_dialog)                          ; Display the dialog box.
      (unload_dialog dcl_id)                  ; Unload the DCL file.
     (princ)
    )
  2. Visual LISP エディタで、[ファイル] [ファイルを新規作成]をクリックします。
  3. 新しいエディタ ウィンドウで、[Ctrl]+[V]を押すか、右クリックして[貼り付け]をクリックします。
  4. [ファイル] [名前を付けて保存]をクリックします。[名前を付けて保存]ダイアログ ボックスの[ファイルの種類]ドロップ ダウン リストで、[LISP ソース ファイル]を選択します。[ファイル名]フィールドに、hello.lsp と入力します。LSP ファイルを保存する場所を開き、[保存]をクリックします。
    注: LSP ファイルは、必ず AutoCAD サポート ファイル検索パス内のフォルダの 1 つに保存する必要があります。
  5. [ツール] [エディタ内のテキストをロード]をクリックします。
  6. コマンド プロンプトに対して hello と入力し、[Enter]を押します。
  7. サンプル ダイアログボックスで[OK]をクリックします。

次に、AutoLISP の動作を 1 行ごとに説明します。

start_dialog の呼び出しは、ユーザがボタンなどのタイルを選択し、そのタイルに関連付けられているアクション式が done_dialog を呼び出すまでアクティブなままです。done_dialog の呼び出しは、タイルによって明示的に発行できます。また、is_cancel 属性に true が設定されている場合は、選択したタイルによって done_dialog の呼び出しを発行することもできます。

注意: 理論的には、ダイアログ ボックスの機能は start_dialog を呼び出した時点で入力コントロールを得ますが、オペレーティング システムでは、new_dialog を呼び出したときにコントロールを得ます。プログラムを書くときには、このことを考慮する必要はありませんが、これらの関数を対話的に呼び出す場合は(AutoCAD のコマンド プロンプトから呼び出す場合)、1 つの文として入力する必要があります。これらの関数は、progn または別の関数内に囲んで入れてください。さもないと、new_dialog を対話的に呼び出したときに画面表示が停止する可能性があります。デバッグ中は、new_dialogstart_dialog を対話的に呼び出すと便利です