概要 - ファイルを検索する(AutoLISP)

アプリケーションでは、findfile 関数を使用して特定のファイル名を検索できます。

アプリケーションでは、検索するフォルダを指定することも、AutoCAD の現在のライブラリ パスを使用することもできます。

次のコード例では、findfile は AutoCAD のライブラリ パスで acad.pgp を検索します。

(setq pgpname "acad.pgp")
(setq fil (findfile pgpname))
(if fil
  (setq pgpname fil)
  (princ (strcat "\nCould not find file " pgpname ". " ))
)

findfile の呼び出しが成功すると、変数 refname には、次のように完全に識別されたパス名文字列が代入されます。

; On Windows
"<drive>:\\Users\\<username>\\appdata\\roaming\\autodesk\\
 <product>\\<release>\\<language>\\support\\acad.pgp"

; or

; On Mac
"/Users/<username>/Library/Application Support/Autodesk/Roaming/
 <product>/<release>/<language>/support/acad.pgp "

パス名を指定するときは、パス名が AutoLISP に認識されるように、円記号( ¥ )の前にもう 1 つの円記号を付ける必要があります。フォルダ区切り記号としてスラッシュ( / )を使用することもできます。getfiled 関数は、指定したフォルダ内の指定した種類の拡張子を持つファイルの一覧を表示するダイアログ ボックスを表示します。これにより AutoLISP のルーチンは AutoCAD のファイル取得ダイアログ ボックス(標準のファイル ナビゲーション ダイアログ ボックス)にアクセスすることができます。

getfiled を呼び出すときは、ダイアログ ボックスの外観と機能を決める 4 つの引数を指定しなければなりません。アプリケーションは、ダイアログの一番上に表示される タイトル、ダイアログの一番下の編集ボックスに表示される既定のファイル名、およびリスト ボックス内で選択できる初期ファイルを決める拡張子の種類を、それぞれ文字列値で指定する必要があり、それらに nil を指定することもできます。最後の引数は、選択されるファイルとダイアログ ボックスとの関係を指定する整数値です。

次の例では、ユーザがディレ トリの構造を参照し、ファイルを選択できるようにするために getfiled が使用されています。

(defun C:DDIR ( )
  (setq *dfil (getfiled "Directory Listing" "" "" 2))
  (princ (strcat "\nVariable '*dfil' set to selected file " *dfil ))
 (princ)
)

選択されたファイル名が変数 *dfil に代入されるので、以降は AutoLISP の他の関数で使用したり、ファイル名を求めるコマンド プロンプトへの応答として使用することができます。コマンド プロンプトへの応答としてこの変数を使用するには、!*dfil と入力します。