Aller au contenu

Messages recommandés

Posté(e)

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)

Posté(e)

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

Posté(e)

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)

Posté(e)

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

Posté(e)

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

Posté(e)

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)

Posté(e)

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

Posté(e)

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)

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é