帮助我创建lisp to expo
大家好有人能帮我创建lisp,将多个DWG导出为单独的PDF,而不是通过我想从lisp中执行的发布命令吗 你需要两样东西:一个脚本和一个plot lisp
搜索这里有许多使用lisp进行多布局的绘图例程示例等搜索BIGAL+绘图 下面是使用script和script pro创建PDF的分解。
如果您有一个已经设置了打印到PDF的lisp例程,只需加载它并从脚本中运行它。
http://www.cadtutor.net/forum/showthread.php?76974-使用2013-Core-Console启动并运行&高亮显示=scriptpro
~格雷格 快速搜索在沼泽中找到了三个不同的例程,都在同一个线程中,用于通过lisp打印到PDF。 谢谢合作
我认为这是一件困难的事 我不一定同意你的意见。
您是否尝试过使用“DWG to PDF”+“lisp”作为搜索标准? 评论
谢谢,我会的 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
希望这能为你指明正确的方向。我很快就会发布一篇帖子,询问如何优化我的代码,因为我的选择集例程(这里没有显示)效率很低。
~霍维兹 谢谢你好
我将尝试代码并告诉你结果 另一个例子http://www.cadtutor.net/forum/showthread.php?69132-正在打印LISP帮助&高亮显示=打印LISP
页:
[1]