mostafa badran 发表于 2022-7-6 04:20:04

帮助我创建lisp to expo

大家好
有人能帮我创建lisp,将多个DWG导出为单独的PDF,而不是通过我想从lisp中执行的发布命令吗

BIGAL 发表于 2022-7-6 04:31:31

你需要两样东西:一个脚本和一个plot lisp
 
搜索这里有许多使用lisp进行多布局的绘图例程示例等搜索BIGAL+绘图

troggarf 发表于 2022-7-6 04:33:36

下面是使用script和script pro创建PDF的分解。
如果您有一个已经设置了打印到PDF的lisp例程,只需加载它并从脚本中运行它。
http://www.cadtutor.net/forum/showthread.php?76974-使用2013-Core-Console启动并运行&高亮显示=scriptpro
 
~格雷格

ReMark 发表于 2022-7-6 04:45:08

快速搜索在沼泽中找到了三个不同的例程,都在同一个线程中,用于通过lisp打印到PDF。

mostafa badran 发表于 2022-7-6 04:52:38

谢谢合作
我认为这是一件困难的事

ReMark 发表于 2022-7-6 04:56:35

我不一定同意你的意见。
 
您是否尝试过使用“DWG to PDF”+“lisp”作为搜索标准?

mostafa badran 发表于 2022-7-6 05:05:52

评论
谢谢,我会的

howiez69 发表于 2022-7-6 05:10:05

Mostafa,你想打印多少DWG,以及获得它们的列表有多难/容易。它总是像某个项目一样的一组图形,还是每次都是动态的?我最近在一个项目中工作,我们需要将一个DWG的几页打印成一个PDF,这与您想要的相反,但也许我们的方法会奏效。事实上,我们确实使用了发布例程,我作弊了,并用LSP编写了一个DSD。您可以手动进行发布设置,保存该DSD,然后修改下面的代码以编写满足您需要的DSD。
 

(defun c:PUBLISH_PDF ( / file ;file name for TEMP.DSD
         OldFda ;system variable FILEDIA
         pathtxt ;path where drawing is saved to write TEMP.DSD
         nosheets ;number of PDF pages to print
         *error* ;error trap
         ) ;end variables

(vl-load-com)

(defun *error* ( msg )
   (setvar "FILEDIA" OldFda) ;sets system variable FILEDIA back to original value
   (setvar "EXPERT" Save_Expert) ;sets system variable EXPERT back to original value
       (princ "error: ")
       (princ msg)
       (princ)
   )

(setvar "CTAB" "Layout1") ;changes to paperspace and tab named Layout1

(setq OldFda (getvar "FILEDIA")) ;reads current system variable FILEDIA value
(setvar "FILEDIA" 0) ;sets FILEDIA to 0 so no dialog boxes popup

(setq Save_Expert (getvar "EXPERT")) ;reads current system variable EXPERT value
(setvar "EXPERT" 2) ;sets EXPERT to 2 so no dialog boxes popup

(command "._-PSETUPIN" "c:\\folder\\template.dwt" "*") ;imports all page setups from drawing template c:\folder\template.dwt
(setvar "EXPERT" Save_Expert) ;sets system variable EXPERT back to original value
(setq pathtxt (strcat (getvar "dwgprefix") "TEMP.DSD")) ;sets path for DSD file from current drawing saved location
(setq file (open (strcat (getvar "dwgprefix") "TEMP.DSD") "w")) ;opens DSD file for writing

;I USED A SELECTION SET HERE TO PICK A BORDER IN PAPERSPACE TO RECOGNIZE HOW MANY PAGES TO PRINT
;YOU'll NEED YOUR WAY OF SELECTING YOUR MULTIPLE DRAWINGS

;**********START OF DSD FILE**********

;**********START HEADER**********

(write-line "" file)
(write-line "Ver=1" file)
(write-line "" file)
(write-line "MinorVer=1" file)

;**********END OF HEADER**********

;**********START OF LAYOUTS/DWG TO PLOT********** !!!repeat this section for each of your layouts or dwgs to plot

(write-line "" file)
(write-line (strcat "DWG=" (getvar "dwgprefix")(substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 4)) ".dwg")file)
(write-line "Layout=Layout1" file) ;layout to plot
(write-line "Setup=Sheet_1" file) ;page setup name to use
(write-line (strcat "OriginalSheetPath=" (strcat(getvar "dwgprefix")(substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 4))".dwg") )file)
(write-line "Has Plot Port=0" file)
(write-line "Has3DDWF=0" file)

;**********END OF 'ONE' LAYOUT TO PLOT********** !!!repeat previous section for each of your layouts or dwgs to plot

;**********START OF DSD FOOTER**********

(write-line "" file)
(write-line "Type=6" file) ;change to "TYPE=5" for multiple output files, "TYPE=6" for single output file
(write-line (strcat "DWF=" (strcat(getvar "dwgprefix")(substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 4))".pdf") )file)
(write-line (strcat "OUT="(strcat(getvar "dwgprefix"))) file)
(write-line "PWD=" file)

;**********END OF DSD FOOTER**********

;**********END OF DSD FILE**********

(close file) ;closes DSD file
(command "_.delay" 2000) ;system delay before starting publish command so DSD file closes
(command "-Publish" pathtxt ) ;start publish command with TEMP.DSD file just created
(setvar "FILEDIA" OldFda) ;sets system variable FILEDIA back to original value
(command "_.delay" 2000) ;system delay before deleting TEMP.DSD so publish routine has time to release it
(vl-file-delete pathtxt) ;deletes TEMP.DSD file

;(startapp "explorer /e," (getvar "dwgprefix")) ;comment out this line if you don't want file explorer to open with PDF location
(princ)

);defun


 
希望这能为你指明正确的方向。我很快就会发布一篇帖子,询问如何优化我的代码,因为我的选择集例程(这里没有显示)效率很低。
 
~霍维兹

mostafa badran 发表于 2022-7-6 05:17:44

谢谢你好
我将尝试代码并告诉你结果

BIGAL 发表于 2022-7-6 05:26:03

另一个例子http://www.cadtutor.net/forum/showthread.php?69132-正在打印LISP帮助&高亮显示=打印LISP
页: [1]
查看完整版本: 帮助我创建lisp to expo