AutoCAD で図面を作成して図面を保存すると、Windows Explorer や Mac の Finder で DWG ファイル アイコンの表示サイズを中アイコン以上に設定すると、図面のプレビューが表示されます。
これを可能にしているのは、AutoCAD が図面保存時にサムネイル画像(プレビュー画像)の生成してファイルに埋め込んでいるためです。埋め込まれるサムネイル画像の解像度は図面ファイル形式によって変化していますが、現在では、システム変数 THUMBSAVE で図面保存時のサムネイル画像の更新オン・オフのコントロールと、システム変数 THUMBSIZE で解像度を指定出来るようになっています。
さて、このサムネイル画像ですが、埋め込みを正しくおこなうには、AutoCAD のユーザインタフェース上に図面を開き、保存する必要があります。
AutoCAD API には、ObjectARX の AcDbDatabase::readDwgFile() と AcDbDatabase::saveAs() 関数の組み合わせで、また、や AutoCAD .NET API の Database.ReadDwgFile と Database.SaveAs メソッドの組み合わせで、AutoCAD のユーザインタフェース上に図面を開くことなく、メモリ上に図面を開いて、(編集、)保存することが出来ますが、残念ながら、この方法ではサムネイル画像は埋め込まれません。
場合によっては、一括して特定フォルダ内のすべての図面に対して、サムネイル画像を更新したいケースがあるかもしれません。ただ、AutoCAD API を使ってユーザインタフェース上に図面を開き、保存する処理では、対象図面の数が多いと時間がかかってしまいます。
このような場合、AutoCAD に同梱されているコンソール版の AutoCAD である AcCoreConsole.exe を使ってサムネイル画像の生成と保存する方法を代替することが出来ます。
AcCoreConsole.exe は AutoCAD のインストールフォルダに一緒にインストールされています。また、Forge の Design Automation API for AutoCAD のコアエンジンとして機能拡張がされている、ユーザインタフェースを持たない軽量な AutoCAD です。
サムネイル画像の更新には、Windows のバッチファイル(.bat)と AutoCAD スクリプト(.scr)を組み合わせることで、API を使用せずにサムネイル画像を生成出来ることが出来ます。
次の例は、バッチ ファイルで C:\temp フォルダ内の DWG ファイルを AcCoreConsole.exe で1つづつ開き、do_make_preview.scr スクリプトを実行するものです。(ZOOM コマンド E オプションで図形範囲にズームして上書き保存)
@echo off
set accoreexe="C:\Program Files\Autodesk\AutoCAD 2022\accoreconsole.exe"
set script="C:\temp\do_make_preview.scr"
set source="C:\temp"
for %%f in (*.dwg) do (
echo %%f を処理中...
%accoreexe% /i "%source%\%%f" /s %script%
)
下記は、do_make_preview.scr スクリプトの内容です。
do_make_preview.scr ファイル(改行行はリターンキー押下を意味します)
zoom
e
save
y
quit
バッチファイル内で環境変数に設定しているパスは、お使いの環境にあわせて置き換えてください。なお、日本語名のパスを認識しないことが報告されているようですので、一時的にフォルダ名を英語(ASCII 表現のアルファベット英数字)に置き換えて実行することをお勧めします。(また、操作対象のフォルダによっては、管理者権限が必要になる場合があります。ご注意ください。
By Toshiaki Isezaki
コメント