Aller au contenu

Commande décomposer dans un script


LElemurien

Messages recommandés

Bonjour,

 

J'ai un souci avec un LISP dans un script.

 

Mon problème est le suivant : lors de l'utilisation de la commande décomposer dans un LISP et que je veux utiliser ce LISP dans un script pour pouvoir l'utiliser sur plusieurs fichiers,

 

eh bien là le LISP se réalise sur le 1 er fichier mais pas sur les suivants (le fichier ne se ferme pas comme d'habitude pour pouvoir passer au suivant).

 

voici le LISP qui pose problème :

 

 (defun c:essai001 (/ n nb jeusel)

 (command "TILEMODE" "1")												;Se mettre sur l'Espace objet

 (while (/= (ssget "_X"
	    (list '(0 . "INSERT")
		  (cons 67 0)
	    ) ;_ Fin de list
     ) ;_ Fin de ssget
     nil													;Si je sélectionne tous les objets du dessin dans l'espace Objet et qu'il y a des blocs alors ...
 ) ;_ Fin de /=


   (setq n -1)														; création de la variable n égal -1

   (setq jeusel (ssget	"_X"
		(list '(0 . "INSERT")										;Sélection de tous les blocs du dessin dans l'esapce objet
		      (cons 67 0)
		) ;_ Fin de list
	 ) ;_ Fin de ssget
   ) ;_ Fin de setq
   (setq nb (sslength jeusel))												;création de la variable nb qui est le nombre de blocs dans le jeu de sélection "jeusel"

   (while (/= n nb)

     (command "_explode" (ssname jeusel (setq n (1+ n))))								;Tant que la variable n n'est pas égal à la variable nb alors décomposer l'élément du jeu de sélection
   ) ;_ Fin de while

 ) ;_ Fin de while

 (princ)

) ;_ Fin de defun

 

Je précise que LISP fonctionne si il n'est pas utilisé dans un SCRIPT,

 

Je ne comprends pas pourquoi cela ne marche pas dans un script

 

Si quelqu'un a une idée je suis preneur.

 

Merci d'avance

 

Bonne journée

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Je ne sais si l'influence de cette variable avec les versions actuelles a encore de l'importance, mais essayes de changer la valeur de la variable (non documentée) QAFLAGS.

De souvenir elle avait de l'influence sur la décomposition d'objet et sur les scripts.

Avec google tu doit pouvoir retrouver des discussions à ce sujet.

 

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Coucou,

 

Ton programme sert uniquement à décomposer tous les blocs présents dans l'espace objet d'un fichier ? (si c'est le cas, je ne comprend pas l'utilité d'une double boucle... la première c'est par rapport aux blocs imbriqués si je comprend bien, mais la commande DECOMPOSE peut parfaitement fonctionner avec des jeux de sélection et pas bloc par bloc il me semble)

Ce script est supposé se lancer de quelle manière, en clair, qu'elle différence entre l'utilisation d'une commande et l'utilisation d'un script ? (sumimasen, je ne maîtrise pas les scripts donc je ne sais pas en quoi un script est préférable à une commande)

 

Tout ce que je sais à propos des scripts, c'est que les versions "light" d'AutoCAD supportent les scripts mais pas les lisps, donc pour les versions "light" on ne peut utiliser que des scripts...

Donc potentiellement que les programmes LISP ne sont pas correctement exécutés par un script en ce sens... (je rappelle que je ne maîtrise pas les scripts, j'ai juste jeté un coup d'œil vite fait ^^")

 

Bisous,

Luna

Lien vers le commentaire
Partager sur d’autres sites

Merci Luna de ton aide,

 

mais apparemment on ne peut pas décomposer tous les blocs à la fois dans un script voir le lien : Mon lien ,

 

c'est pour cela que j'ai fais comme cela mais comme je disais je suis très loin d'être un expert donc le LISP n'est peut-être pas très bien fait.

 

Pour ce qui est du Script ce qui est intéressant avec c'est que l'on peut utiliser des LISP à l'intérieur et l'intérêt pour moi

 

est que le script peut agir sur plusieurs fichiers l'un après l'autre avec par exemple l'utilisation du logiciel de "Caderix" qui est SuperAutoSrcipt.

 

Voilà pour les infos

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

As-tu remarqué qu'il existe 2 commandes ?

 

1. _EXPLODE

 

2. _XPLODE

 

Je te laisse tester pour comprendre la différence entre les deux...

 

Et il est vrai que certaines commandes ont un comportement différent entre le test au clavier et la commande dans un SCRIPT, une MACRO ou un LISP...

 

 

Christian

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Je viens de faire un test avec ce lisp

(defun c:essai001 (/ n nb jeusel)

 (command "TILEMODE" "1")                                                               	;Se mettre sur l'Espace objet

 (while (setq jeusel (ssget "_X" (list '(0 . "INSERT") (cons 67 0))))

   (setq n (sslength jeusel))                                                           	; création de la variable n égal -1

   (while (> n 0)
     (command "_explode" (ssname jeusel (setq n (1- n))))                               	;Tant que la variable n n'est pas égal à la variable nb alors décomposer l'élément du jeu de sélection
   ) ;_ Fin de while

 ) ;_ Fin de while

 (princ)

) ;_ Fin de defun

 

et ce script

(load "essai001.lsp")
zoom et
essai001
-purger to * N
_qsave

 

sur 3 fichiers avec Superautoscript sans souci, tout se passe bien, mes blocs sont décomposés et mes DWG enregistrés

 

Olivier

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é