DenisHen Posté(e) le 15 mai 2021 Posté(e) le 15 mai 2021 Bonjour à toutes et à tous. Voilà, j'ai plusieurs calques contenant différentes entités. Mes calques (dont les noms contiennent le type d'entité) devraient être rangés comme suit : Tout les calques au premier plans, Les calques contenant "(Hach)" dans leur nom passent au deuxième plan, Les calques contenant '(Trame)" dans leur nom passent au troisième plan, Et les calques contenant "(Image)" dans leur nom passent au dernier plan. J'ai donc écris ceci qui ne fonctionne pas. Où me suis-je trompé ? (defun c:ECPS_TriHachTrameImage (/) (princ "\n\tDéveloppé par Denis H. (1.0)") (setq Select nil) (princ "\nTri des hachures.\n") (if (setq Select (ssget "_A" '((8 . "*(Hach)")))) ;_ Fin de setq (command-s "ordretrace" Select "" "AR") ) ;_ Fin de if (setq Select nil) (princ "\nTri des trames.\n") (if (setq Select (ssget "_A" '((8 . "*(Trame)")))) ;_ Fin de setq (command-s "ordretrace" Select "" "AR") ) ;_ Fin de if (setq Select nil) (princ "\nTri des images.\n") (if (setq Select (ssget "_A" '((8 . "*(Image)")))) ;_ Fin de setq (command-s "ordretrace" Select "" "AR") ) ;_ Fin de if (princ) ) ;_ Fin de defun Amicalement à toutes et à tous... 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)
(gile) Posté(e) le 15 mai 2021 Posté(e) le 15 mai 2021 Salut, Première question : est-ce que les sélections fonctionnent ? Dans un dessin test significatif (avec des entités sur les différents calques superposées dans le mauvais ordre), tu exécutes l'expression (depuis la ligne de commande ou l'éditeur VisualLISP) : (setq Select (ssget "_A" '((8 . "*(Hach)")))) Est-ce que ça renvoie nil ou pas ? Si c'est nil, c'est que ton filtre n'est pas bon. Si tu as bien un jeu de sélection, tu testes l'expression suivante : (command-s "ordretrace" Select "" "AR") Et tu regardes si ça a eu un effet dans AutoCAD, etc... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 15 mai 2021 Auteur Posté(e) le 15 mai 2021 Bonsoir (gile). En ligne de commande j'ai : Commande: (setq Select (ssget "_A" '((8 . "*(Hach)")))) <Selection set: 4> Commande: (setq Select (ssget "_A" '((8 . "*(Trame)")))) <Selection set: 8> Commande: (setq Select (ssget "_A" '((8 . "*(Image)")))) <Selection set: a> Je t'avoue que je n'ai pas compris le "a" en dernier, mais j'ai bien des entités dans mes calques. J'ai déjà testé l'expression "(command-s "ordretrace" Select "" "AR")" mais sans le "-s" à la fin de command, c'est important ? 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)
(gile) Posté(e) le 15 mai 2021 Posté(e) le 15 mai 2021 Je ne vois pas ce qui ne fonctionne pas chez toi. J'ai fait quelques tests et ça marche chez moi. Encore une fois, teste dans un dessin significatif avec d'abord une seule expression (command-s "_draworder" ...) pour voir le résultat. Le principal avantage d'AutoLISP est cette possibilité de pouvoir tester aussi facilement n'importe quelle expression LISP. command-s est une variation de command qui s'exécute théoriquement deux fois plus vite. Seule restriction avec command-s : on ne peut pas utilise de pause ou autre expression (get* ...) dans ses arguments (voir l'aide). Dans ton cas, on peut utiliser indifféremment l'un ou l'autre. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 15 mai 2021 Posté(e) le 15 mai 2021 Essaye comme ça : (defun c:test (/ putBack) (defun putBack (layer / s) (if (setq s (ssget "_X" (list (cons 8 layer)))) (command-s "_.draworder" s "" "_back") ) ) (foreach l '("*(Hach)" "*(Trame)" "*(Image)") (putBack l)) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 17 mai 2021 Auteur Posté(e) le 17 mai 2021 Ben comme ça, c'est nickel, mais je ne comprends pas pourquoi, tel que je le fais, ça ne fonctionne pas... Mille mercis... 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)
(gile) Posté(e) le 17 mai 2021 Posté(e) le 17 mai 2021 Pour essayer de comprendre, tu simplifies le problème avec deux jeux de sélection seulement contenant chacun une seule entité et tu entres les expressions LISP une par une en ligne de commande en contrôlant le résultat à chaque expression. En règle générale, on essaye toujours de décomposer un problème en plusieurs problèmes plus simple pour les tester séparément. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 17 mai 2021 Auteur Posté(e) le 17 mai 2021 Ok, merci pour ce précieux conseil. Mais je ne sais pas ce que je faisais mal. 😪 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)
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