vannes Posté(e) le 22 janvier 2014 Posté(e) le 22 janvier 2014 Bonjour, J'ai créé un lisp afin d'insérer des wblocs dans un fichier (objectif: redéfinir les blocs de mon dessin). Ce code fonctionne très bien jusque là.Or, je souhaite l'utiliser avec SuperAutoScript, et là, jusqu'au premier fichier c'est OK, tout s'exécute très bien. Par contre, le deuxième fichier ne s'ouvre pas et SuperAutoscript reste bloqué. Voici ce lisp: (defun c:BlocInsérerBibli (/ DIRECTORY BLOC) (setvar "CMDECHO" 0) (setq I 1) (setq J 1) (BlocInsérerBibliCode "C:\\Acad fichiers\\Temporaire") (setvar "CMDECHO" 1) (princ) ) (defun BlocInsérerBibliCode (DIRECTORY) (foreach FILE (vl-directory-files DIRECTORY "*.dwg" 1) (setq DIRECTORYFILE (strcat DIRECTORY "\\" FILE)) (if (tblsearch "block" (setq BLOC (vl-filename-base FILE))) (progn (setq BLOC (vl-filename-base FILE)) (command "_.insert" (strcat BLOC "=" DIRECTORYFILE)) (command) (princ (strcat "\n" BLOC " réinséré, Nombre : " (itoa I))) (setq I (+ 1 I)) )) ) ) J'ai décelé que c'est "(command "_.insert" (strcat BLOC "=" DIRECTORYFILE))" qui doit le faire bloqué. Ma question: Pourquoi? Merci, si quelqu'un avait une idée?
DenisHen Posté(e) le 23 janvier 2014 Posté(e) le 23 janvier 2014 Salut, Le premier fichier se charge, le bloc s'insert-il correctement et ensuite, ton fichier se ferme-t'il pour passer au suivant ? Ou as-tu AutoCAD qui attendrait des renseignement sur l'insertion de ton bloc ? Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
x_all Posté(e) le 23 janvier 2014 Posté(e) le 23 janvier 2014 autre piste, ton lisp et les blocs sont ils dans le chemin de recherche autocad? quelques trucs sur autocad
vannes Posté(e) le 24 janvier 2014 Auteur Posté(e) le 24 janvier 2014 Salut, Le premier fichier se charge, le bloc s'insert-il correctement et ensuite, ton fichier se ferme-t'il pour passer au suivant ? Ou as-tu AutoCAD qui attendrait des renseignement sur l'insertion de ton bloc ? Denis...Salut,En fin de compte, le 1er fichier s'ouvre, mon lisp s'exécute correctement (insertion des blocs) et le 2ème fichier ne s'ouvre pas!
vannes Posté(e) le 24 janvier 2014 Auteur Posté(e) le 24 janvier 2014 autre piste, ton lisp et les blocs sont ils dans le chemin de recherche autocad?Salut Oui, oui tout s'exécute très bien au 1er fichier ouvert!
DenisHen Posté(e) le 24 janvier 2014 Posté(e) le 24 janvier 2014 Ton deuxième fichier ne s'ouvre pas, mais ton premier fichier se ferme ? Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
vannes Posté(e) le 27 janvier 2014 Auteur Posté(e) le 27 janvier 2014 Ton deuxième fichier ne s'ouvre pas, mais ton premier fichier se ferme ?Non il ne se ferme pas et donc autocad reste sur ce fichier
x_all Posté(e) le 27 janvier 2014 Posté(e) le 27 janvier 2014 tu pourrais poster le script? quelques trucs sur autocad
vannes Posté(e) le 27 janvier 2014 Auteur Posté(e) le 27 janvier 2014 tu pourrais poster le script?Mon script appelle tout simplement mon LispDonc: BlocInsérerBibli
DenisHen Posté(e) le 31 janvier 2014 Posté(e) le 31 janvier 2014 Y-at'il un "_close" après l'exécution de ton LiSP dans le script ? Mais poste au moins les premières lignes de ton script... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
vannes Posté(e) le 31 janvier 2014 Auteur Posté(e) le 31 janvier 2014 Mon script n'a qu'une ligne et c'est BlocInsérerBibli. Normalement, je n'ai pas a ajouter de ligne "_close". Cependant j'ai essayé et le problème persiste.
DenisHen Posté(e) le 31 janvier 2014 Posté(e) le 31 janvier 2014 Les coordonnées de ton bloc et son échelle sont bien renseignées dans ton LiSP ? Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
vannes Posté(e) le 21 mai 2014 Auteur Posté(e) le 21 mai 2014 Les coordonnées de ton bloc et son échelle sont bien renseignées dans ton LiSP ? Mon lisp est joint avec mon premier post. Je profite de cette réponse à DenisH afin de relancer mon sujet. Personne n'aurait une explication? Bonne journée à tous
Infinicad Posté(e) le 17 juin 2014 Posté(e) le 17 juin 2014 Bonjour,J'ai le même soucis avec ce lisp(defun c:MREDEF ( / dir files f b ) (if (setq dir "D:\\Documents and Settings\\BC5047\\Bureau\\bloc1" files (vl-directory-files dir "*.dwg" 1) ) (progn (foreach f files (if (tblsearch "block" (setq b (vl-filename-base f))) (progn (command "_-insert" (strcat b "=" dir "\\" f)) (command) (command "attsync" "Nom" (setq b (vl-filename-base f))) (command "_.erase" "_w" "412,289" "635,-2" "") (command "_.save" "" "o")(command "_close") ) ) ) ) ) ) Et je n'ai po de solution encore :( Mais il semble que l'insertion d'un bloc pose probleme...
Infinicad Posté(e) le 19 juin 2014 Posté(e) le 19 juin 2014 Bonjour, J'ai trouvé.Le probleme vient du fait que à la fin de la commande "insert" on fait un echappe (qui stop SAS).Il faut inserer le bloc puis le supprimer, j'ai utilisé (entdel (entlast)).Et ça marche :P Mon code(defun c:MR3 ( / dir files f b ) (if (setq dir (acet-ui-pickdir) files (vl-directory-files dir "*.dwg" 1) ) (progn (foreach f files (if (tblsearch "block" (setq b (vl-filename-base f))) (progn (command "_-insert" (strcat b "=" dir "\\" f) "0,0" "" "" "") (entdel(entlast)) (command "attsync" "Nom" (setq b (vl-filename-base f))) (command "_.erase" "_w" "412,289" "635,-2" "") (command) ) ) ) ) ) )
vannes Posté(e) le 19 juin 2014 Auteur Posté(e) le 19 juin 2014 Bonjour Infinicad. Super, je vais appliquer ta méthode. Je te remercie, tu me retires une épine du pied. A plus.
Olivier Eckmann Posté(e) le 19 juin 2014 Posté(e) le 19 juin 2014 On peut aussi redéfinir le bloc sans l'insérer (ce qui évite de l'effacer ensuite) avec cette syntaxe (command "_-insert" (strcat b "=" dir "\\" f)) (command) Olivier
Infinicad Posté(e) le 19 juin 2014 Posté(e) le 19 juin 2014 On peut aussi redéfinir le bloc sans l'insérer (ce qui évite de l'effacer ensuite) avec cette syntaxe (command "_-insert" (strcat b "=" dir "\\" f)) (command) Olivier Ben justement c'est cette syntaxe qui fait stopper SAS,parcequ'en fait c'est transparent mais ça fait un echappe!
Olivier Eckmann Posté(e) le 19 juin 2014 Posté(e) le 19 juin 2014 Effectivement j'avais survolé le code trop rapidement. Par contre dans la version qui fonctionne le bloc est inséré, mais si c'est un bloc avec attribut, il va manquer des valeurs. Pour assurer, il faudrait mettre la variable ATTREQ à 0 avant d'insérer le bloc pour être sûr qu'Autocad ne demande pas les valeurs des attributs.Remettre ATTREQ à 1 à la fin et/ou dans la fonction de gestion d'erreur. Olivier
vannes Posté(e) le 20 juin 2014 Auteur Posté(e) le 20 juin 2014 Effectivement j'avais survolé le code trop rapidement. Par contre dans la version qui fonctionne le bloc est inséré, mais si c'est un bloc avec attribut, il va manquer des valeurs. Pour assurer, il faudrait mettre la variable ATTREQ à 0 avant d'insérer le bloc pour être sûr qu'Autocad ne demande pas les valeurs des attributs.Remettre ATTREQ à 1 à la fin et/ou dans la fonction de gestion d'erreur. Olivier Merci donc également à Olivier. Justement, j'ai des blocs avec attributs et donc la solution d'Infinicad doit être complétée par celle d'Olivier.Et là tout fonctionne. A plus
Infinicad Posté(e) le 20 juin 2014 Posté(e) le 20 juin 2014 Ha oui merci Olivier,je l'avais fait à la main mais oublié dans le code :unsure: merci pour ce rappel
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant