Aller au contenu

Modifier un texte


ldidber

Messages recommandés

Bonjour,

je suis parti d'un lisp trouvé sur ce ofrum qui me donne la somme de toutes les longueurs de mes lignes d'un calque.

Une fois que j'ai ce résultat, qui apparit dans une boite de dialogue, j'ai voulu l'écrire. Là pas de problème sauf qu'il faut que j'ai des points d'insertions pour que en face de chaque calque apparaissent les linéaires.

 

Si je modifie une ligne dans un claque, je relance le lisp et pour l'instant, je suis obligé d'effacer l'ancien texte et d'en réecrire un nouveau.

J'ai rajouté dans le lisp un ssget pour pouvoir modifier ce texte, mais ça ne marche pas et à mon avis c'est normal.

 

Voilà ce que j'ai:

 

(setq textmodif (ssget))

(command "ddedit" (ssget) longueur)

 

sachant que longueur est une variable

 

Merci je suis sûr que quelqu'un sait....

Lien vers le commentaire
Partager sur d’autres sites

Salut

C'est la fonction subst

Extrait de l'aide

(subst newitem olditem lst)

Arguments

 

newitem

 

An atom or list.

 

olditem

 

An atom or list.

 

lst

 

A list.

Par exemple

(setq mon_nouv_texte (subst (cons 1 "NOUVEAU TEXTE") (assoc 1 anc_texte) anc_texte))

 

Ne pas oublier de faire un entmod sur l'entité pour la mettre à jour et un entupd pour rafraichir à l'écran l'objet

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

En appliquant ce que t'a dit Patrick_35

 

Il te faut abandonner l'usage de la commande DDEDIT

En employant plutôt (entsel) -> 1 seule sélection au lieu de (ssget) -> un jeu de sélection de 1 ou plusieurs entités, cela donne :

(setq textmodif (entget (car (entsel "\nChoix du texte à modifier: "))))
(entmod (subst (cons 1 (rtos longueur)) (assoc 1 textmodif) textmodif))

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Merci beaucoup Bonuscad :D :D

 

Juste une petite modif, il ne faut pas de rtos avant longueur dans la deuxième ligne ;)

 

(setq textmodif (entget (car (entsel "\nChoix du texte à modifier: "))))

(entmod (subst (cons 1 longueur) (assoc 1 textmodif) textmodif))

 

Lien vers le commentaire
Partager sur d’autres sites

Je ne sais pas comment est définie ta variable longueur!

 

Si ta variable est une chaine de texte , ta remarque est bonne.

Si ta variable est un réel ou un entier, il faudra la convertir avant de l'associer au groupe 1 du code DXF de l'entité texte, car ce groupe n'accepte qu'une chaine de caractères.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é