willy95 Posté(e) le 31 juillet 2019 Posté(e) le 31 juillet 2019 Bonjour à tous, J'ai vraiment du mal à ecrire quelques lignes en lisp pour récuperer les coordonnées du centre d'un cercle et son diametre que je viens de tracer par 3 points en utilisant (entlast). Qui peux me guider sur une solution plutot simple. Merci par avance.
DenisHen Posté(e) le 31 juillet 2019 Posté(e) le 31 juillet 2019 Salut.Tu as tout ici, le centre est le code DXF 10 et le rayon est le DXF 40. Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
>>NicoM Posté(e) le 31 juillet 2019 Posté(e) le 31 juillet 2019 Je débute tout juste en lisp mais j'ai tenté de t'écrire un petit quelque chose:(setq ent (car (entsel))) ; sélection du cercle (setq ent-liste (entget ent)) ; création de la liste (if (= (cdr (assoc 0 ent-liste)) "CIRCLE") ; vérification du type d'entité (progn (setq XY (cdr (assoc 10 ent-liste))); récupération des coordonnées dans la variable XY (setq R (cdr (assoc 40 ent-liste))) ; récupération du rayon dans la variable R ) (alert "Ce n'est pas un cercle") ) ; fin du IF (princ) C'est probablement pas très bien écrit mais ça fonctionne chez moi. Projeteur Béton Armé sur Revit et AutoCAD 2023 Une connaissance acquise ne devient vivante que si on l’a repensée par soi-même.
willy95 Posté(e) le 31 juillet 2019 Auteur Posté(e) le 31 juillet 2019 Merci beaucoup pour vos prompt réponses utiles. :)
Vincent P. Posté(e) le 31 juillet 2019 Posté(e) le 31 juillet 2019 Bonjour bonjour, Allez donc jeter un coup d’œil ici :https://www.da-code.fr/yinyang/ LispementVincent P. Lispeur éternel débutant! Autocad Map3D 2023 Covadis-Autopist 18.2
willy95 Posté(e) le 31 juillet 2019 Auteur Posté(e) le 31 juillet 2019 Mais en fait, je n'arrive pas à sélectionner le cercle juste avant tracé avec "entlast", ce bout de code me redemande par selection le cercle :( (command "cercle" "3p" DiamPoint1 DiamPoint2 DiamPoint3) (setq ent (car (entsel) )) ; sélection du cercle (setq ent-liste (entget ent)) ; création de la liste (if (= (cdr (assoc 0 ent-liste)) "CIRCLE") ; vérification du type d'entité (progn (setq XY (cdr (assoc 10 ent-liste))) ; récupération des coordonnées dans la variable XY (setq R (cdr (assoc 40 ent-liste))) ; récupération du rayon dans la variable R ) (alert "Ce n'est pas un cercle") ) ; fin du IF (princ)
DenisHen Posté(e) le 31 juillet 2019 Posté(e) le 31 juillet 2019 Salut, je pense que tu devrais remplacer :(setq ent (car (entsel) ))Par (setq ent (car (entlast) ))Mais je n'ai pas le début du LISP... Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
willy95 Posté(e) le 31 juillet 2019 Auteur Posté(e) le 31 juillet 2019 Salut, je pense que tu devrais remplacer :(setq ent (car (entsel) ))Par (setq ent (car (entlast) ))Mais je n'ai pas le début du LISP... Denis... Malheuresement quand je fais ça (setq ent (car (entlast) )) cela me dit : erreur: type d'argument incorrect: consp <Nom d'entité: 7ff4d69cb220> il existe surement une petite subtilité que je ne connais pas.
>>NicoM Posté(e) le 31 juillet 2019 Posté(e) le 31 juillet 2019 Si tu utilise un "entlast" plutôt qu'un "entsel", la vérification du type d'entité ne sert plus a rien. Tu peux supprimer tout ce qui s'y rapporte.Garde quand même les deux lignes après le "progn". Projeteur Béton Armé sur Revit et AutoCAD 2023 Une connaissance acquise ne devient vivante que si on l’a repensée par soi-même.
>>NicoM Posté(e) le 31 juillet 2019 Posté(e) le 31 juillet 2019 Remplace le tout par ça :(setq ent-liste (entget (entlast))) Plus besoin de la variable "ent" du coup.C'est le "car" qui récupère le premier élément de la liste et qui supprime tous les autres éléments qui fait que tu n'as plus que l'identifiant. Pour faire simple tu as juste besoin de ça :(setq ent-liste (entget (entlast))) ; récupération de la liste du dernier cercle crée (setq XY (cdr (assoc 10 ent-liste))); récupération des coordonnées dans la variable XY (setq R (cdr (assoc 40 ent-liste))) ; récupération du rayon dans la variable R 2 Projeteur Béton Armé sur Revit et AutoCAD 2023 Une connaissance acquise ne devient vivante que si on l’a repensée par soi-même.
DenisHen Posté(e) le 31 juillet 2019 Posté(e) le 31 juillet 2019 Je pense que c'était le command qui déconnait, mais je n'en suis pas sûr... Voici ce qui fonctionne :(defun c:RecupDataCercle (/ ent Coord Ray) (command "_circle" "3p" pause pause pause) (setq ent (entget (entlast))) (setq Coord (cdr (assoc 10 ent))) ; récupération des coordonnées dans la variable XY (setq Ray (cdr (assoc 40 ent))) ; récupération du rayon dans la variable R (princ "\nCoordonnées du centre : ") (princ Coord) (princ "\tRayon : ") (princ Ray) (princ) )Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
willy95 Posté(e) le 31 juillet 2019 Auteur Posté(e) le 31 juillet 2019 Remplace le tout par ça :(setq ent-liste (entget (entlast))) Plus besoin de la variable "ent" du coup.C'est le "car" qui récupère le premier élément de la liste et qui supprime tous les autres éléments qui fait que tu n'as plus que l'identifiant. Pour faire simple tu as juste besoin de ça :(setq ent-liste (entget (entlast))) ; récupération de la liste du dernier cercle crée (setq XY (cdr (assoc 10 ent-liste))); récupération des coordonnées dans la variable XY (setq R (cdr (assoc 40 ent-liste))) ; récupération du rayon dans la variable R MERCI BEAUCOUP A TOUS, cette version fonctionne à merveille.
willy95 Posté(e) le 31 juillet 2019 Auteur Posté(e) le 31 juillet 2019 Et juste encore un petit détail, comment puis-je effacer mon cercle du début à la fin sans le sélectionner ?
>>NicoM Posté(e) le 31 juillet 2019 Posté(e) le 31 juillet 2019 Déjà je suis content d'avoir pu aider :D Pour supprimer une entité, il faut utiliser la fonction (entdel). 2 Projeteur Béton Armé sur Revit et AutoCAD 2023 Une connaissance acquise ne devient vivante que si on l’a repensée par soi-même.
willy95 Posté(e) le 2 août 2019 Auteur Posté(e) le 2 août 2019 Encore un GRAND MERCI pour vos aides précieuses, tout fonctionne parfaitement comme je le voulais. Merci
DenisHen Posté(e) le 2 août 2019 Posté(e) le 2 août 2019 De rien, content d'avoir rendu service... ;) Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
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