Autolisp:"While"环路,带.dxf输出



我正在编写一个LISP应用程序,以创建CNC切割器的2D模式。我有一个Excel程序,该程序可输出3-10个与每种模式相关的单个零件的短LISP子例程,并且我可以将这些数量的subs在我的"我的" loop"中添加到 load 中,然后绘制零件,但是,我无法从其中一个模式subs生成的图纸上努力 create .dxf文件的方法都可以让我恢复循环。如果我拉出DXFOUT并擦除步骤,然后让它们彼此绘制,它就像魅力一样。

(defun c:CreateDXF (/ owd ofd sdate)
  (setq owd (acet-file-cwd))
  (acet-file-chdir "P:\")
  (setq ofd (getvar "filedia"))
  (setvar "filedia" 0)
  (setq sdate (getstring "nEnter the order start date in YYYYMMDD format: "))
  (setq fpath (strcat "P:\LSP\" sdate))
  (setq wopath (acet-ui-pickdir "Select Work Order Folder" fpath))
  (setq flist (vl-directory-files wopath "*.lsp" 1))
  (while (> (length flist) 0)
    (setq fname (car flist))
    (setq wfile (strcat wopath "\" fname))
    (vl-file-rename wfile "P:\LSP\temp.lsp")
    (load "P:\LSP\temp.lsp")
    (vl-file-rename "P:\LSP\temp.lsp" wfile)
    (setq savepath (strcat "P:\DXF\" sdate))
    (setq savename (strcat (vl-filename-base wfile) ".dxf"))
    (setq patt (ssget "x"))
    (command "_.dxfout" savepath "_Objects" patt "" "_Version" "2013" "16" "" "")
    (command "erase" "all" "")
    (setq flist (cdr flist))
    );while
  (acet-file-chdir owd)
  (setvar "filedia" ofd)
  (alert "Done")
  (princ)
);defun

在第一个DXFOUT步骤中挂断的按书面运行。我可以通过LISP编辑器重置程序,然后文件显示在输出目录中,而DXF出现在新选项卡中,但是显然,它在不处理其余部分的情况下退出循环。

我错过了明显的东西吗?最好在与命名实体的同一图中绘制所有图案片,然后在末尾批量划分每个实体?

从AutoCAD外部进行此操作可能会更容易。也许使用PowerShell脚本获取.dwg文件列表,打开AutoCAD,然后循环浏览图形列表,导出.dxf,关闭.dwg并执行下一个,然后关闭AutoCAD。

最新更新