Aller au contenu

Jeux de sélection \"précédent\"


l56

Messages recommandés

Salut,

 

Je ne comprends pas bien la question, avec ssget ou ssadd tu fais un jeu de sélection, si enssuite tu fais (ssget "_P") tu récupères ce jeu de sélection.

Essayes

 

(ssget "_X" '((0 . "LWPOLYLINE")))
(sssetfirst nil (ssget "_P")) 

 

Mais je ne vois pas l'intérêt par rapport à l'utilisation d'une variable pour stoquer le jeu de sélection :

 

(setq ss (ssget "_X" '((0 . "LWPOLYLINE"))))
(sssetfirst nil ss) 

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

Je sais , c'est un peu tordu.

 

Imagines que tu as des entités dans un jeu de sélection (js1) et que le jeux de sélection précèdent n'est pas js1. (car c'est un "vieux" jeux de sélection)

Comment le repassé en précédent SANS utilisé de commande.

 

Cette solution me permettrait de ne pas retoucher à ce qui est déjà codé. Mais c'est vrai, le mieux serait de tout refaire correctement.

C'est sûrement ce que je vais faire si je ne trouve pas cette astuce.

 

En tout cas, merci de ta réponse à ce faux problème.

 

a+

 

 

Lien vers le commentaire
Partager sur d’autres sites

Re,

 

Si ton jeu de sélection est stoqué dans la variable jsl, je ne comprends pas pourquoi tu n'utilises pas cette variable, mais si tu veux vraiment récupérer le jeu de sélection en faisant :

(ssget "_P")

 

tu peux faire :

(sssetfirst nil jsl)

(sssetfirst nil nil)

et le jeu de sélection précédent sera jsl.

 

 

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

Si j'ai pu comprendre ton problème que j'imagine.

 

Je suppose qu'auparavant tu ais utilisé une fonction lisp où un jeux de sélection aurait été utilisé mais dont la variable serait déclaré en locale (donc remise à nil en fin de procédure)

 

Dans ton code tu dois simplement en premier lieu réaffecter ce jeu à une variable AVANT de constituer une nouvelle sélection pour éviter de l'écraser par un nouveau (qui deviendrait le précédent)

 

Donc par exemple un

(setq js_previous (ssget "_P"))

en tout début de code te permettra de récupérer ton dernier jeu de sélection (nil si inexistant)

Après tu peux contistuer d'autre jeux mais l'utilisation de (ssmemb) sera peut être utile suivant ce que tu fais avec ces jeux de sélection.

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

Bon. Je vais vous expliquer mon astuce à 2 balles !

 

Dans un jeux de sélection (JS1), vous avez 10 entités. La suite des évenements fait que sur ces 10 entités, 3 sont éffacées par l'utilisateur.

Le probleme c'est que (sslength JS1) renvoi toujours 10.

Donc une boucle du type

(repeat (sslength JS1) ....

ne fonctionne plus comme je voudrai.

Donc, avant de lancer cette boucle, je faisais:

 

(command "_select" JS1 "") et apres (ssget "_p") dans la suite du programme

 

cela permet de "purger" du jeux les entités effacées

Je sais, il y a nettement plus noble, mais ça marchai !

 

Depuis que j'utilise les reacteurs, les commandes d'AutoCAD sont à bannir.

Je dois donc remplacer (command "_select" JS1 "") par un routine qui purge les entités effacées (ça, ça va, je sais faire) mais je dois aussi rendre ce jeux de sélection accessible par (ssget "_p").

 

et

(sssetfirst nil jsl)

(sssetfirst nil nil)

ne fonctionne pas.

 

Si une solution rapide existe, tres bien, sinon je prendrai le temps de re-coder correctement tout ça.

 

Merci

 

 

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

je prendrai le temps de re-coder correctement tout ça.

 

Avec des jeux de sélection, tu ne peux y échapper, ils demandent de la rigueur.

 

La suite des évenements fait que sur ces 10 entités, 3 sont éffacées par l'utilisateur.

Donc je confirme l'utilisation de (ssmemb) (ssadd) (ssdel) pour tenir tes jeux de sélection à jour à l'instant T.

 

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

(sssetfirst nil jsl)

(sssetfirst nil nil)

ne fonctionne pas.

 

Au temps pour moi, j'avais lu JSL et donc écrit jsl au lieu de JS1, si tu remplaces le L par 1 ça devrait fonctionner (ça marche chez moi).

 

Mais c'est vraiment du "bricolage", je suis d'accord avec Bonuscad.

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

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é