モデル空間の図面をまとめて印刷:AutoLISPでPDF一括出力!

Autolisp

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。今回のような一括印刷スクリプトは、現場での「ちょっと面倒」をスマートに解決してくれます。ぜひ、自分の環境に合わせてカスタマイズしてみてください!

コメント

タイトルとURLをコピーしました