こんな方に向けた記事です
- ダイアログボックスにはどんなタイルが使えるの?
- DCLではどうやってタイルを記述するの?
こんにちは!はこです。
AutpLISPを独学し、5年以上業務で使用しています。
今回の記事ではダイアログボックスに表示できるタイルをご紹介していきます。
DCLで表示できるタイルには様々なものがあり、これらを組み合わせてレイアウトを整えればオリジナルのダイアログボックスを作成することが可能です。
ちなみにダイアログボックスのレイアウトについてはこちらの記事で解説しています。
関連記事:ダイアログボックスのレイアウトをDCLで変更しよう!【AutoCAD】
ダイアログボックスにタイルは無くてならないものなのでぜひご覧ください。
DCLでダイアログボックスにタイルを表示しよう!【AutoCAD】
テキストタイル text
textの特徴は?
- 文字列を表示できる
「text」はダイアログボックスに文字列を表示することができます。ただし、表示だけなので直接編集することはできません。編集をしたい場合は後述する「edit_box」を使用します。
textの使い方は?
textの使用例
dclファイル側でlabelに「text_text_text」と記述しているので「text_text_text」が初期値としてダイアログボックスに表示されます。
lspファイル側で文字列を変えたい場合は「set_tile」を使用して文字列を入力してください。
「set_tile」って何?という方はこちらの記事をご覧ください。
関連記事:タイルを使いこなそう!DCLのタイル処理関数を解説【AutoCAD】
(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)
)
test_tile:dialog {
label = "text";
:text {
label = "text_text_text";
key = "text-1";
}
ok_cancel;
}
編集ボックス edit_box
edit_boxの特徴は?
- 文字列の入力または編集するボックスを表示できる
- ダイアログボックス上で文字列の編集ができる
「edit_box」はダイアログボックスに文字列の入力または編集ができるボックスを表示することができます。
「text」とは異なりダイアログボックス上で文字列の編集が可能なので、汎用性が高く使い勝手のいいタイルです。返り値では文字列として扱われますが数値の入力または編集も可能です。
edit_boxの使い方は?
edit_boxの使用例
dclファイル側への記述は「text」と同様です。編集ボックス内の文字列を取得したい場合はlspファイル側で「get_tile」を使用します。
「get_tile」について知りたい方はこちらの記事をご覧ください。
関連記事:タイルを使いこなそう!DCLのタイル処理関数を解説【AutoCAD】
(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)
)
test_tile:dialog {
label = "edit_box";
:edit_box {
label = "edit_box";
key = "edit_box-1";
}
ok_cancel;
}
トグルボタン toggle
toggleの特徴は?
- チェックボックスを表示できる
「toggle」はダイアログボックスにチェックボックスを表示することが可能です。チェックボックスとは選択するとレ点を表示するボックスを表しています。
「get_tile」で取得できる値は文字列の"0"または"1"のどちらかです。レ点がない状態が"0"、レ点が表示されている状態が"1"に対応しています。
toggleの使い方は?
toggleの使用例
(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)
)
test_tile:dialog {
label = "toggle";
:toggle {
label = "toggle";
key = "toggle-1";
}
ok_cancel;
}
ラジオボタン radio_button
radio_buttonの特徴は?
- ラジオボタンを表示できる
- クラスタ(グループ)内でオンにできるラジオボタンは1つだけ
「radio_button」はダイアログボックスにラジオボタン表示することができます。「toggle」と同様で 「get_tile」を使って取得できる値は文字列の"0"または"1"のどちらかです。
「toggle」は複数のチェックボックスをオンの状態にできますが、「radio_button」の場合オンにできるものはクラスタ(グループ)内で1つだけです。
クラスタについてはこちらの記事で解説していますのでよろしければご覧ください。
関連記事:ダイアログボックスのレイアウトをDCLで変更しよう!【AutoCAD】
radio_buttonの使い方は?
radio_buttonの使用例
(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)
)
test_tile:dialog {
label = "radio_button";
:radio_button {
label = "radio_button";
key = "radio_button-1";
}
ok_cancel;
}
スライダー slider
sliderの特徴は?
- 数値取得のスライダーを表示できる
「slider」は左右または上下に動かして数値取得できるスライダーを表示します。
表示できるのはスライダーのみなので現在値を知るためには前述した「text」や「edit_box」と組み合わせる必要があります。
sliderの使い方は?
sliderの使用例
dclファイル側の「min_value」「max_value」でスライダーの最小値、最大値を設定することができます。また、「small_increment」ではスライダーの両サイドにある三角マークをクリックした際に変化する最小単位を変更可能です。
(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)
)
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の特徴は?
- ポップアップリストを表示できる
「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」で処理を終了します。
(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)
)
test_tile:dialog {
label = "popup_list";
:popup_list {
label = "popup_list";
key = "popup_list-1";
}
ok_cancel;
}
リストボックス list_box
list_boxの特徴は?
- リストボックスを表示できる
「list_box」はリストボックスを表示することができます。「popup_list」と同様にlspファイル側でリスト形式のデータを入力することで内容を表示します。
list_boxの使い方は?
list_boxの使用例
(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)
)
test_tile:dialog {
label = "list_box";
:list_box {
label = "list_box";
key = "list_box-1";
}
ok_cancel;
}
まとめ
今回はダイアログボックスに表示できるタイルをご紹介しました。
ぜひ、これらのタイルを組み合わせてオリジナルのダイアログボックスを作成してみてください。
きっと楽しくなりますよ。
DCLの記述 | 内容 | タイルの表示例 |
:text{} | 文字列を表示する | |
:edit_box{} | 文字列の入力または編集が できるボックスを表示する | |
:toggle{} | チェックボックスを表示する | |
:radio_button{} | ラジオボタンを表示する | |
:slider{} | 数値取得のスライダーを表示する | |
:popup_list{} | ポップアップリストを表示する | |
:list_box{} | リストボックスを表示する |
記事の内容やAutoLISP、DCLのことでよく分からないところがあるようでしたらコメントやメールでお気軽にご連絡ください!
お待ちしております。
プログラミングをもっと学びたい方におすすめ
AutoLISPをより理解しやすくするためには他のプログラミング言語を覚えることをおすすめします。こちらの記事ではおすすめのオンラインプログラミングスクールを紹介していますのでぜひご覧ください。
関連記事:学習目的別にご紹介!おすすめオンラインプログラミングスクール3選
無料体験もできるオンラインプログラミングスクールです!