BLOACH85 发表于 2022-7-6 14:18:46

需要打印到文件lisp例程

嘿,伙计们,我需要一个lisp例程,将当前dwg打印到一个名为plot的文件中,但每个作业都有一个名为plot的文件夹,因此我想它必须搜索并找到dwg文件夹的dwg路径,才能为每个作业找到正确的打印文件文件夹。有什么建议吗?

Zorg 发表于 2022-7-6 14:24:54

http://www.74mph.com
 
发布结果
 
Z

Lee Mac 发表于 2022-7-6 14:28:08

 
您是指打印到文件,如中所示,接收。PLT文件在该位置-或者你说的是PDF格式的图纸?
 
(有些人搞混了……我知道我搞混了)

Lee Mac 发表于 2022-7-6 14:29:31

不确定这是否有效-以前从未这样做过-真的有点暗箭伤人:
 

(defun c:plt2file(/ file fPath plt laylst layVar i)
(vl-load-com)
(setq i    0
       file (getfiled "Select Destination for Files"
                      (if def_file
                        def_file
                        "")
                      "plt"
                      1))
(if (not (setq def_file file))
   (exit))

(setq fPath (vl-filename-directory file)
       plt   (vla-get-Plot
               (vla-get-ActiveDocument
               (vlax-get-acad-object))))

(setq laylst (vl-remove "Model" (layoutlist))
       layVar (vlax-make-variant
                (vlax-safearray-fill
                  (vlax-make-safearray
                  vlax-vbstring
                  (cons 0 (1- (length laylst))))
                  laylst)))

(vlp laylst)

(repeat (length laylst)
   (vla-SetLayoutstoPlot plt layVar)
   (if (eq :vlax-true (vla-PlottoFile plt fpath))
   (setq i (1+ i))))

(princ (strcat "\n"
                (itoa i)
                " of "
                (itoa (length laylst))
                " Layouts Plotted to File."))

(princ))

BLOACH85 发表于 2022-7-6 14:33:48

这一切都将是一个打印到文件(.PLT)没有转换为pdf的或任何东西

Shawndoe 发表于 2022-7-6 14:38:01

你好
 
这是我创建的一个例程,我认为它符合您的要求。您需要调整打印设置,以调用页面设置和打印机,否则就可以继续了。
 
<br>(defun C:plottofile ( / FileDiaMode DwgFilePath DwgNamed )<br>(setq FileDiaMode (getvar "FILEDIA"))<br>(setvar "FILEDIA" 0)<br>(setq DwgFilePath (getvar "DWGPREFIX"))<br>(if (/= (vl-file-directory-p (strcat DwgFilePath "Plot\\" )) T)<br>   (progn<br>      (vl-mkdir (strcat DwgFilePath "Plot\\"))<br>   ); progn<br>); if <br>(setq DwgNamed (substr (Getvar "DWGNAME") 1 (- (strlen (getvar "DWGNAME")) 4)))<br>;(command "._Plot" "No" "Model" "Your Page Setup" "Your Printer Here" "Yes" (strcat DwgFilePath DwgNamed ".plt"))<br>(command "._Plot" "No" "Model" "Previous Plot" "mnt-hp-c5550-1" "Yes" (strcat DwgFilePath "Plot\\" DwgNamed ".plt") "No" "Yes")<br>(setvar "FILEDIA" FileDiaMode)<br>)<br>
 
如果你需要帮助,请告诉我。
 
祝你过得愉快。
肖恩多

Lee Mac 发表于 2022-7-6 14:40:47

稍微修改了我的第一篇帖子-这应该可以做到:
 

(defun c:plt2file(/ file fPath plt laylst layVar)
(vl-load-com)
(setq file (getfiled "Select Destination for Files"
                      (if def_file
                        def_file
                        "")
                      "plt"
                      1))
(if (not (setq def_file file))
   (exit))

(setq fPath (strcat (vl-filename-directory file) "\\")
       plt   (vla-get-Plot
               (vla-get-ActiveDocument
               (vlax-get-acad-object))))

(setq laylst (vl-remove "Model" (layoutlist))
       layVar (vlax-make-variant
                (vlax-safearray-fill
                  (vlax-make-safearray
                  vlax-vbstring
                  (cons 0 (1- (length laylst))))
                  laylst)))

(vla-SetLayoutstoPlot plt layVar)
(if (eq :vlax-true (vla-PlottoFile plt fpath))
   (princ (strcat "\n" (itoa (length laylst))
                  " Layouts Plotted to File."))
   (princ "\nPlot Failed."))
(princ))

VVA 发表于 2022-7-6 14:43:59

PlotDwgs是一个打印实用程序,具有几个独特的选项,包括打印所有打开的图形,以及打印用户选定图形的文件夹。图形可以打印到指定的大小,或者通过选择“Varies”选项,程序可以确定要打印的正确纸张大小。还包括按相反顺序打印所有布局的选项,以及按相反顺序打印用户选择图形的文件夹的选项。关联文件为PLOTDWG。lsp,绘图。dcl和绘图。dvb。

Lee Mac 发表于 2022-7-6 14:48:04

^^我想这可能会被提及

BLOACH85 发表于 2022-7-6 14:51:30

嘿,它们都比我原来的例程要好得多,那将在使用的最后一个plot file文件夹中绘制2个文件。我很感激各位
页: [1] 2
查看完整版本: 需要打印到文件lisp例程