LElemurien Posté(e) le 12 octobre 2020 Posté(e) le 12 octobre 2020 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
bonuscad Posté(e) le 12 octobre 2020 Posté(e) le 12 octobre 2020 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
LElemurien Posté(e) le 12 octobre 2020 Auteur Posté(e) le 12 octobre 2020 Merci de l'aide apportée, mais j'ai essayé plusieurs test avec QAFLAGS sur 1 et 2 car j'étais déjà sur 0 mais cela ne fonctionne pas mieux. Je suis loin d'être un expert en LISP, peut-être faut-il que je fasse le LISP différemment?
Luna Posté(e) le 12 octobre 2020 Posté(e) le 12 octobre 2020 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
LElemurien Posté(e) le 12 octobre 2020 Auteur Posté(e) le 12 octobre 2020 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
rebcao Posté(e) le 12 octobre 2020 Posté(e) le 12 octobre 2020 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 @)
LElemurien Posté(e) le 12 octobre 2020 Auteur Posté(e) le 12 octobre 2020 Oui j'avais lu une info dessus mais le problème c'est que le script ne reconnait pas la commande "_XPLODE" ou plutôt le LISP ne la reconnait pas je ne sais plus mais j'avais essayer au cas où sans succès.
Olivier Eckmann Posté(e) le 12 octobre 2020 Posté(e) le 12 octobre 2020 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
LElemurien Posté(e) le 13 octobre 2020 Auteur Posté(e) le 13 octobre 2020 Bonjour et merci Olivier En effet cela fonctionne mais j'aimerai bien savoir pourquoi si c'est possible car le lisp n'a pas l'air d'être bien différent du mien? Bon je vais étudier cela de plus près quand j'aurai un peu plus de temps. En tout cas merci et bonne à journée à tous!
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