l56 Posté(e) le 22 janvier 2008 Posté(e) le 22 janvier 2008 Comment peut-on, créer un jeux de selection répondant à (ssget "p") sans être créé en utilisant une commande AutoCAD mais une fonction Lisp ou Vlisp. Si quelqu'un à une idée ... Merci
(gile) Posté(e) le 22 janvier 2008 Posté(e) le 22 janvier 2008 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 - GitHub Développements sur mesure pour AutoCAD
l56 Posté(e) le 22 janvier 2008 Auteur Posté(e) le 22 janvier 2008 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+
Patrick_35 Posté(e) le 22 janvier 2008 Posté(e) le 22 janvier 2008 Salut J'avoue ne pas comprendre aussi. @+ 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 22 janvier 2008 Posté(e) le 22 janvier 2008 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 - GitHub Développements sur mesure pour AutoCAD
bonuscad Posté(e) le 22 janvier 2008 Posté(e) le 22 janvier 2008 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
l56 Posté(e) le 23 janvier 2008 Auteur Posté(e) le 23 janvier 2008 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éesJe 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
bonuscad Posté(e) le 23 janvier 2008 Posté(e) le 23 janvier 2008 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
(gile) Posté(e) le 23 janvier 2008 Posté(e) le 23 janvier 2008 (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 - GitHub Développements sur mesure pour AutoCAD
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