Autolisp: цикл "While" с выводом.dxf
Я пишу приложение lisp для создания 2D-моделей для фрез с ЧПУ. У меня есть программа Excel, которая выводит 3-10 подпрограмм с коротким списком для отдельных частей, связанных с каждым шаблоном, и я могу получить любое количество этих подпрограмм для загрузки внутри моего цикла while и нарисовать кусок, но ни один из методов, которые я могу Приступая к работе по созданию файлов.dxf из чертежей, сгенерированных одним из шаблонов, я позволю возобновить цикл. Если я вытащу шаги dxfout и erase и просто позволю всем им рисовать друг на друге, это работает как шарм.
(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 появится в новой вкладке, но, очевидно, это выходит из цикла без обработки остальных частей.
Я что-то упускаю из виду? Было бы лучше нарисовать все части шаблона в том же чертеже, что и именованные объекты, а затем пакетировать каждый объект в конце?
1 ответ
Это может быть проще подойти к этому извне AutoCAD. Возможно, используя сценарий PowerShell для извлечения списка файлов.dwg, откройте AutoCAD, затем прокрутите список чертежей, экспортируйте файл.dxf, закройте файл.dwg и сделайте следующее, затем закройте AutoCAD.