Aller au contenu

SuperAutoScript bloqué


vannes

Messages recommandés

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?

Lien vers le commentaire
Partager sur d’autres sites

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)

Lien vers le commentaire
Partager sur d’autres sites

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!

Lien vers le commentaire
Partager sur d’autres sites

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)

Lien vers le commentaire
Partager sur d’autres sites

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)

Lien vers le commentaire
Partager sur d’autres sites

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)

Lien vers le commentaire
Partager sur d’autres sites

  • 3 mois après...

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

Lien vers le commentaire
Partager sur d’autres sites

  • 4 semaines après...

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...

Lien vers le commentaire
Partager sur d’autres sites

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)

         )
       )
     )
   )
 )
)

Lien vers le commentaire
Partager sur d’autres sites

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!

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité