balyoa Posté(e) le 27 février 2013 Posté(e) le 27 février 2013 Salut, J'ai certains blocs (points Covadis) donc l'attribut ALT est placé dans un calque "toto". Comment sélectionner tous ces blocs dont l'attribut ALT est situé sur le calque "toto" ? Le but est d'isoler ces points dans un nouveau layer. Merci d'avance pour votre aide. Cordialement. Yoann
alala Posté(e) le 27 février 2013 Posté(e) le 27 février 2013 Bonjour, Tu peu appliquer ceci :- Sélection du calque "toto" comme calque courrant.- Gel de tous les calques sauf "toto".- Sélection de tous les objets automatiquement (CTRL+A), ou en manuel à la souris. Il faut bien penser à geler les calques et pas uniquement les désactiver. En espérant que ça réponde à ton besoin. @+ C'est en forgeant que l'on devient forgerons.Et c'est en sciant que Léonard DeVinci!
Patrick_35 Posté(e) le 27 février 2013 Posté(e) le 27 février 2013 Salut Et dans les Spécial sélection des lisps de (gile) ? @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
balyoa Posté(e) le 27 février 2013 Auteur Posté(e) le 27 février 2013 Merci mais ca ne marche pas. Si je gèle tout sauf "toto" je n'ai plus rien à l'écran, car tous mes blocs sont dans le calque "point".Seul le layer dans lequel se trouve l'attribut diffère pour certains points. Cdt.
balyoa Posté(e) le 27 février 2013 Auteur Posté(e) le 27 février 2013 et non pas réussi avec le spécial sélection de gilles : pas d'option pour sélectionner des blocs par la valeur du calque sur lequel se trouve un attribut donné. @+
alala Posté(e) le 27 février 2013 Posté(e) le 27 février 2013 Un lisp moche et long à traiter qui fait ce que tu a besoin (normalement): (defun c:monattrib ( / Monbloc MonCalqueAttrib ss i MaSelec) (setq ss (ssget "_X" '((0 . "INSERT")))) (setq MonCalqueAttrib (getstring "Sur quel calque? ")) (setq i 0) (setq MaSelec (ssadd)) (while (setq MonBloc (ssname ss i)) (setq i (1+ i)) (while Monbloc (if (and (eq "ATTRIB" (cdr (assoc 0 (entget Monbloc)))) (eq MonCalqueAttrib (cdr(assoc 8 (entget Monbloc))))) (ssadd (cdr (assoc 330 (entget Monbloc))) MaSelec) ) (setq Monbloc (entnext Monbloc)) ) ) (setq SelectionEnCours MaSelec) (sssetfirst nil MaSelec) ) Si tu a un seul bloc qui est concerné tu peu ajouter à :(setq ss (ssget "_X" '((0 . "INSERT"))))Donc :(setq ss (ssget "_X" '((0 . "INSERT")(2 . "Le_Nom_De_Mon_Bloc")))) Sachant que les carractéres génériques sont pris en compte.Pour exemple, pour tous les bloc TCPOINT avec une numérotation (TCPOINT_1,TCPOINT_2,...) que certains logiciels peuvent produire,tu pourra écrire "TCPOINT*" comme nom de bloc. Ceci accélérera grandement le traitement si tu a de nombreux blocs qui ne sont pas concernés. En espérant que ça réponde au besoin. C'est en forgeant que l'on devient forgerons.Et c'est en sciant que Léonard DeVinci!
balyoa Posté(e) le 28 février 2013 Auteur Posté(e) le 28 février 2013 Merci pour ton lisp. Je sais pas si il est moche mais il est long ! ;-)Même en précisant le nom du bloc et le nom du calque, sur 10 points ca va mais sur 1000 ca ne finit jamais. Si un "optimiseur de lisp" passe dans le coin ;-) Mais encore merci pour votre aide. @+
vincentp010 Posté(e) le 28 février 2013 Posté(e) le 28 février 2013 En passant par du vlisp pour éviter de parser toute les définitions de blocs et se concentrer sur les attributs:(defun c:monattrib ( / Monbloc MonblocO MonCalqueAttrib ss i attr a MaSelec) (setq ss (ssget "_X" '((0 . "INSERT")))) (setq MonCalqueAttrib (getstring "Sur quel calque? ")) (setq i 0) (setq MaSelec (ssadd)) (while (setq MonBloc (ssname ss i)) (setq i (1+ i)) (setq MonblocO (vlax-ename->vla-object Monbloc)) (setq attr (vlax-invoke MonblocO 'getattributes)) (foreach a attr (if (= (vla-get-Layer a) MonCalqueAttrib) (ssadd Monbloc MaSelec)) ) ) (sssetfirst nil MaSelec) ) Aide au téléchargement du cadastre dgfip-download-helper Insertion de photos géolocalisées exif https://www.dropbox.com/s/gkf6o9ac2hxen97/exifscr.zip?dl=0 Script correction BUG SPDC V2, propriétaire département 21 et 22 : https://greasyfork.org/scripts/442400-spdcv2/code/SPDCV2.user.js
Olivier Eckmann Posté(e) le 28 février 2013 Posté(e) le 28 février 2013 bonjour, La méthode de Alala fonctionne bien à condition d'utiliser INACTIF et surtout pas GELER sur tous les calques sauf toto En effet, si tu gèles le calque POINT, tout le bloc y compris ses attributs seront sortis des objets graphiques regénérés donc affichables, alors que si tu inactives ton calque POINT, seul le piqué est désactivé, les calques des sous composants du bloc (attributs) restent à volonté activable (affichable) ou pas. Olivier
alala Posté(e) le 28 février 2013 Posté(e) le 28 février 2013 Merci pour ton lisp. Je sais pas si il est moche mais il est long ! ;-)Même en précisant le nom du bloc et le nom du calque, sur 10 points ca va mais sur 1000 ca ne finit jamais. Si un "optimiseur de lisp" passe dans le coin ;-) Mais encore merci pour votre aide. @+Bonjour, Le truc (comme dit par vincentp010 ) c'est que je passe en revu tous les objets des blocs.Dans le cas d'un point d'alti classique ça fait juste 3 élément (point + 2 atributs), donc si en plus il n'y a pas de filtres de blocs et que tu a des blocs lourd ça devient TRES LONG! Le Vlist fournis par vincentp010 résoud se problème de vitesse en se concentrant sur les attributs et en passant par du Vlisp. Il tes reste plus qu'a lancer la routine et à prendre la pause dej' ;) @+ C'est en forgeant que l'on devient forgerons.Et c'est en sciant que Léonard DeVinci!
alala Posté(e) le 28 février 2013 Posté(e) le 28 février 2013 bonjour, La méthode de Alala fonctionne bien à condition d'utiliser INACTIF et surtout pas GELER sur tous les calques sauf toto En effet, si tu gèles le calque POINT, tout le bloc y compris ses attributs seront sortis des objets graphiques regénérés donc affichables, alors que si tu inactives ton calque POINT, seul le piqué est désactivé, les calques des sous composants du bloc (attributs) restent à volonté activable (affichable) ou pas. OlivierBonjour, Dans ce cas pas de CTRL+A sinon tu sélectionne tous les objets de tous les calques même les innactif! @+ C'est en forgeant que l'on devient forgerons.Et c'est en sciant que Léonard DeVinci!
rebcao Posté(e) le 1 mars 2013 Posté(e) le 1 mars 2013 Bonjour, Pour information, pour parcourir les calques, on peut utiliser la commande bien pratique, dans la BARRE CALQUE 2 (Menu Format : Outils de calques >) : PARCOURIR LES CALQUES... Cette fonction isole très rapidement le ou les calques sélectionnés (double clic)... Une fois terminé, on fait CALQUE PRECEDENT et on retrouve le dessin avec les calques qui étaient initialement afffcihés ! Cette commande utilise d'ailleurs INACTIF ! Mais après comme il s'agit d'un élément appartenant à un BLOC c'est tout le bloc qui sera placé sur le calque de "L'attribut"... Il faudra attaquer en LISP... Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
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