Aller au contenu

Sélection de calques à partir d'objets


fiesta13310

Messages recommandés

(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)

Lien vers le commentaire
Partager sur d’autres sites

(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! :)

Lien vers le commentaire
Partager sur d’autres sites

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

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)

Lien vers le commentaire
Partager sur d’autres sites

  • 4 ans après...

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

 

:huh:

 

Merci

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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é