bonuscad Posté(e) le 3 octobre 2005 Posté(e) le 3 octobre 2005 Bonjour, Je viens de lire un post (sur le forum US d'autodesk) avec une réponse interessante sur les options de (ssget) Voici un copier-coller de la réponse: ;) I picked this up from some helpful soul a while back :-(ssget) optionsSome of these are undocumented.A AllB BoxC CrossingCP Crossing Polygon:D Duplicates OK:E Everything in apertureF FenceG GroupsI ImpliedL Last:L Rejects locked layersM Multiple:N NestedP Previous:P Rejects Viewport:S Force single object selection onlyW WindowWP Window PolygonX Extended search (search whole database) Also, the following on a thread about this subject - sorry I lost the"Author" info :- Try this, Jason: (ssget "+.:E:S" '((0 . "ARC"))) (Stig Madsen clued me in on the "+." option!) Voir le FIL original Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
(gile) Posté(e) le 3 octobre 2005 Posté(e) le 3 octobre 2005 Salut, Çà a l'air super :D Je ne m'appelle pas Jason, mais j'ai voulu essayer quand même ! (ssget "+.:E:S" '((0 . "ARC"))) Çà marche pas :casstet: , même en faisant : (ssget "+._:E_:S" '((0 . "ARC"))) j'ai toujours :; erreur: chaîne du mode ssget incorrecte [Edité le 3/10/2005 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 3 octobre 2005 Posté(e) le 3 octobre 2005 Salut(ssget "[b]_[/b]+.:E:S" '((0 . "ARC"))) Je ne m'appelle pas JasonEt sa toison d'or ? ;) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 3 octobre 2005 Posté(e) le 3 octobre 2005 Et sa toison d'or ? Pas trouvée :( Et encore une fois merci, çà marche :D Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bonuscad Posté(e) le 3 octobre 2005 Auteur Posté(e) le 3 octobre 2005 Je viens de faire un essai avec cette option.Je ne sais pas si, suivant la version d'Autocad cela est diffèrent.En tout cas sur 2000. si j'ai des doublons d'arc par exemple(command "_list" (ssget "_+.:E:S" '((0 . "ARC"))) "") me retourne (n trouvé)alors que(command "_list" (ssget "_:S" '((0 . "ARC"))) "") ne me retourne 1 SEULE (single) entité L'option "+." est elle efficace ? En plus je ne comprens pas trop l'interêt de coupler ces 2 options.Pourtant je l'ai vu souvent employée dans des routines, et je l'ai moi même copier bêtement pour l'appliquer, mais maintenant j'ai un doute.Mais il me semblait l'avoir testé sous 2005 avec un résultat correcte. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
(gile) Posté(e) le 3 octobre 2005 Posté(e) le 3 octobre 2005 ERRATUM Et encore une fois merci, çà marche En fait, non :( Je confirme ce que dit bonus (ssget "_+.:E:S" '((0 . "ARC"))) fonctionne comme (ssget "_:E" '((0 . "ARC"))) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 3 octobre 2005 Posté(e) le 3 octobre 2005 Désolé (gile)(ssget "_+.:E:S" '((0 . "ARC"))) ne fonctionne absolument pas comme (ssget "_:E" '((0 . "ARC")))et (ssget "_+.:E:S" '((0 . "ARC"))) n'est pas complétement identique à (ssget "_:S" '((0 . "ARC")))par contre(ssget "_+.:E:S" '((0 . "ARC"))) ressemble à (ssget "_+.:S" '((0 . "ARC"))) et à (ssget "_:E:S" '((0 . "ARC"))) Extrait de l'aide:E Everything within the cursor's object selection pickbox.:S Allow single selection only. L'option :E permet qu'un seul clic en sélection. Si on le retire, il est possible de faire des fenêtres, des captures avec la sourisPar contre, on peut se poser la question de l'utilité de cette option +. Et en regardant de plus près les autres options, je me demande à quoi servent celles-ciB Box, : D Duplicates OK, :L Rejects locked layers, M Multiple, :N Nested, : P Rejects Viewport @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bonuscad Posté(e) le 4 octobre 2005 Auteur Posté(e) le 4 octobre 2005 Merci pour l'eclaircissement de l'option :E , j'avais compris (tout ce qui est dans la cible du curseur) ce qui n'était pas exactement ça J'ai réussi a comprendre l'option :D Elle permet de mettre plusieurs fois dans le jeu de sélection une MEME entité en cliquant plusieurs fois dessus (sslength (ssget "_:D" )) L'option :L qui permet d'exclure les entités des calques verrouillés Je n'ai pas réussi à faire fonctionner les autres:mais je pense queB est équivalent à l'option Boite de Select capture ou fenetre suivant le sens.:N doit permettre de sélectionner des entités imbriquées (mais comment?):P doit normallement rejeter les entités fenêtres (j'ai essayé sans succés)M doit éviter la mise en surbrillance des objets selectionnés (pour entité complexe) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
(gile) Posté(e) le 4 octobre 2005 Posté(e) le 4 octobre 2005 Merci à tous les deux pour toutes ces explications, la prochaine fois j'essayerais d'appronfondir les tests avant de dire des bétises :mad2: Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 5 octobre 2005 Posté(e) le 5 octobre 2005 J'ai réussi a comprendre l'option :DElle permet de mettre plusieurs fois dans le jeu de sélection une MEME entité en cliquant plusieurs fois dessusJe ne comprends pas trop son intérêt ?? B est équivalent à l'option Boite de Select capture ou fenetre suivant le sens.On a déjà C Crossing, CP Crossing Polygon, W Window et WP Window Polygon !! Il me tarde d'avoir une nouvelle version pour tester ces nouvelles fonctionnalités @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Luna Posté(e) le 5 mars 2020 Posté(e) le 5 mars 2020 Salut, je me permet de répondre à ce sujet car j'ai quelques questions vis-à-vis des additions d'options de la fonction (ssget)... J'ai trouvé la méthode pour ne sélectionner qu'un unique objet situé au-dessous du curseur avec : (ssget "_:S+.") Cependant, je n'arrive pas à trouver d'aide/forum qui parle d'une méthode pour effectuer plusieurs méthodes sur un seul (ssget)..Mon idée serait de prendre en compte la pré-sélection lors du lancement de ma fonction, donc pour ça, j'ai accès à ce jeu de sélection (nommé "jsel") grâce aux méthodes : (setq jsel (last (ssgetfirst))) ;; ou bien (setq jsel (ssget "I")) Sachant que la seconde méthode permet d'ajouter un filtre à la sélection si nécessaire (donc c'est celle que j'utilise) Mais comment faire pour ne conserver les objets pré-sélectionnés qui appartiennent à une zone définie par une liste de points ? (setq jsel2 (ssget "CP" (pt-list))) L'idée étant de combiner les deux pour m'éviter d'avoir à parcourir le premier jeu "jsel" via une boucle (while) ou un (repeat) pour en supprimer les objets qui n'appartiennent pas au jeu de sélection "jsel1" via (ssmemb) et (ssdel).. Sauf que, impossible de trouver une syntaxe correcte du genre : (setq jsel (ssget "I+CP")) ;; ou bien (setq jsel (ssget "_I+_CP")) Bref... je suis perdue.. donc si jamais vous avez une solution, je suis preneuse !Merci !! ;)
Fraid Posté(e) le 5 mars 2020 Posté(e) le 5 mars 2020 Bonjour,Sauf que, impossible de trouver une syntaxe correcte du genre :(setq jsel (ssget "I+CP"));; ou bien(setq jsel (ssget "_I+_CP")) Le + s'utilise comme ceci "_+.:I:CP" Une Page de Lee Mac. https://github.com/Fraiddd
Luna Posté(e) le 5 mars 2020 Posté(e) le 5 mars 2020 Merci pour ta réponse, je n'avais pas vu que Lee Mac avait fait une page spécialement pour la fonction (ssget) ! --' En revanche, si je comprend bien, le "+." ne sert pas de "liaison" entre les différents mode de sélection mais uniquement à forcer la sélection pour les entités situées sous le curseur (un peu équivalent à la méthode "_:E"). Mais du coup, si je cherche à utiliser la méthode "I" (Implied) combinée à la méthode "CP" (Capture Polygon), cette écriture ne fonctionne pas ... : (setq jsel (ssget "_:I:CP" [pt-list])) cela provient sûrement du fait que les méthodes Implied et Capture Polygon ne possède pas de ":" lors de leur utilisation... Ahhhh (pardon..) à priori, en suivant cette logique : (setq jsel (ssget "_ICP" [pt-list])) Me retourne bel et bien un jeu de sélection, mais il ne s'agit pas de l'intersection entre la méthode "I" et la méthode "CP"...(je sais pas si je suis très claire là..) --" en faisant quelques test, la fonction (ssget) ne lis pas la totalité de la chaîne, elle s'arrête à la première méthode connue et l'applique, en gros :(setq jsel (ssget "_ICP" [pt-list])) est strictement équivalent à (setq jsel (ssget "_I")) et différent de(setq jsel (ssget "_CPI" [pt-list])) qui est strictement équivalent à (setq jsel (ssget "_CP" [pt-list])) Donc je reviens à la case départ... il n'existe pas de manière de combiner les méthodes qui ne possèdent pas ":" ?Car en comparaison (et en lien aux messages précédant), on a bien :(setq jsel (ssget "_:E")) différent de (setq jsel (ssget "_:S:E")) Donc ici, les deux méthodes se combinent...Raaahhh...c'est rageant !! :angry: Bon merci pour ta réponse encore ! :)
Vincent P. Posté(e) le 25 mars 2020 Posté(e) le 25 mars 2020 Bonjour bonjour, Je viens pour papoter de SSGET.Je cherche actuellement à sélectionner toutes les entités dont la couleur a été forcée.Dans le code DXF d'une entité, le 62 réfère à la couleur ( '(62.1) c'est rouge par exemple).J'ai deux méthodes qui se proposent, soit je sélectionne tout ceux dont la couleur a été forcée, soit je sélectionne tout, sauf ceux dont la couleur est restée à "DuCalque". Le problème, c'est que si la couleur n'a pas été forcée, entget ne renvoie pas de pair pointée 62.(assoc 62 (entget (car (entsel))))renvoi : nil J'ai testé ces trois codes (enfin plus, mais ce sont les trois qui me paraissent le plus proche ce de que je veux) :(sslength (ssget "_X" '((-4 . "*") (62 . 0)))) (sslength (ssget "_X" '((-4 . "!=") (62 . 0)))) (sslength (ssget "_X"))Les trois me renvoient le même nombre (a savoir 10, le nombre totale d'entités que j'ai sur mon dessin). Le but final serait de dérouler cette liste en appliquant la couleur "DuCalque" à ses entités, donc j'ai la facilitée de traiter toutes les entités sans filtrer, mais ça risque d'alourdir le processus. Je suis preneur de toutes bonnes idées :unsure: SélectivementVincent P. Lispeur éternel débutant! Autocad Map3D 2023 Covadis-Autopist 18.2
Fraid Posté(e) le 25 mars 2020 Posté(e) le 25 mars 2020 Bonjour, Je vais peut etre dire une betise, mais un simple (sslength (ssget "_X" '((62 . 1)))) ne fonctionne pas? https://github.com/Fraiddd
Vincent P. Posté(e) le 25 mars 2020 Posté(e) le 25 mars 2020 Si si ça fonctionne, mais ça ne sélectionne que les entités rouges.Et je me voie mal testez toutes les couleurs :D Lispeur éternel débutant! Autocad Map3D 2023 Covadis-Autopist 18.2
Fraid Posté(e) le 25 mars 2020 Posté(e) le 25 mars 2020 et cela (sslength (ssget "_X" '((-4 . "<NOT")(62 . 0)(-4 . "NOT>")))) https://github.com/Fraiddd
Luna Posté(e) le 25 mars 2020 Posté(e) le 25 mars 2020 Salut ! Tu peux essayer de faire des tests via l'opérande "&". Je n'ai pas vraiment de connaissance dans ce sujet mais avec les quelques tests effectués, j'ai pu obtenir des résultats : hypothèses :(A ) 1 entité couleur DuCalque(B ) 1 entité couleur DuBloc(C ) 1 entité couleur Vert(D ) 1 entité couleur Magenta(E ) 1 entité couleur 12(F ) 1 entité couleur 30(G ) 1 entité couleur 70,185,183(H ) 1 entité couleur 156,51,204 (sssetfirst nil (ssget "_X")) ; Retourne A, B, C, D, E, F, G, H (sssetfirst nil (ssget "_X" '((-4 . "&") (62 . 0)))) ; Retourne nil (sssetfirst nil (ssget "_X" '((-4 . "&") (62 . 1)))) ; Retourne C, G, H (sssetfirst nil (ssget "_X" '((-4 . "&") (62 . 2)))) ; Retourne C, D, F, G (sssetfirst nil (ssget "_X" '((-4 . "&") (62 . 3)))) ; Retourne C, D, F, G, H (sssetfirst nil (ssget "_X" '((-4 . "&") (62 . 4)))) ; Retourne D, E, F (sssetfirst nil (ssget "_X" '((-4 . "&") (62 . 5)))) ; Retourne C, D, E, F, G, H ... Je ne trouve pas vraiment d'aide sur le code DXF 62 particulièrement est donc notamment sur cet opérande "&" et son fonctionnement (bit de validation), je pense que (gile) ou tout autre lispeur sachant lispé avec les codes DXF et les filtres (ssget) seront plus à même de t'aider.. Il me semble que le problème vient du fait que les couleurs ont différents nom et format (de 0 à 256 ; R,V,B ; carnet de couleur ; ...) et donc il est possible que l'on soit obliger de parler en binaire ou hexadécimale pour l'opérande "*" mais encore une fois, je ne suis pas une sachante donc ce ne sont que des spéculations ^^' Bisous,Luna
Luna Posté(e) le 25 mars 2020 Posté(e) le 25 mars 2020 La couleur 0 correspond à DuBloc, pour DuCalque il s'agit de la couleur 256 :) et cela (sslength (ssget "_X" '((-4 . "<NOT")(62 . 0)(-4 . "NOT>")))) Donc un truc du genre :(sslength (ssget "_X" '((-4 . "<NOT")(62 . 256)(-4 . "NOT>")))) (sslength (ssget "_X" '((-4 . "<NOT")(-4 . "<OR")(62 . 0)(62 . 256)(-4 . "OR>")(-4 . "NOT>")))) Fonctionne en effet mieux !!^^Pourquoi faire compliqué quand on peut faire simple et propre !^^' Bisous,Luna
Vincent P. Posté(e) le 25 mars 2020 Posté(e) le 25 mars 2020 Alléluia! Merci pour ce 256 Luna! (sslength (ssget "_X" '((-4 . "!=") (62 . 256)))) Et ça marche impeccablement SatisfaisamentVincent P. Lispeur éternel débutant! Autocad Map3D 2023 Covadis-Autopist 18.2
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