Lisp例程挂起
我正在编写一个例程,该例程应该逐个打开文件夹中的每个图形,删除外部参照路径,将其保存到R14,然后移动到下一个图形。似乎它在打开第一幅画后就挂断了,之后就没能工作了。这是我多年来第一次用Lisp编写东西,也是我第一次尝试编写一个包含循环的例程,所以我不太确定这是否是它不能正常工作的部分原因。代码如下:(defun c:savedown (/)
(vl-load-com)
(setq location (getvar "dwgprefix"))
(setq drawingfiles (cddr (vl-directory-files location)))
(setq dwgnmbr (length drawingfiles))
(repeat dwgnmbr
(setq location (getvar "dwgprefix"))
(setq drawingfiles (cddr (vl-directory-files location)))
(setq drawingname (car drawingfiles))
(setq drawingfiles (cdr drawingfiles))
(setq filename (strcat location drawingname))
(command "fileopen" "Y" filename)
(command "._xref" "T" "*" "N" "")
(command "._saveas" "LT98" "" "Y")
);repeat
)
我忘记提及的另一个问题是,在打开图形且代码失败后,我无法通过外部参照管理器单击任何外部参照。只有在将SDI系统变量更改为1,然后再次返回到0后,我才能使它们再次可选。它似乎把它从部分冻结中踢了出来,它被卡住了。 据我所知,lisp绑定到单个图形,这意味着您无法使用lisp打开图形并在新打开的图形上继续运行。
我采用的一种方法是使用。bat,调用autocad并运行脚本。(您需要通过脚本执行操作)
缺点是脚本比lisp慢,批处理文件必须为每个文件启动autocad一次。。。
这是我使用的批处理(.bat)文件的内容
FOR %%f in (D:\Users\myuser\Desktop\tryon\*.dwg) do start /wait D:\"Program Files"\"Autodesk"\"AutoCAD 2014"\acad.exe "%%f" /b D:\Users\myuser\Desktop\try\try.scr
文件夹“tryon”是我复制图纸的文件夹。。
我希望这有帮助。
干杯
编辑:必须在脚本中使用quit命令才能使批处理文件转到下一个批处理文件
scr文件的示例
zoom
extents
qsave
quit
。。别忘了退出后马车会回来。 我支持geoff让siad使用的脚本,您可以使用lisp的第一部分使脚本将所有DWGNAME和所需的命令写入文件,我将按每个dwg执行2-3行,注意隐藏空间,因为
我使用CMD和Dir*。dwg/b>dirlst to make dwg列出了使用word制作脚本,如果您知道它有多快的话。
open z:\\myprojects\\dwg1
._xref T * N
._saveas LT98Y close
open z:\\myprojects\\dwg2
._xref T * N
._saveas LT98Y close
页:
[1]