laurentpo Posté(e) le 27 mars 2017 Posté(e) le 27 mars 2017 Bonjour à tous,J'utilise un lisp qui me permet d'écrire, dans un fichier, les coordonnées des points de passage d'une polyligne.Actuellement ce lisp utilise le dernier élément créer.Je souhaiterais pouvoir lancer le même lisp mais cette fois sur l'entité précédemment modifiée (comme lorsque l'on utilise P).Actuellement mon code commence ainsi: (defun c:xypolyv ()(setq ent (entlast))(setq bdent (entget ent))(setq typent (cdr (assoc 0 bdent)))(if (= typent "LWPOLYLINE") (progn Je pense qu'il faut remplacer entlast mais je ne parviens pas à trouver par quoi, d'où ma demande d'aide. Merci. Laurent
zebulon_ Posté(e) le 27 mars 2017 Posté(e) le 27 mars 2017 Bonjour, voir l'aide qui correspond à la fonction (ssget ...) et toutes celles qui commencent par ss comme selection set (ou jeu de sélection). Je souhaiterais pouvoir lancer le même lisp mais cette fois sur l'entité précédemment modifiée (comme lorsque l'on utilise P). Lorsqu'on répond P à l'invite "choix des objets", on ne récupère pas forcément une seule entité mais un jeu de sélection qui peut contenir une ou n entités. On peut écrire (setq js (ssget "_p")) qui mettra dans la variable js le jeu de sélection précédent. js contiendra nil s'il n'y a pas de jeu de sélection précédent. On peut utiliser ssname pour, par exemple, récupérer le nom de la première entité dans js en écrivant (setq ent (ssname js 0)). On commence à compter à partir de 0. (setq js (ssget "_p")) (if js (setq ent (ssname js 0)) (progn (alert "Pas de jeu de sélection précédent.") (exit) ) ) C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
zebulon_ Posté(e) le 27 mars 2017 Posté(e) le 27 mars 2017 Mais en définitive, cela ne serait-il pas plus simple de remplacer (entlast) par (car (entsel)) en demandant à l'utilisateur de pointer la polyligne qui l'intéresse, qu'elle soit la dernière créée ou la dernière modifiée ou une autre quelconque ? Cela marcherait dans tous les cas sans demander la lune à l'utilisateur. AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
laurentpo Posté(e) le 27 mars 2017 Auteur Posté(e) le 27 mars 2017 Bonjour, Merci beaucoup pour la rapidité de votre réponse. J'ai mis en place la première solution proposée et cela fonctionne parfaitement. Effectivement la solution de demander à l'utilisateur de choisir l'entité serait idéale mais je ne parviens pas encore à trouver la bonne syntaxe. Laurent.
zebulon_ Posté(e) le 27 mars 2017 Posté(e) le 27 mars 2017 Bonjour,Merci beaucoup pour la rapidité de votre réponse.J'ai mis en place la première solution proposée et cela fonctionne parfaitement.Effectivement la solution de demander à l'utilisateur de choisir l'entité serait idéale mais je ne parviens pas encore à trouver la bonne syntaxe.Laurent. à la place de(setq ent (entlast)) on peut mettre(setq ent (car (entsel))) la fonction (entsel) retourne une liste dont le premier élément est le nom de l'entité choisie et dont le second élément est la liste des coordonnées du point utilisé pour la sélection. D'où l'utilisation de la fonction (car...), qui retourne le premier élément d'une liste, compte tenu que c'est le nom de l'entité qui nous intéresse. A noter qu'avec (entsel), on peut aussi "personnaliser" le message affiché(entsel "\nVeuillez choisir une polyligne : ") AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
laurentpo Posté(e) le 27 mars 2017 Auteur Posté(e) le 27 mars 2017 Génial, ça fonctionne parfaitement.Merci beaucoup pour ce coup de main efficace et rapide.Laurent
zebulon_ Posté(e) le 27 mars 2017 Posté(e) le 27 mars 2017 GénialJ'ai fait mon service militaire au 1er régiment de génie, ça doit venir de là mon côté génial, sans doute ! Je plaisante... J'étais bien au 1er RG mais en tant que VFI, donc mis à disposition du ministère du travail, de l'emploi et de la formation professionnelle, qui m'a ensuite mis à disposition du ministère de l'agriculture, plus particulièrement d'un lycée agricole. C'était génial, je n'allais à la caserne que pour toucher la solde de 444 francs...J'ouvre une parenthèse : c'était un peu un service civique avant l'heure et je profite de la tribune pour encourager tous les jeunes de 16 à 25 ans à se lancer pour effectuer une mission au service de l'intérêt général. Rien à voir avec le lisp ? Si, c'est au cours de cette mission que j'ai découvert ce langage de programmation et son génial inventeur.Je referme la parenthèse. AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
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