DCL関数 関数解説

DCLでダイアログボックスにタイルを表示しよう!【AutoCAD】

tile-6

こんな方に向けた記事です

  • ダイアログボックスにはどんなタイルが使えるの?
  • DCLではどうやってタイルを記述するの?
はこ
はこ

こんにちは!はこです。
AutpLISPを独学し、5年以上業務で使用しています。

今回の記事ではダイアログボックスに表示できるタイルをご紹介していきます。

DCLで表示できるタイルには様々なものがあり、これらを組み合わせてレイアウトを整えればオリジナルのダイアログボックスを作成することが可能です。

ちなみにダイアログボックスのレイアウトについてはこちらの記事で解説しています。
関連記事:ダイアログボックスのレイアウトをDCLで変更しよう!【AutoCAD】

ダイアログボックスにタイルは無くてならないものなのでぜひご覧ください。

記事で紹介しているプログラムの使用で発生したいかなる損害やトラブルについて一切の責任を負いかねます。まず、空の図面でテストすることを推奨します。

DCLでダイアログボックスにタイルを表示しよう!【AutoCAD】

tile-5

テキストタイル text

textの特徴は?

  1. 文字列を表示できる

「text」はダイアログボックスに文字列を表示することができます。ただし、表示だけなので直接編集することはできません。編集をしたい場合は後述する「edit_box」を使用します。

textの使い方は?

textの使用例

dclファイル側でlabelに「text_text_text」と記述しているので「text_text_text」が初期値としてダイアログボックスに表示されます。

lspファイル側で文字列を変えたい場合は「set_tile」を使用して文字列を入力してください。

「set_tile」って何?という方はこちらの記事をご覧ください。
関連記事:タイルを使いこなそう!DCLのタイル処理関数を解説【AutoCAD】

表示されるダイアログボックス
text
lspファイル側
(defun c:test (/ dcl-file dcl-id)
  (setq dcl_file "test-tile.dcl")
  (setq dcl_id (load_dialog dcl_file))
  (new_dialog "test_tile" dcl_id)
  
  (start_dialog)
  (unload_dialog dcl_id)
)
dclファイル側
test_tile:dialog {
  label = "text";
  :text {
    label = "text_text_text";
    key = "text-1";
  }
  ok_cancel;
}

編集ボックス edit_box

edit_boxの特徴は?

  1. 文字列の入力または編集するボックスを表示できる
  2. ダイアログボックス上で文字列の編集ができる

「edit_box」はダイアログボックスに文字列の入力または編集ができるボックスを表示することができます。

「text」とは異なりダイアログボックス上で文字列の編集が可能なので、汎用性が高く使い勝手のいいタイルです。返り値では文字列として扱われますが数値の入力または編集も可能です。

edit_boxの使い方は?

edit_boxの使用例

dclファイル側への記述は「text」と同様です。編集ボックス内の文字列を取得したい場合はlspファイル側で「get_tile」を使用します。

「get_tile」について知りたい方はこちらの記事をご覧ください。
関連記事:タイルを使いこなそう!DCLのタイル処理関数を解説【AutoCAD】

表示されるダイアログボックス
edit_box
lspファイル側
(defun c:test (/ dcl-file dcl-id)
  (setq dcl_file "test-tile.dcl")
  (setq dcl_id (load_dialog dcl_file))
  (new_dialog "test_tile" dcl_id)
  
  (start_dialog)
  (unload_dialog dcl_id)
)
dclファイル側
test_tile:dialog {
  label = "edit_box";
  :edit_box {
    label = "edit_box";
    key = "edit_box-1";
  }
  ok_cancel;
}

トグルボタン toggle

toggleの特徴は?

  1. チェックボックスを表示できる

「toggle」はダイアログボックスにチェックボックスを表示することが可能です。チェックボックスとは選択するとレ点を表示するボックスを表しています。

「get_tile」で取得できる値は文字列の"0"または"1"のどちらかです。レ点がない状態が"0"、レ点が表示されている状態が"1"に対応しています。

toggleの使い方は?

toggleの使用例
表示されるダイアログボックス
toggle
lspファイル側
(defun c:test (/ dcl-file dcl-id)
  (setq dcl_file "test-tile.dcl")
  (setq dcl_id (load_dialog dcl_file))
  (new_dialog "test_tile" dcl_id)
  
  (start_dialog)
  (unload_dialog dcl_id)
)
dclファイル側
test_tile:dialog {
  label = "toggle";
  :toggle {
    label = "toggle";
    key = "toggle-1";
  }
  ok_cancel;
}

ラジオボタン radio_button

radio_buttonの特徴は?

  1. ラジオボタンを表示できる
  2. クラスタ(グループ)内でオンにできるラジオボタンは1つだけ

「radio_button」はダイアログボックスにラジオボタン表示することができます。「toggle」と同様で 「get_tile」を使って取得できる値は文字列の"0"または"1"のどちらかです。

「toggle」は複数のチェックボックスをオンの状態にできますが、「radio_button」の場合オンにできるものはクラスタ(グループ)内で1つだけです。

クラスタについてはこちらの記事で解説していますのでよろしければご覧ください。
関連記事:ダイアログボックスのレイアウトをDCLで変更しよう!【AutoCAD】

