jjatho 发表于 2022-7-6 06:22:09

AutoLISP脚本在旧版本上工作

代码如下:
 
(defun C:PDFPUBLISH()

(command "ctab" "model")

(command "_autoPUBLISH" "")

(setq acadObject (vlax-get-acad-object))
(setq acadDocument (vla-get-ActiveDocument acadObject))
(setq dProps (vlax-get-Property acadDocument 'SummaryInfo))
(vla-GetCustomByKey dProps "project" 'project)
(vla-GetCustomByKey dProps "revision" 'revisionnumber)

(command "ctab" "model")

(setq time (rtos (getvar "CDATE") 2 6))
(setq yr (substr time 1 4))
(setq mo (substr time 5 2))
(setq dy (substr time 7 2))
(setq hr (substr time 10 2))
(setq mn (substr time 12 2))
(setq sc (substr time 14 2))

(setq dwgname (GETVAR "dwgname"))
(setq len (strlen dwgname))
(setq dwgname (substr dwgname 1 (- len 4)))
(setq oldpdfname (strcat (getvar "dwgprefix") "DWF and PDF\\" dwgname ".pdf"))

(setq newpdfname (strcat (getvar "dwgprefix") "DWF and PDF\\" project " - rev" revisionnumber " - " yr "-" mo "-" dy "@" hr "." mn "." sc ".pdf"))

(vl-file-rename oldpdfname newpdfname)

(princ)
) ;End defun PDFPUBLISH
 
基本上,我在新电脑上设置了与旧电脑相同的文件结构,但这个脚本并不像以前那样生成pdf文件。现在,我得到了一个不同的文件类型(记不起头顶上的类型),它与文件放在同一个文件夹中。dwg,而不是文件所在的“DWF和PDF”文件夹。dwg为。
 
不幸的是,我现在在一台没有AutoCAD的计算机上,所以我无法测试它,但我怀疑这与\u autoPUBLISH命令和一些与之相关的设置有关。

Lee Mac 发表于 2022-7-6 06:48:33

尝试此未经测试的程序:
(defun c:pdfpublish ( / sum old pro pth rev )
   (setvar 'ctab "Model")
   (setq sum (vla-get-summaryinfo (vla-get-activedocument (vlax-get-acad-object))))
   (if
       (and
         (setq pro (getcustombykey sum "project"))
         (setq rev (getcustombykey sum "revision"))
       )
       (progn
         (vl-mkdir (setq pth (strcat (getvar 'dwgprefix) "DWF and PDF")))
         (command "_.autopublish" "_L" pth)
         (if (findfile (setq old (strcat pth "\\" (vl-filename-base (getvar 'dwgname)) ".pdf")))
               (vl-file-rename old (strcat pth "\\" pro " - rev" rev " - " (menucmd "m=$(edtime,$(getvar,date),yyyy-mo-dd@hh.mm.ss)") ".pdf"))
               (princ (strcat "\nFile \"" old "\" not found."))
         )
       )
       (princ "\nCustom properties not found.")
   )
   (princ)
)

(defun getcustombykey ( sum key / rtn )
   (vl-catch-all-apply 'vla-getcustombykey (list sum key 'rtn))
   rtn
)
(vl-load-com) (princ)

jjatho 发表于 2022-7-6 07:04:37

谢谢,但我找到了解决办法。由于这是一个新的AutoCAD安装,我的旧设置不太正确。在“选项”下,然后是“打印和发布”,然后是“自动发布”设置,我更改了所有设置以匹配之前的设置,我的原始脚本现在运行良好。谢谢你!

Lee Mac 发表于 2022-7-6 07:24:46

尽管如此,我建议您查看我的代码,因为在错误捕获和提高代码简洁性和可读性方面,您的代码可能会有一些改进。
页: [1]
查看完整版本: AutoLISP脚本在旧版本上工作