cat3appr 发表于 2022-7-5 16:25:44

批处理PDF打印lisp

你好
 
我有数百个DWG我需要pdf,有一个LISP可以批量pdf他们?
 
非常感谢!

maratovich 发表于 2022-7-5 17:07:36

命令
_发布
还是模型空间里什么都有?

BIGAL 发表于 2022-7-5 17:40:56

如果在布局中,可以编写脚本并执行数百个其他代码示例,如cadtutor中的示例。其中最新的一个绘制每个布局图纸,但随后自动合并为1个pdf。你需要一个额外的软件,但它是免费的。
 
剧本

Open dwg1 (load "plotpdfall") close N
Open dwg2 (load "plotpdfall") close N
Open dwg2 (load "plotpdfall") close N

 

; plotpdf ver 2 with filename and directory as output oct 2011
; By Alan
(defun AH:pltpdfs ( / len)
(PROMPT ".....PRINTING DRAWING TO pdf's....")
(setvar "cmddia" 0)
(setvar "filedia" 0)
(setq plotabs nil) ; in case run before
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(vlax-for lay (vla-get-Layouts doc)
(setq plotabs (cons (vla-get-name lay) plotabs))
)
(setq dwgname (GETVAR "dwgname"))
(setq len (strlen dwgname))
(setq dwgname (substr dwgname 1 (- len 4)))
(setq plottablist (acad_strlsort plotabs))
(setq len (length plottablist))
(setq x 0)
(repeat len
(setq name (nth x plottablist))
(princ name)
(setq pdfname (strcat (getvar "dwgprefix") "pdf\\" dwgname "-" name))
;(setq pdfname (strcat (getvar "dwgprefix") dwgname "-" name))
(if (/= name "Model")
   (progn
   (setvar "ctab" name)
   (setvar "textfill" 1)
(setvar "fillmode" 1)
    (COMMAND "-PLOT""Y""" "dwg to Pdf"
       "Iso full bleed A3 (420.00 x 297.00 MM)" "m" "LANDSCAPE""N"   "W""-6,-6" "807,560" "1=2""C"
       "y" "Designlasercolour.ctb" "Y" "n" "n" "n" pdfName "N" "y"      )
   )
)
(setq x (+ x 1))
(setq plotnames (cons pdfname plotnames))
) ; end repeat
(setq trgfile (strcat (getvar "dwgprefix") "pdf\\" dwgname "-D" val1 "-D" val2 ".pdf"))
) ; defun
(setq plotnames (reverse plotnames))
(AH:pltpdfs)
(if (not combinepdf)(load "mergepdfs"))
(combinepdf gsExe plotnames trgFile )

(setvar "plottransparencyoverride" 1)
(setvar "cmddia" 1)
(setvar "filedia" 1)

(princ)

 
;MergePdfs
;Merges multiple pdf (or eps) files into one
;Requires the installatoion of Ghostscript
; make a batch file ?
;gs -sDEVICE=pdfwrite \
;    -dNOPAUSE -dBATCH -dSAFER \
;    -sOutputFile=combined.pdf \
;    first.pdf \
;    second.pdf \
;    third.pdf [...]
;Ghostscript (http://www.ghostscript.com/) can be used to combine PDFs.
; Something like this should work: by Roy_043
(defun KGA_String_Join (strLst delim)
(if strLst
(apply
'strcat
(cons
(car strLst)
(mapcar '(lambda (a) (strcat delim a)) (cdr strLst))
)
)
""
)
)
; (CombinePdf
(setq gsexe "C:\\Program Files\\gs\\gs9.19\\bin\\gswin64c.exe")
; (setq srcFilelst'("D:\\Tmp\\A.pdf" "D:\\Tmp\\B.pdf"))
; (setq trgfile "C:\\Acadtemp\\Total.pdf")
; )
; Note: Existing trgFile will be overwritten.
(defun CombinePdf (gsExe srcFileLst trgFile)
(startapp
(strcat
gsExe " "
"-sDEVICE=pdfwrite -dBATCH -dNOPAUSE -dQUIET"
"-sOutputFile=\"" trgFile "\" "
"\"" (KGA_String_Join srcFileLst "\" \"") "\""
)
)
)
页: [1]
查看完整版本: 批处理PDF打印lisp