DCL入門

ダイアログボックスを表示しよう!AutoCADのDCLを解説【AutoLISP】

dialog-1

今回の記事ではAutoCADのDCLについて解説していきます。

DCLを活用するとオリジナルのダイアログボックスを作成できるので、AutoLISPコマンドの入力項目が視覚的に分かりやすくなります。

また、入力の手間やミスなどを減らすことにもつながるため、ユーザーにとって使い勝手のいいプログラムを作成することが可能です。

AutoLISPを学習し始めたばかりの方には難しい内容ですが、それだけの価値がある内容ですのでぜひご覧ください。

ダイアログボックスを表示しよう!AutoCADのDCLを解説【AutoLISP】

dialog-2

DCLってなに?

DCLの特徴

  • Dialog Control Language(ダイアログコントロール言語)の略称
  • さまざま機能を持たせたオリジナルのダイアログボックスを作成できる
  • DCLが記述されたファイルをdclファイルと呼び、lspファイルとセットで使用する

DCLでは次のようなダイアログボックスを作成することができます。

dialog-1

ダイアログボックス左側のリストボックスや右側のボタンはタイルといいます。

また、DCLを記述したファイルはdclファイルと呼ばれ、タイルの種類やサイズ、レイアウトなどダイアログボックスの様々な設定を定義することができます。

しかし、dclファイルだけではダイアログボックスを表示することはできません。

必ずAutoLISPを記述したlspファイルとセットで使用し、lspファイル側でダイアログボックスを呼び出すプログラムを実行することで表示できます。

また、lspファイル側では各タイルに個別の機能を持たせることが可能です。例を挙げると次のような機能を持たせられます。

タイルの機能の例

  • ボタンを押したら特定の文字列をダイアログボックス内に表示する
  • チェックボックスがオンになるまで特定のタイルを入力禁止にする
  • ダイアログボックス内に図面の一部を拡大表示させる

DCLはどうやって書くの?

ここからはdclファイルの書き方について解説していきます。前述したダイアログボックスをDCLで書くと次のようになります。

DCLで書くとこうなります

MyDialog:dialog
{
  label = "Title";//ダイアログボックスのタイトル

  :boxed_row {//枠線ありの横並びレイアウト

    label = "box";
    :list_box {
      key = "listbox";
      width = 20;
      value = "0";
    }

    :column {//枠線なしの縦並びレイアウト

      :text {
        key = "texttile";
        width = 20;
      }
      :button {
        label = "button";
        key = "button";
        width = 20;
      }
    }
  }

  ok_cancel;//OKキャンセルボタン
}

DCLの書き方の注意点

  • 丸括弧()ではなく波括弧{}を使う
  • タイルとレイアウトの先頭には「:」を記述する
  • 「;」はコメント文ではなく、属性の区切りを表す
  • OK、キャンセルボタンがないとエラーになる
  • コメント文の先頭には「//」を記述する

DCLはAutoLISPとは異なり、丸括弧()を使わず波括弧{}を使用します。

波括弧内ではタイルの設定(属性)を記述しますが、その後ろには区切り文字として「;」を必ず記述してください。

OK、キャンセルボタンがない場合もエラーとなりますので必ず記述してください。

また、AutoLISPでは「;」以降はコメント文になりますが、DCLでは「//」以降がコメント文として扱われます。

DCLの中身をざっくり解説

それではDCLの中身についてざっくり解説していきます。タイルやレイアウトなど主なところを箇条書きにまとめましたのでよろしければご覧ください。

MyDialog:dialog {}
「MyDialog」は作成するダイアログボックスの名前です。
lspファイル側で呼び出すとき必要になります。名前の後ろには「:dialog」と記述します。
label = "Title";
ダイアログの左上に表示されるタイトルです。
この場合は"Title"と表示されます。
:boxed_row {}
{}内に記述したタイルを枠線で囲って行方向(横)に並べるレイアウトを表しています。
ちなみに「boxed_column」に置き換えると列方向(縦)に並べることが可能です。
:list_box {}
リストボックスのタイルです。
{}内にはサイズや初期値などさまざまな設定を記述できます。
:column {}
{}内に記述したタイルを列方向(縦)に並べるレイアウトを表しています。
「boxed~」とは異なり枠線は表示されません。ちなみに「row」に置き換えると行方向(横)に並びます。
:button {}
ボタンのタイルです。
リストボックスと同様、{}内にさまざまな設定を記述できます。

