J'écris une application Lisp pour créer des motifs 2D pour un cutter CNC. J'ai un programme Excel qui délivre 3-10 sous-programmes Lisp courts pour les pièces individuelles associées à chaque modèle, et je peux obtenir un certain nombre de ces sous charger dans ma boucle "while" et dessiner la pièce, mais aucune des méthodes Je peux travailler à créer fichiers .dxf à partir des dessins générés par l'un des sous-modèles me permettra de reprendre la boucle. Si je sors les étapes dxfout et efface et que je les laisse toutes dessiner l'une sur l'autre, cela fonctionne comme un charme.Autolisp: boucle "While" avec la sortie .dxf
(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
L'exécution de cette commande en tant qu'écrire raccroche lors de la première étape dxfout. Je peux réinitialiser le programme par l'intermédiaire de l'éditeur Lisp, puis le fichier apparaît dans le répertoire de sortie et le dxf apparaît dans un nouvel onglet, mais évidemment, il quitte la boucle sans traiter le reste des morceaux.
Est-ce que quelque chose me manque? Serait-il préférable de dessiner toutes les pièces du patron dans le même dessin en tant qu'entités nommées, puis de regrouper chaque entité à la fin?