l56 Posté(e) le 30 mars 2020 Posté(e) le 30 mars 2020 Bonjour, Existe-t-il un moyen de savoir si une entité appartient à un jeux de sélection MAIS sans connaitre le nom du jeux.Pour essayer d’être clair, je vais donner un exemple : (setq js (ssadd))(vl-cmdf "_line" (list 0 0) (list 10 10) "")(setq ent (entlast))(ssadd ent js) Puis ensuite, je lance une commande qui me permet de sélectionner une entité, je sélectionne ma ligne et la commande me renvoie : (ent js) Merci
Fraid Posté(e) le 30 mars 2020 Posté(e) le 30 mars 2020 Bonjour, La fonction TYPE devrais te rendre service. https://github.com/Fraiddd
(gile) Posté(e) le 30 mars 2020 Posté(e) le 30 mars 2020 Salut, Personnellement, je ne comprends rien du tout à la question. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
l56 Posté(e) le 30 mars 2020 Auteur Posté(e) le 30 mars 2020 Merci Fraid, mais c'est pas ça que je cherche. J'aimerai savoir si une entité à été ou non intégré dans un jeux de sélection.et si oui, comment se nomme t'il ? Dans mon exemple, la réponse est oui et le jeux de sélection se nomme "js" (Gile), je ne sais pas si je suis plus clair ...
(gile) Posté(e) le 30 mars 2020 Posté(e) le 30 mars 2020 Pour savour si une entité (ENAME) appartient à un jeu de sélection, il y a la fonction ssmemb. Après, "comment se nomme t'il ?" dépend entièrement de la façon dont tu gères tes variables. Il faudrait que tu maintiennes à jour une liste des variables contenant des jeux de sélection pour pouvoir la parcourir et rechercher avec ssmemb si l'entité appartient à une ou plusieurs sélections. Mais si tout ça ne se passe pas dans la même fonction LISP, ça suppose des variables globales pour les jeux de sélection et la liste et ça c'est, à mon avis, à éviter absolument. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
l56 Posté(e) le 30 mars 2020 Auteur Posté(e) le 30 mars 2020 J'ai trouvé une méthodeJe liste les variables faisant référence au ENAME avec (vl-remove-if-not '(lambda ( symbol ) (eq 'ename (type (eval symbol)))) (atoms-family 0)) Meme chose pour les jeux de sélection(vl-remove-if-not '(lambda ( symbol ) (eq 'pickset (type (eval symbol)))) (atoms-family 0)) Puis je teste si mon entité appartient à la liste. Merci pour votre aideL56
(gile) Posté(e) le 30 mars 2020 Posté(e) le 30 mars 2020 Je persiste à penser que si tu es obligé de passer par là (atoms-family), c'est que tu joues avec des variables (symboles) mal contrôlées et probablement globales. Si c'est le cas, tu es sur une mauvaise pente et que tu vas immanquablement au devant de problèmes (bugs) difficiles à résoudre.À ta place je reverrais complètement l'architecture du programme pour faire quelque chose de plus robuste sans utiliser de variables globales.De plus, le nombre de jeux de sélection actifs dans un dessin est limité, en LISP il suffit de les remettre à nil pour libérer les ressources (ce qui est automatique avec les variables locales). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
l56 Posté(e) le 31 mars 2020 Auteur Posté(e) le 31 mars 2020 Merci pour ton commentaire (Gile).Je sais bien que tu as raison, la rigueur n'est pas une option dans le développement.Je vais faire au mieux ...
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