概要 - リスト要素を処理する(DCL)

list_box タイルの値は先頭にスペースを含んでいることがあるので(特に複数の項目を取得した場合)、文字列の比較により値をテストすることは避けてください。

注: AutoLISP での DCL のサポートは Windows のみに制限されています。

リスト ボックスを処理する前に、まず atoi 関数を使用して list_box の値を整数に変換してくださいまた read 関数を使用して、トークンを整数に自動的に変換することもできます。たとえば、justone という名前のリストが 1 つの選択肢しか受け入れない場合、次のコードはリストの 3 番目の項目が選択されたどうかをチェックします。

(setq index ( get_tile "justone"))
(cond
  ((/= index "")                   ;See if string is empty.
    (= 2 (atoi index))
    .                              ; Process the third entry.
    .
    .
  )
)

atoi 関数は文字列 "0" だけでなく、空の文字列に対しても 0 を返すため、値が 0 の場合は空の文字列どうかをチェックする必要があります。

ポップアップ リストの値は先頭にスペースが含まれないため、値を変換する必要はありません。ポップアップ リストは、複数の項目を選択できません。

リスト ボックスが複数項目の選択をサポートする場合、プログラムは変換を行って、value 文字列の中の複数の値を 1 つずつ調べなければなりません。次の MK_LIST の定義は、ユーザが元の displist から選択した項目だけを含むリストを返します(この例では、ディスプレイ リスト displist はグローバル変数として保持されます)。MK_LIST 関数は、リスト ボックスの現在の $value を引数にして呼び出されます。

(defun MK_LIST (readlist / count item retlist)
  (setq count 1)
  (while (setq item (read readlist))
    (setq retlist (cons (nth item displist) retlist))
    (while (and (/= " " (substr readlist count 1))
                       (/= "" (substr readlist count 1)))
      (setq count (1+ count))
    )
    (setq readlist (substr readlist count))
  )
  (reverse retlist)
)

上記の 2 つの例はどちらも、単一項目の選択にも使用できます。