Aller au contenu

Messages recommandés

Posté(e)

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?

Posté(e)

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)

Posté(e)

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!

Posté(e)

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!

Posté(e)

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)

Posté(e)

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)

Posté(e)

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.

Posté(e)

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)

  • 3 mois après...
Posté(e)

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

  • 4 semaines après...
Posté(e)

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

Posté(e)

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)

         )
       )
     )
   )
 )
)

Posté(e)

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!

Posté(e)

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

Posté(e)

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

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é