radio_buttonの使い方は?

radio_buttonの使用例
表示されるダイアログボックス
radio_button
lspファイル側
(defun c:test (/ dcl-file dcl-id)
  (setq dcl_file "test-tile.dcl")
  (setq dcl_id (load_dialog dcl_file))
  (new_dialog "test_tile" dcl_id)
  
  (start_dialog)
  (unload_dialog dcl_id)
)
dclファイル側
test_tile:dialog {
  label = "radio_button";
  :radio_button {
    label = "radio_button";
    key = "radio_button-1";
  }
  ok_cancel;
}

スライダー slider

sliderの特徴は?

  1. 数値取得のスライダーを表示できる

「slider」は左右または上下に動かして数値取得できるスライダーを表示します。

表示できるのはスライダーのみなので現在値を知るためには前述した「text」や「edit_box」と組み合わせる必要があります。

sliderの使い方は?

sliderの使用例

dclファイル側の「min_value」「max_value」でスライダーの最小値、最大値を設定することができます。また、「small_increment」ではスライダーの両サイドにある三角マークをクリックした際に変化する最小単位を変更可能です。

表示されるダイアログボックス
slider
lspファイル側
(defun c:test (/ dcl-file dcl-id num)
  (setq dcl_file "test-tile.dcl")
  (setq dcl_id (load_dialog dcl_file))
  (new_dialog "test_tile" dcl_id)
  
  (action_tile "slider-1"
    (strcat
      "(setq num (get_tile \"slider-1\"))"
      "(set_tile \"text-1\" num)"
    )
  )
  
  (start_dialog)
  (unload_dialog dcl_id)
)
dclファイル側
test_tile:dialog {
  label = "slider";
  :slider {
    label = "slider";
    key = "slider-1";
    min_value = 0;
    max_value = 100;
    small_increment = 5;
    big_increment = 20;
  }
  :text {
    label = 0;
    key = "text-1";
  }
  ok_cancel;
}

ポップアップリスト popup_list

popup_listの特徴は?

  1. ポップアップリストを表示できる

「popup_list」はダイアログボックスにポップアップリストを表示することが可能です。ポップアップリストの内容はlspファイル側でリスト形式のデータを入力することで表示できます。

popup_listの使い方は?

popup_listの使用例

ポップアップリストにリストを流し込むにはlspファイル側で次のプログラムを記述します。

(start_list "popup_list-1" 3)
(mapcar 'add_list lst)
(end_list)

「start_list」でポップアップリストの処理を開始されます。「mapcar」と「add_list」を使用して変数lstのデータが順次追加され「end_list」で処理を終了します。

表示されるダイアログボックス
popup_list
lspファイル側
(defun c:test (/ dcl-file dcl-id str lst)
  (setq dcl_file "test-tile.dcl")
  (setq dcl_id (load_dialog dcl_file))
  (new_dialog "test_tile" dcl_id)
  
  (setq lst (list "one" "two" "three"))
  (start_list "popup_list-1" 3)
  (mapcar 'add_list lst)
  (end_list)
  
  (start_dialog)
  (unload_dialog dcl_id)
)
dclファイル側
test_tile:dialog {
  label = "popup_list";
  :popup_list {
    label = "popup_list";
    key = "popup_list-1";
  }
  ok_cancel;
}

リストボックス list_box

list_boxの特徴は?

  1. リストボックスを表示できる

「list_box」はリストボックスを表示することができます。「popup_list」と同様にlspファイル側でリスト形式のデータを入力することで内容を表示します。

list_boxの使い方は?

list_boxの使用例
表示されるダイアログボックス
list_box
lspファイル側
(defun c:test (/ dcl-file dcl-id str lst)
  (setq dcl_file "test-tile.dcl")
  (setq dcl_id (load_dialog dcl_file))
  (new_dialog "test_tile" dcl_id)
  
  (setq lst (list "one" "two" "three"))
  (start_list "list_box-1" 3)
  (mapcar 'add_list lst)
  (end_list)
  
  (start_dialog)
  (unload_dialog dcl_id)
)
dclファイル側
test_tile:dialog {
  label = "list_box";
  :list_box {
    label = "list_box";
    key = "list_box-1";
  }
  ok_cancel;
}

まとめ

今回はダイアログボックスに表示できるタイルをご紹介しました。

ぜひ、これらのタイルを組み合わせてオリジナルのダイアログボックスを作成してみてください。

はこ
はこ

きっと楽しくなりますよ。

DCLの記述内容タイルの表示例
:text{} 文字列を表示するtext
:edit_box{} 文字列の入力または編集が
できるボックスを表示する
edit_box
:toggle{} チェックボックスを表示するtoggle
:radio_button{}ラジオボタンを表示するradio_button
:slider{} 数値取得のスライダーを表示するslider
:popup_list{} ポップアップリストを表示するpopup_list
:list_box{} リストボックスを表示するlist_box

記事の内容やAutoLISP、DCLのことでよく分からないところがあるようでしたらコメントやメールでお気軽にご連絡ください!

はこ
はこ

お待ちしております。

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

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

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

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

AutoCADが楽になるプログラムを作成します AutoCADを効率化して面倒な作業から解放されましょう!

-DCL関数, 関数解説