Bonjour,
Y'a t-il un moyen de sélectionner tous les objets d'un calque juste en cliquant sur un seul objet de ce calque? comme une sélection rapide mais juste en cliquant sur un objet.
Merci
Page 1 sur 1
Sélection de calques à partir d'objets
#2
Posté 15 avril 2014 - 09:03
Salut,
Regarde le LISP Special_selections sur cette page (ou celle-là).
La commande SSL correspond à ta demande.
Regarde le LISP Special_selections sur cette page (ou celle-là).
La commande SSL correspond à ta demande.
#3
Posté 15 avril 2014 - 09:09
(defun c:laysel (/ SS FILTRE I E LAY) (setq SS (ssget)) (if SS (progn (setq FILTRE '((-4 . "OR>")) ) (setq I 0) (while (< I (sslength SS)) (setq E (entget (ssname SS I))) (setq LAY (assoc 8 E)) (setq FILTRE (cons LAY FILTRE)) (setq I (+ I 1)) ) (setq FILTRE (cons '(-4 . "<OR") FILTRE)) (setq SS (ssget "_X" FILTRE)) (sssetfirst SS SS) ) ) (princ) )
Pour les versions après 2011, il y a aussi la commande Autocad SELECTSIMILAR qui permet de faire la même chose, en mieux. On peut paramétrer "similaires d'après". Par défaut, cette commande est paramétrée de façon à avoir une similitude entre "calque" et "nom". On va donc pouvoir sélectionner, par exemple, toutes les lignes d'un certain calque.
Il est possible d'avoir cette commande également en menu contextuel. Clic droit après avoir sélectionné un objet, puis "sélectionner similaire"
Amicalement
Vincent
C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)
C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
#4
Posté 15 avril 2014 - 10:33
zebulon_, le 15 avril 2014 - 09:09 , dit :
(defun c:laysel (/ SS FILTRE I E LAY) (setq SS (ssget)) (if SS (progn (setq FILTRE '((-4 . "OR>")) ) (setq I 0) (while (< I (sslength SS)) (setq E (entget (ssname SS I))) (setq LAY (assoc 8 E)) (setq FILTRE (cons LAY FILTRE)) (setq I (+ I 1)) ) (setq FILTRE (cons '(-4 . "<OR") FILTRE)) (setq SS (ssget "_X" FILTRE)) (sssetfirst SS SS) ) ) (princ) )
Pour les versions après 2011, il y a aussi la commande Autocad SELECTSIMILAR qui permet de faire la même chose, en mieux. On peut paramétrer "similaires d'après". Par défaut, cette commande est paramétrée de façon à avoir une similitude entre "calque" et "nom". On va donc pouvoir sélectionner, par exemple, toutes les lignes d'un certain calque. Si on ne veut que le calque, il faut supprimer le paramètre "nom".
Il est possible d'avoir cette commande également en menu contextuel. Clic droit après avoir sélectionné un objet, puis "sélectionner similaire"
Amicalement
Vincent
oui je connaissais la sélection similaire, je m'en sers beaucoup d'aillaurs, mais là j'avais vraiment besoin de faire des sélections de calque. Il est génial ton LISP, merci beaucoup.
Merci à tous pour votre aide
A bientôt!

#5
Posté 15 avril 2014 - 14:03
SELECTSIMILAR ne permet de sélectionner que des objets de même type. C'est dommage que cette commande soit restrictive à ce point. On aurait pu prévoir le type d'objet dans le choix de paramètres au même titre que les calques
Amicalement
Vincent
Amicalement
Vincent
C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)
C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
#6
Posté 26 septembre 2018 - 13:41
Bonjour,
Pour revenir sur cette discussion d'il y a quelque temps maintenant, la routine permet, en cliquant sur un objet, de sélectionner la propriété "calque" de cet objet et de l'appliquer au "dessin entier".
Existe t-il une routine qui permet de faire exactement pareil, mais d'appliquer la sélection à la "sélection courante"?
Merci
Pour revenir sur cette discussion d'il y a quelque temps maintenant, la routine permet, en cliquant sur un objet, de sélectionner la propriété "calque" de cet objet et de l'appliquer au "dessin entier".
Existe t-il une routine qui permet de faire exactement pareil, mais d'appliquer la sélection à la "sélection courante"?

Merci
#8
Posté 28 septembre 2018 - 07:42
Bonjour,
Ce n'est pas évident, car partant d'une sélection courante, il faudra désélectionner pour sélectionner uniquement le ou les objet(s) dont on veut le(s) calque(s), puis resélectionner la sélection courante (qui n'est plus courante) avant d'appliquer le filtre.
C'est possible, mais c'est un peu plus de boulot à écrire.
Olivier
Ce n'est pas évident, car partant d'une sélection courante, il faudra désélectionner pour sélectionner uniquement le ou les objet(s) dont on veut le(s) calque(s), puis resélectionner la sélection courante (qui n'est plus courante) avant d'appliquer le filtre.
C'est possible, mais c'est un peu plus de boulot à écrire.
Olivier
#9
Posté 28 septembre 2018 - 07:42
Salut,
j'utilise la commande "_filter", mais je ne comprends pas "appliquer la sélection à la "sélection courante" ?
j'utilise la commande "_filter", mais je ne comprends pas "appliquer la sélection à la "sélection courante" ?
COME
La vie sans musique est tout simplement une erreur, une fatigue, un exil. »
Friedrich Nietzsche
La vie sans musique est tout simplement une erreur, une fatigue, un exil. »
Friedrich Nietzsche
#10
Posté 28 septembre 2018 - 13:44
Citation
Existe t-il une routine qui permet de faire exactement pareil, mais d'appliquer la sélection à la "sélection courante"?
En complétant le code de zebulon_Devrait fonctionner en priorité sur une sélection "Implicite", puis "Précédente" et par défaut "Tout", mais pas trop testé...
(defun c:laysel_i (/ SSI SS FILTRE I E LAY) (setq SSI (ssget "_I")) (if (null SSI) (setq SSI (ssget "_P"))) (if (null SSI) (setq SSI (ssget "_X"))) (sssetfirst nil nil) (setq SS (ssget)) (if SS (progn (setq FILTRE '((-4 . "OR>")) ) (setq I 0) (while (< I (sslength SS)) (setq E (entget (ssname SS I))) (setq LAY (assoc 8 E)) (setq FILTRE (cons LAY FILTRE)) (setq I (+ I 1)) ) (setq FILTRE (cons '(-4 . "<OR") FILTRE)) (sssetfirst nil SSI) (setq SS (ssget "_I" FILTRE)) (sssetfirst nil nil) (sssetfirst nil SS) ) ) (princ) )
Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Partager ce sujet :
Page 1 sur 1