Aller au contenu

Lisp pour ajouter un texte à côté de plusieurs points avec un Z


KevM

Messages recommandés

Bonjour,

J'aurai besoin d'un coup pouce pour faire un lisp

Hier j'ai un collègue qui est venu me voir pour me demander s'il était possible d'ajouter un texte avec l'information Z (altimétrie). J'ai farfouillé 20 mn mais je n'ai pas trouvé mon bonheur, du coup j'ai tenté avec chat GPT et ça nouvelle maj, et bien ça a fonctionné, mais seulement pour un point.

(defun c:AddZCoordText ()
  (setq ptEnt (car (entsel "\nSélectionnez un point existant : ")))
  (setq pt (cdr (assoc 10 (entget ptEnt))))
  (setq ptX (car pt))
  (setq ptY (cadr pt))
  (setq ptZ (caddr pt))
  (setq textString (strcat "Z = " (rtos ptZ)))
  (command "_TEXT" pt (rtos pi 2 2) textString)
  (princ)
)

 Je lui ai alors demandé s'il pouvait le faire pour plusieurs point, ce qu'il a fait, je peux bien sélectionner plusieurs points, mais une fois que je valide j'ai une erreur erreur: type d'argument incorrect: numberp: nil 

 

(defun c:AddZCoordText ()
  (setq ss (ssget '((0 . "POINT"))))
  (setq len (sslength ss))
  (repeat len
    (setq ptEnt (ssname ss (setq i (1- i))))
    (setq pt (cdr (assoc 10 (entget ptEnt))))
    (setq ptX (car pt))
    (setq ptY (cadr pt))
    (setq ptZ (caddr pt))
    (setq textString (strcat "Z = " (rtos ptZ)))
    (command "_TEXT" pt (rtos pi 2 2) textString)
  )
  (princ)
)

 

J'ai essayé de lui faire corriger mais, impossible.

Plus tard je me suis posé la question de comment cad pouvait traiter ça et j'en suis arrivé à la conclusion que ce n'était pas possible de cette manière, car comment pourrait il savoir où il faut poser le texte et quelles coordonnées Z prendre. Pour ça il faudrait définir une aire autour du point pour qu'il soit capable d'apposer le bon texte au bon endroit !

Savez vous si c'est possible, si quelqu'un aurait déjà codé ce genre de lisp ?

Merci par avance pour vos retours 🙂

 

NB: Je suis vraiment pas bon en code et encore plus en langage lisp, c'est pour ça que j'ai essayé avec Chat gpt (pou d'autres fonction ça marche très bien d'ailleurs)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @KevM

 

Déjà que je trouve que les forums manquent un peu d'humanité, si maintenant, on doit passer derrière ChatGpt pour corriger les erreurs, je vais pas tarder à jeter l'éponge.
Je te le fais, car j'aime aider les gens, mais pas franchement avec plaisir.
Je pense que tu n'as pas besoin d'explication parce que tu ne souhaites pas apprendre par toi-même...

(defun c:AddZCoordText ()
  (setq ss (ssget '((0 . "POINT"))))
  (setq len (sslength ss)
    i -1)
  (repeat len
    (setq ptEnt (ssname ss (setq i (1+ i))))
    (setq pt (cdr (assoc 10 (entget ptEnt))))
    (setq ptZ (caddr pt))dz 
    (setq textString (strcat "Z = " (rtos ptZ 2 2)))
    (command "_TEXT" pt "" "" textString)
  )
  (princ)
)

 

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Bonjour, @didier,

Désolé si je vous ai vexé, avec mon message et ça formulation, je parcours pas mal les forums à la recherche de solutions, je répond même sur certains comme Nas forum par exemple et je peux comprendre que cela vous vexe,. Je n'ai pas la prétention de dire que chat GPT est mieux qu'un humain , la preuve en est. Je vois cela comme un outil.

Néanmoins, je pense que ma démarche n'est pas la mauvaise, j'ai essayé de chercher une solution sur un forum avec le peu de temps que j'ai au boulot, ne trouvant pas je me suis dit que plutôt de demander directement sur le forum je vais essayer ce fameux chat GPT que tout le monde parle. 

J'ai néanmoins bruler une étape c'est de ne pas apprendre le langage lisp, je vous l'accorde.

Dans tout les cas je vous remercie pour votre lisp et votre temps

Lien vers le commentaire
Partager sur d’autres sites

Je ne voudrais pas abusé de votre aide, mais je rencontre une erreur dans la barre de commande, quand je regarde le lisp je ne vois pas cette commande "00" d'où cela pourrait provenir ?

Commande:  ADDZCOORDTEXT
Sélectionnez des objets: Spécifiez le coin opposé: 1 trouvé(s)
Sélectionnez des objets:  _TEXT
Style de texte courant:  "TER-500"  Hauteur de texte:  1.000  Annotatif:  Non  Justifier:  Gauche
Spécifiez le point de départ du texte ou [Justifier/Style]:
Spécifiez l'angle de rotation du texte <90.0000>:
Entrez le texte:
Commande: Z = 5.00 Commande inconnue "00".  Appuyez sur F1 pour obtenir de l'aide.

Merci

Lien vers le commentaire
Partager sur d’autres sites

Hello @KevM

OUI SVP tu dois etre dans un Style de texte avec Hauteur par defaut = ZERO

Et si tu veux une hauteur specifique, tu changes la variable System TEXTSIZE avant d executer la routine "AddZCoordText" !

MERCI @didier pour le boulot !

La Sante, Bye, lecrabe

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Comme quoi, ChatGPT qui assemble les phrases les unes derrière les autres, selon qu'elles reviennent statistiquement le plus souvent sur les millions de ligne de code qu'il a analysés, n'est pas forcément la meilleure solution. Parfois, coup de bol, ça donne quelque chose de juste et fonctionnel, mais la plupart du temps ça renvoie n'importe quoi.

J'espère au moins qu'il n'apprendra pas depuis les lignes de code non fonctionnelles qu'il a lui-même produites, sinon ça va être de pire en pire.

En tout cas, la conclusion, c'est que pour écrire du code AutoLisp, ChatGPT est une très mauvaise idée.

 

Olivier

Lien vers le commentaire
Partager sur d’autres sites

Je ne pensai pas avoir un soulèvement "anti-chatGPT" 😄, ça me montre néanmoins la voie de l'apprentissage du code lisp / ruby /.... qu'il faut maîtriser avant de jouer à l'apprenti sorcier.

Merci pour vos réponses.

@didier @lecrabe cela fonctionne parfaitement quand on redéfinit le style TXT sur standard ou que l'on passe son style à hauteur 0, merci.

@Olivier Eckmann le lisp fonctionne parfaitement sans avoir besoin de changer la hauteur de texte, je reconnais n'avoir cherché que 20 min et donc pas assez, c'est cool de cumulé plusieurs boulots en un, mais ça bouffe pas mal de temps... je pense que vous connaissez. En tout cas merci pour votre réponse et le lien 🙏

Bonne journée et encore merci, pour moi et mon collègue

 

Lien vers le commentaire
Partager sur d’autres sites

Coucou

"c'est cool de cumuler plusieurs boulots"
La preuve que je suis un dinosaure : Si tu fais deux choses en même temps, l'une des deux est mal faite.

Content que ça fonctionne, même si tu n'as pas choisi la méthode de l'apprentissage qui t'oblige à dépendre de quelqu'un.

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 ce qui est fou, c'est qu'historiquement, le Lisp est un langage d'intelligence artificielle !

les "machines Lisp" étaient le nec plus ultra des années 80 !

Grace à Autocad, c'est un vieux langage qui fait de la résistance ...

a+, Gégé

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Lien vers le commentaire
Partager sur d’autres sites

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • 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é