DenisHen Posté(e) le 28 juillet 2018 Posté(e) le 28 juillet 2018 Bonjour à tous... J'ai un petit problème avec un (ssget, en effet, j'ai une erreur (sslength JeuSel)=; erreur: type d'argument incorrect: lselsetp nilAvec ce code donné en exemple dans l'excellent "Introduction à AutoLisp" de Maître (gile) : (setq JeuSel (ssget "_W" '(2 5) '(30 18))) (princ "\n(sslength JeuSel)=") (princ (sslength JeuSel)) Sachant qu'il n'y a rien dans cette fenêtre. Mon code d'origine est : (setq JeuSel (ssget "_W" XYMinSel XYmaxSel)) avec XYMinSel=(776360.0 2.3616e+006)XYMaxSel=(776464.0 2.36168e+006) 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 28 juillet 2018 Posté(e) le 28 juillet 2018 Salut, ssget retourne nil si aucun objet n'a été sélectionné.(sslength nil) génère une erreur : type d'argument incorrect: lselsetp nil. Donc pour savoir si le jeu de sélection retourné par ssget est vide, il suffit de regarder si l'expression retourne nil.(if (null (setq JeuSel (ssget "_W" XYMinSel XYmaxSel))) (princ "\nAucun objet sélectionné.") (princ (strcat "\n" (itoa (sslength jeuSel)) " objet(s) sélectionné(s).")) )ou, plus simplement puisqu'en LISP tout c qui n'est pas nil est vrai :(if (setq JeuSel (ssget "_W" XYMinSel XYmaxSel)) (princ (strcat "\n" (itoa (sslength jeuSel)) " objet(s) sélectionné(s).")) (princ "\nAucun objet sélectionné.") ) NB : on devrait toujours "emballer" un appel à ssget dans une expression conditionnelle du type: (if (setq ss (ssget ...)) ...) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 28 juillet 2018 Auteur Posté(e) le 28 juillet 2018 Salut. Merci pour ton aide, ça fonctionne nickel... Je pensais, à tord, que le (sslength retournerait 0 s'il était vide... Encore merci... 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)
DenisHen Posté(e) le 28 juillet 2018 Auteur Posté(e) le 28 juillet 2018 Par contre, j'ai placé un filtre à mon (ssget, mais je ne suis pas sûr qu'il fonctionne. Je cherche à exclure de ma sélection ce qui est dans les calques "Cadre" et "Cartouche"... Voici mon bout de code :(ssget "_W" XYMinSel XYmaxSel '((-4 . "/=") (-4 . "<AND") (8 . "Cadre") (8 . "Cartouche") (-4 . "AND>")) ) J'avoue que c'est la première fois que j'utilise ce type de filtre... Une petite question subsidiaire, peut-on écrire :(8 . "Cadre,Cartouche") 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 28 juillet 2018 Posté(e) le 28 juillet 2018 Tu peux simplement faire : '((-4 . "")) PS : les tests relationnels comme "/=" ne fonctionnent qu'avec des nombres. Voir la section 16.4 de Introduction à AutoLISP. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 28 juillet 2018 Auteur Posté(e) le 28 juillet 2018 Merci (gile) pour ton aide. J'ai mal interprété ""!=" ou "/=" ou "<>" : différent de" dans la section 16.4... Encore merci... Ça fonctionne nickel... Mais il y a une petite correction, (le deuxième "-4") pour le cas où quelqu'un d'autre aurait besoin de ton exemple...'((-4 . "<NOT") (8 . "Cadre,Cartouche") (-4 . "NOT>")) 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