AutoLISP入門 関数紹介

ファイルを操作しよう!AutoLISPのテキストファイル関数を解説

ファイル

今回の記事ではテキストファイルに関する関数について解説していきます。

テキストファイルが扱えるとAutoCADの図形や文字情報を外部に出力して保存することができます。

また、保存したファイルを読み込んで図面に反映させることも可能です。

より一層便利なAutoLISPコマンドを作成できるので、ぜひご覧ください。

ファイルを操作しよう!AutoLISPのテキストファイル関数を解説

file

テキストファイルを開く / 閉じる open / close

openはテキストファイルを開いてファイル識別子を返す関数です。

ファイル識別子とはファイルごとに割り当てられた番号のことで、ファイルに対して操作を行う際に必要になります。

closeはopenで開いたテキストファイルを閉じる関数です。

引数にファイル識別子を指定して、そのファイルを閉じることができます。

ファイル識別子は直接扱うことができないので、任意の変数へ代入しておく必要があります。

openの書式

(open ファイルパス モード)

引数内容
ファイルパス開きたいファイルのフルパス。
フルパスでない場合はAutoCAD既定の図面フォルダが指定される。
モードファイルを開くときのモード。
"r":読み込み
"w":書き込み(上書き)
"a":追加
返り値内容
ファイル識別子引数のファイルが存在するときは
開いたファイルのファイル識別子を返す。
nil読み込みのモードで引数のファイルが存在しない場合はnilが返る。

closeの書式

(close ファイル識別子)

引数内容
ファイル識別子閉じたいファイルのファイル識別子。
返り値
nil引数のファイル識別子が有効の場合はnilが返り、
それ以外の場合はエラーとなる。

open / closeの使用例

;テキストファイルを読み込みモードで開いてすぐ閉じる
(setq path "C:/Users/hako/Desktop/hako.txt")
(setq f (open path "r"))
(close f)

ファイルパスの「¥」は「¥¥」または「/」に置き換える必要があるので注意してください。

テキストファイルの文字列を読み込む read-line

read-lineは読み込みモードで開いているテキストファイルから、文字列を1行読み込んでその文字列を返す関数です。

テキストファイルに文字列が複数行ある場合は、続けてread-lineを実行すると次の行を読み込みます。

読み込む行が無くなってファイルの終端に達したらnilを返します。

read-lineの書式

(read-line ファイル識別子)

引数内容
ファイル識別子openで取得したファイル識別子。
返り値内容
文字列ファイルから読み込んだ行の文字列。再度実行すると次の行を読み込む。
nil読み込む行がなくなった(ファイルの終端に達した)場合はnilが返る。

read-lineの使用例

;テキストファイルを読み込みモードで開き、1行づつ表示して閉じる
(setq path "C:/Users/hako/Desktop/hako.txt")
(setq f (open path "r"))
(setq buf (read-line f))
(while buf
  (print buf)
  (setq buf (read-line f))
)
(close f)

whileは条件がnilでない限りループする関数です。

ループ関数についてはこちらの記事で解説していますのでよろしければご覧ください。
関連記事:繰り返し処理で自動化しよう!AutoLISPのループ関数を解説

bufがnilでない(読み込む行がファイルの終端でない)場合は行の表示を繰り返します。

テキストファイルに文字列を書き込む write-line

write-lineは書き込みまたは追加モードで開いているテキストファイルへ、文字列を1行書き込む関数です。

続けてwrite-lineを実行すると次の行に文字列を書き込みます。

write-lineの書式

(write-line 文字列 ファイル識別子)

引数内容
文字列テキストに書き込むまたは追加する文字列。
ファイル識別子書き込みまたは追加のモードで開かれたファイルのファイル識別子。
返り値内容
文字列引数に指定した文字列。

write-lineの使用例

;テキストファイルを書き込みモードで開いて、リストの文字列を書き込む
(setq path "C:/Users/hako/Desktop/hako.txt")
(setq f (open path "w"))
(setq lst (list "aa" "bb" "cc"))
(setq n 0)
(repeat (length lst)
  (write-line (nth n lst) f)
  (setq n (1+ n))
)
(close f)

まとめ

  • openでファイル識別子を取得できる。ファイルを開くモードも指定可能。
  • closeでファイル識別子を指定すると、そのファイルを閉じることができる。
  • read-lineでファイルの読み込み、write-lineで書き込みができる。
構文内容
(open ファイルパス モード)
"r":読み込み
"w":書き込み(上書き)
"a":追加
ファイルを開いてファイル識別子を取得する。
(close ファイル識別子) ファイル識別子に対応するファイルを閉じる 。
(read-line ファイル識別子) テキストファイルの行(文字列)を読み込む。
(write-line 文字列 ファイル識別子) テキストファイルに行(文字列)を書き込む。

-AutoLISP入門, 関数紹介

独学おすすめ書籍はコチラ
独学おすすめ書籍はコチラ