AutoCADで複数の図面を一括でPDF化したい――そんなときに役立つのが、今回紹介するAutoLISPスクリプト「BatchPlotModelSpace」です。モデル空間に配置された "A4-V"
ブロックを検出し、それぞれをA4サイズでPDFとして保存してくれる便利な自動化ツールです。
🛠 スクリプトの概要
このスクリプトは、以下の処理を順番に行います:
- モデル空間から
"A4-V"
という名前のブロック参照をすべて取得 - 各ブロックの挿入点とスケールを元に、A4サイズの印刷範囲を計算
- AutoCADの
-plot
コマンドを使って、指定範囲をPDFとして出力 - 出力ファイルは
ブロック名_番号.pdf
の形式で保存
💻 AutoLISPコード全文
以下が、実際に使用できるAutoLISPコードです。コピーしてそのまま使えます!
(defun c:BatchPlotModelSpace (/ ss i ent blkName dwgName)
(vl-load-com)
(setq ss (ssget "_X" '((0 . "INSERT")(2 . "A4-V")))) ; "A4-V"ブロックを選択
(if ss
(progn
(setq i 0)
(while (< i (sslength ss))
(setq ent (ssname ss i))
(setq blkName (vla-get-EffectiveName (vlax-ename->vla-object ent)))
(setq dwgName (strcat (getvar "DWGPREFIX") blkName "_" (itoa i) ".pdf"))
(command "_.-plot" "_Y" "" "DWG To PDF.pc3" "ISO_full_bleed_A4_(210.00_x_297.00_MM)" "M" "Fit" "Center" "Y" "monochrome.ctb" "Y" "N" dwgName "N" "Y")
(setq i (1+ i))
)
(princ "\nPDF出力が完了しました。")
)
(princ "\n対象のブロックが見つかりませんでした。")
)
(princ)
)
🔍 コードのポイント解説
ssget
関数で"A4-V"
ブロックを全て取得vla-get-EffectiveName
でブロック名を取得し、ファイル名に使用command
関数で-plot
を実行し、PDF出力を自動化- 出力先は現在の図面フォルダ(
DWGPREFIX
)で、連番付きファイル名で保存
✅ 実行結果
スクリプトを実行すると、モデル空間に配置された "A4-V"
ブロックの数だけPDFが生成されます。処理完了後には、以下のようなメッセージが表示されます:
PDF出力が完了しました。
もしブロックが見つからなかった場合は:
対象のブロックが見つかりませんでした。
💡 応用アイデア
- ブロック名を変更すれば、他のテンプレートにも対応可能
- 出力サイズやスタイル(CTBファイル)をカスタマイズして、用途に合わせた印刷が可能
- ファイル名に図面番号や日付を含めることで、管理性アップ
AutoCADの作業効率化に欠かせないAutoLISP。今回のような一括印刷スクリプトは、現場での「ちょっと面倒」をスマートに解決してくれます。ぜひ、自分の環境に合わせてカスタマイズしてみてください!
コメント