とりあえず表示してみよう

ダイアログボックスを表示するまでの手順

  1. dclファイルを作成する
  2. ダイアログを呼び出すプログラムをlspファイルに記述する
  3. 作成したファイルのパスを通す
  4. lspファイルをロード・実行してダイアログボックスを表示する

コードの使用や実行に関しては自己責任で行ってください。
念のため、空の新規図面で実行していただく方が安全です。

①dclファイルを作成する

本来はVisual LISPやVisual Stdio Codeなどのエディタを使用しますが、お試しということで今回はメモ帳を使用します。

上記のDCLをメモ帳にコピペし、名前を付けて保存してください。

保存先はどこでもよいですが今回はデスクトップに「autolisp」というフォルダを作成して、その中に「dcl」というフォルダを作成してください。

そして、「dcl」フォルダにファイル名を「MyDCL.dcl」として保存します。

savefolder-1

②ダイアログを呼び出すプログラムをlspファイルに記述する

上記のdclファイルと同様にlspファイルを作成します。

下のプログラムをメモ帳にコピペしてください。保存先は前述した「autolisp」フォルダに「lsp」というフォルダを作成し、ファイル名は「MyLISP.lsp」としてください。

(defun c:MyLisp (/ dcl_id dcl_file chk lst index tmp)
  
  (setq dcl_file "MyDCL.dcl")
  (setq dcl_id (load_dialog dcl_file))
  (new_dialog "MyDialog" dcl_id)
  
  (setq lst (list "good morning" "good evening" "good bye"))
  (start_list "listbox" 3)
  (mapcar 'add_list lst)
  (end_list)
  
  (action_tile "button"
    (strcat
      "(setq index (atoi (get_tile \"listbox\")))"
      "(setq tmp (nth index lst))"
      "(set_tile \"texttile\" tmp)"
    )
  )
  
  (setq chk (start_dialog))
  (unload_dialog dcl_id)
)
savefolder-2

③作成したファイルのパスを通す

「ファイルのパスを通す」とは何かというと、AutoCADへファイルがどこにあるか教える作業です。

作成したlspファイルとdclファイルがどこにあるか、その場所をAutoCADに登録します。

まず、AutoCAD左上にある「A」のマークをクリックして「オプション」を開き「ファイル」タブを選択します。

「サポート ファイルの検索パス」をクリックしハイライトしたら、右側の「追加」ボタンを押してlspファイルとdclファイルのフォルダパスを追加します。

その後「OK」ボタンを押してオプション画面を閉じてください。

option-1

ちなみに、上記のオプション画面は「ZWCAD」という互換CADのものです。

なんと世界シェアNo1!そんなZWCADについて知りたい方はこちらの記事をご覧ください。
関連記事:世界シェアNo1!AutoCAD互換ソフト「ZWCAD」のメリット5選

④lspファイルをロード・実行してダイアログボックスを表示する

それではいよいよlspファイルをロードします。赤枠の部分のコマンドラインに「(load "MyLISP.lsp")」と入力してEnterを押すとロードすることができます。

load-1

最後にコマンドラインへ「MyLISP」と入力してEnterを押せば、記事冒頭でご紹介したダイアログボックスが表示されます。

dialog-1

ちなみに、このダイアログボックスにはボタンを押すとリストでハイライトされている文字列が右上に表示される機能を持たせています。

まとめ

今回のまとめ

  • DCLはオリジナルのダイアログボックスを作成できる
  • ダイアログボックスはユーザーの使い勝手を向上させる
  • dclファイルはlspファイルとセットで使用する

今回はAutoCADのDCLについて解説してきました。

DCLはAutoLISPとセットで使用することで、オリジナルのダイアログボックスを表示できます。ユーザーの使い勝手が向上しますのでぜひ活用してみてください。

プログラミングをもっと学びたい方におすすめ

AutoLISPをより理解しやすくするためには他のプログラミング言語を覚えることをおすすめします。こちらの記事ではおすすめのオンラインプログラミングスクールを紹介していますのでぜひご覧ください。

関連記事:学習目的別にご紹介!おすすめオンラインプログラミングスクール3選

料体験もできるオンラインプログラミングスクールです!

-DCL入門

AutoLISPのおすすめ書籍はコチラ
AutoLISPのおすすめ書籍はコチラ