モデル空間の複数図面の一括印刷
モデル空間内に多くの図面を書き込むことが多い為、
AutoCADのLISPをIJCAD用に改変して何とか使えるようになったので共有します。
ただ、元がAutoCAD用のものなので、望んだ動作と違うものになってしまいました。
以下、ハイフンで区切った範囲をメモ帳に貼り付けて拡張子を「.lsp」に変更して保存してください。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
(defun c:bpa (/ ss i ent blkName dwgName)
(vl-load-com)
(setq ss (ssget "_X" '((0 . "INSERT")(2 . "aiban")))) ; "aiban"ブロックを選択
(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 "_a" (itoa i) ".pdf"))
(command "_.-plot" "Y" "" "DWG To PDF.pc3" "ISO full bleed A3 (297.00 x 420.00 MM)" "M" "L" "N" "V" (strcat "a" (itoa i)) "F" "C" "Y" "細線.ctb" "N" "A" dwgName "Y" "Y")
(setq i (1+ i))
)
(princ "\nPDF出力が完了しました。")
)
(princ "\n対象のブロックが見つかりませんでした。")
)
(princ)
)
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
「Appload」コマンドにて、上記のlspファイルをロードすることでコマンドが有効になります。
動きとしては、aibanという名前のブロックの数を数えて、
その数と同じだけヴューで設定した範囲を連番で印刷するという動きになりました。
使うためには「view」コマンドでa0、a1、a2…という名前で印刷したい範囲を設定し、
aibanという名前のブロックを印刷したいページ数分用意することで動きます。
コマンドは「bpa」としています。
オートコンプリートで他のコマンドが出てきてしまうのでご注意ください。
このページとこのページだけ印刷したい、とかには対応できないコマンドです。
ビューの設定が6個、ブロックが5個だとビューの5個目までしか印刷しません。
ビューが5個、ブロックが6個だと、6回目の印刷をしようとしてコマンドが途中で止まります。
印刷の設定なども変えれますし、探すブロックの名前も変えれますが、
ネットで調べながら設定できましたので、ご自身の環境に合わせて変えてください。
※細線.ctbなどは私が使用している印刷設定です。
これで私自身は運用できそうなので改変などはこれ以上行う予定もありませんし、
自力で改変したものなので、不要な命令などが書き込まれているかもしれませんが、わからないなりに動くようにしたものです。
そのため、質問等にはお答えできませんのでご了承ください。
サインインしてコメントを残してください。
コメント
0件のコメント