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.

Другие вопросы по тегам