绘制Lisp和多Rou
大家好!你们过去帮了我很大的忙,所以我提前感谢你们接受我的问题!
我正在尝试编写一组LISP例程来替换绘图脚本。目前,我们有一个自定义功能区,带有“快速绘制”选项卡的按钮。这样可以节省手动打开“打印”对话框和设置每个位的时间(我们现在有页面设置,但这对没有页面设置的旧文件没有帮助)。按钮是一种快速简单的方式,可以让人快速绘图。
虽然这些工作很好,但问题是CutePDF产生相对较大的PDF,尤其是与2011 DWG-to-PDF打印机相比。所以2011年的家伙们想使用DWGtoPDF打印机,因为它可以生成小文件。但是,由于绘图仪是内部autocad命令,因此在使用脚本时不会出现保存对话框(如下所示)。
^C^Cz;e;-plot;y;;DWG To PDF.pc3;ISO A3 (420.00 x 297.00 MM);M;L;N;E;1:1;c;y;monochrome.ctb;y;N;N;N;;N;Y;
所以
我决定把它全部改成Lisp程序。(艰巨的任务,因为我不知道任何Lisp程序)。到目前为止,我的代码如下:
(DEFUN C:WAA3LPDF ()
(SETVAR "CMDECHO" 0)
(COMMAND "-PLOT"
"Y"
""
"DWG TO PDF.PC3"
"ISO EXPAND A3 (420.00 x 297.00 MM)"
"M"
"L"
"N"
"E"
"1:1"
"CEN"
"Y"
"monochrome.ctb"
"Y"
"N"
"N"
"N"
(getfiled "Save File as..."
(strcat
"(getenv "username")\\desktop"
(vl-filename-base(getvar "DWGNAME")
)
)
"pdf"
5
)
"N"
"Y"
)
(SETVAR "CMDECHO" 1)
(PRINC)
)
我的两个问题是:
1) 我正在尝试将文件对话框的默认位置设置为桌面。我不确定getenv如何与strcat命令一起工作,但它目前工作不正常!
2) 目前,剧本中有5种变体:横向、A1和A3的纵向以及A3横向中的A1。我需要为这些单独的LISP吗?或者我可以将它们全部合并到所有文件中,并从一个按钮调用每个LISP吗?
谢谢你的时间!
亚当 Q1在这里,将文件名传递给pdf检查帖子时出现了一些问题,等待解决。
Q2您可以让按钮询问哪种绘图样式,然后设置变量(setq比例“1:1”),并将“1:1”替换为比例,也可以将“P”或“L”替换为(setq方向“P”)
类似于
(setq choose(“\ngetstring“choose A1P A3P…..”)
(条件
(=选择A1P)(setq比例“1:1”)(setq方向“P”))
(=选择A1L。。。。。。。。。。。。。。。。。。
“M”
朝向
“N”
“E”
规模 亚当,
我认为您已经做出了明智的决定,使用按钮来调用LISP例程,而不是使用宏。
如果将来发生更改,此选项为您(或其他人)提供了一种更简单的方法来维护代码,并允许*错误*检查等。我为用户提供的大多数工具栏按钮、菜单和功能区组件调用/执行LISP。
查看GetField LISP函数。。。我相信有一些代码可以用来创建一个新文件。此外,这为用户提供了一个以图形方式选择目标的对话框,并允许您(开发人员)指定开始位置(即用户的桌面)和文件格式(即.DWG)。
Bigal为您提供了一种选择,另一种可能是:
(initget 7“横向a1纵向a1横向a1纵向a3”)(cond(=“横向a1”(setq printLayout(getkword“\n输入所需的打印布局[横向a1/纵向a1/横向a1/纵向a3]:”);; 我想我明白了!将尝试这些想法。
谢谢大家!
页:
[1]