タイル処理関数とは?
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") |
コメント