Aller au contenu

Messages recommandés

Posté(e)

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

Some of these are undocumented.

A All

B Box

C Crossing

CP Crossing Polygon

:D Duplicates OK

:E Everything in aperture

F Fence

G Groups

I Implied

L Last

:L Rejects locked layers

M Multiple

:N Nested

P Previous

:P Rejects Viewport

:S Force single object selection only

W Window

WP Window Polygon

X 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

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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 souris

Par 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-ci

B Box, : D Duplicates OK, :L Rejects locked layers, M Multiple, :N Nested, : P Rejects Viewport

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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 que

B 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

Posté(e)
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

Je 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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

  • 14 ans après...
Posté(e)

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 !! ;)

Posté(e)

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

  • 3 semaines après...
Posté(e)

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électivement

Vincent P.

Lispeur éternel débutant!
Autocad Map3D 2023
Covadis-Autopist 18.2

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

Alléluia!

 

Merci pour ce 256 Luna!

 

(sslength (ssget "_X" '((-4 . "!=") (62 . 256))))

 

Et ça marche impeccablement

 

Satisfaisament

Vincent P.

Lispeur éternel débutant!
Autocad Map3D 2023
Covadis-Autopist 18.2

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é