DCL入門4|タイルの値・状態・動作を制御する
このページでわかること
画面を表示できたら、次は値や動きを変えてみましょう。set_tile、get_tile、action_tile、mode_tile、get_attrを使い、初期値・入力の読み取り・部品の状態を扱います。
まずはここから
初めての方は、こちらも読んでみてください。
順番に試してみましょう
- 操作したいタイルのkeyを確認します。
- set_tileで初期値を設定し、画面へ反映されるか確認します。
- get_tileとaction_tileで、入力値と操作の通知を確認します。
- mode_tileで部品の状態を切り替え、最後に関数早見表で役割を整理します。
タイル処理関数とは?
AutoLISPのDCL(ダイアログコントロール言語)で使われる「タイル処理関数」は、ダイアログボックス内の各部品(テキストボックス、ボタン、リストなど)を操作するための関数群です。
これらの関数を使うことで、
- 初期値の設定
- ユーザー入力の取得
- ボタン操作への反応
- 表示・非表示や使用可・不可の切り替え
- 属性情報の取得
などが可能になり、より柔軟で使いやすいダイアログを作成できます。
set_tile:タイルに値を設定する
(set_tile "username" "cadlabo.com")- “username” は DCL側で定義した
key - “cadlabo.com” は表示したい文字列
- 主に
edit_boxやlist_boxに初期値を設定するのに使います
get_tile:タイルの現在値を取得する
(setq name (get_tile "username"))- ユーザーが入力した値を取得して、変数
nameに格納 - 取得される値は常に文字列です(数値に変換するには
atoiやatofを使う)
action_tile:ユーザー操作に応じて処理を割り当てる
(action_tile "username" "(setq name $value)")- “username” タイルが変更されたときに
$valueをnameに代入 $valueはその時点のタイルの値を表す特殊変数- OKボタンなどに
(done_dialog 1)を割り当てるのも定番です
mode_tile:タイルの状態(使用可・不可)を切り替える
(mode_tile "username" 1) ; 使用不可
(mode_tile "username" 0) ; 使用可能0:有効(通常使用可能)1:無効(グレーアウト)2:非表示(ただし一部のタイルのみ対応)
get_attr:タイルの属性値を取得する
(get_attr "username" "label")- “label” や “value” などの属性値を取得
- 通常は
get_tileで十分ですが、属性を細かく調べたいときに便利
実用例:名前入力ダイアログの処理
(defun C:getname ( / dcl_id result name )
(setq dcl_id (load_dialog "inputdlg.dcl"))
(if (not (new_dialog "inputdlg" dcl_id))
(prompt "
DCL読み込み失敗")
)
(set_tile "username" "初期値") ; 初期表示
(action_tile "username" "(setq name $value)") ; 入力取得
(action_tile "accept" "(done_dialog 1)")
(action_tile "cancel" "(done_dialog 0)")
(setq result (start_dialog))
(unload_dialog dcl_id)
(if (= result 1)
(prompt (strcat "
入力された名前: " name))
(prompt "
キャンセルされました。")
)
(princ)
)まとめ:関数早見表
| 関数名 | 役割 | 例文 |
|---|---|---|
set_tile | 値を設定 | (set_tile "key" "value") |
get_tile | 値を取得 | (get_tile "key") |
action_tile | 操作時の処理を割り当て | (action_tile "key" "(処理)") |
mode_tile | 有効・無効、フォーカスなどを変更 | (mode_tile "key" 1) |
get_attr | 属性値を取得 | (get_attr "key" "label") |
できたかどうか、ここで確認
値を設定する関数、値を読む関数、操作を登録する関数を区別できることが目標です。new_dialogが成功した後にタイルを操作します。
参照資料
対象環境・動作確認
AutoLISP対応環境(関数・OSごとの対応は要確認)。内容更新:2026年10月5日。掲載コードのCAD実機検証は未実施です。図形を変更する例は、コピーした図面で結果を確認してください。