CadXP: Commande décomposer dans un script - CadXP

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Commande décomposer dans un script Problème lors d'un script sur plusieurs fichiers

#1 L'utilisateur est hors-ligne   LElemurien 

  • ceinture bleue
  • Groupe : Membres
  • Messages : 165
  • Inscrit(e) : 01-novembre 18

Posté 12 octobre 2020 - 14:51

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
0

#2 L'utilisateur est hors-ligne   bonuscad 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 4 774
  • Inscrit(e) : 20-juin 03

Posté 12 octobre 2020 - 15:25

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
0

#3 L'utilisateur est hors-ligne   LElemurien 

  • ceinture bleue
  • Groupe : Membres
  • Messages : 165
  • Inscrit(e) : 01-novembre 18

Posté 12 octobre 2020 - 16:59

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?
0

#4 L'utilisateur est en ligne   Luna 

  • ceinture bleue
  • Groupe : Membres
  • Messages : 137
  • Inscrit(e) : 27-février 20

Posté 12 octobre 2020 - 17:08

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
0

#5 L'utilisateur est hors-ligne   LElemurien 

  • ceinture bleue
  • Groupe : Membres
  • Messages : 165
  • Inscrit(e) : 01-novembre 18

Posté 12 octobre 2020 - 17:22

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
0

#6 L'utilisateur est hors-ligne   rebcao 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 7 261
  • Inscrit(e) : 25-août 04
  • LocationSELESTAT

Posté 12 octobre 2020 - 18:39

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 Supports de Cours AutoCAD, des Outils AutoCAD...
cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
0

#7 L'utilisateur est hors-ligne   LElemurien 

  • ceinture bleue
  • Groupe : Membres
  • Messages : 165
  • Inscrit(e) : 01-novembre 18

Posté 12 octobre 2020 - 18:42

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

#8 L'utilisateur est hors-ligne   Olivier Eckmann 

  • ceinture noire 2em dan
  • Groupe : Membres
  • Messages : 1 462
  • Inscrit(e) : 29-décembre 11
  • LocationLongjumeau (91)

Posté 12 octobre 2020 - 21:07

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
0

#9 L'utilisateur est hors-ligne   LElemurien 

  • ceinture bleue
  • Groupe : Membres
  • Messages : 165
  • Inscrit(e) : 01-novembre 18

Posté 13 octobre 2020 - 08:03

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!
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)