2017-02-15 6 views
0

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?

Répondre

0

Il peut être plus facile d'approcher cela depuis l'extérieur d'AutoCAD. Peut-être utilisez un script PowerShell pour extraire la liste des fichiers .dwg, ouvrez AutoCAD, puis faites défiler la liste des dessins, exportez le .dxf, fermez le .dwg et faites le suivant, puis fermez AutoCAD.