AutoLISP DCL入門4 : タイル処理関数一覧と基本構文

Autolisp

タイル処理関数とは?

AutoLISPのDCL(ダイアログコントロール言語)で使われる「タイル処理関数」は、ダイアログボックス内の各部品(テキストボックス、ボタン、リストなど)を操作するための関数群です。

これらの関数を使うことで、

  • 初期値の設定
  • ユーザー入力の取得
  • ボタン操作への反応
  • 表示・非表示や使用可・不可の切り替え
  • 属性情報の取得

などが可能になり、より柔軟で使いやすいダイアログを作成できます。


set_tile:タイルに値を設定する

(set_tile "username" "cadlabo.com")
  • “username” は DCL側で定義した key
  • “cadlabo.com” は表示したい文字列
  • 主に edit_boxlist_box に初期値を設定するのに使います

get_tile:タイルの現在値を取得する

(setq name (get_tile "username"))
  • ユーザーが入力した値を取得して、変数 name に格納
  • 取得される値は常に文字列です(数値に変換するには atoiatof を使う)

action_tile:ユーザー操作に応じて処理を割り当てる

(action_tile "username" "(setq name $value)")
  • “username” タイルが変更されたときに $valuename に代入
  • $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")

コメント

タイトルとURLをコピーしました