Aller au contenu

[Résolu] Copier Coller texte et effacer l'origine


yusukens82

Messages recommandés

Bonjour,

Est-ce que quelqu'un peut m'écrire une routine qui ressemble à un "copier les propriétés" mais pour une valeur d'un texte.

Je m'explique (voir image) :

La routine 1 (que j'ai déjà) : permettant de cumuler les surface de plusieurs texte.

La routine 2 permettant de de :
1) Sélectionner le texte 61.19 pour copier la valeur
2) Sélectionner le texte 60.00 pour coller la nouvelle valeur
3) Effacer le texte d'origine 1ère sélection 

 

à première vu, cela ne semble pas très utile mais dans mon quotidien cela me permettrait de réduire considérablement le nombre de manœuvre

Je joins également le fichier dwg 

en vous remerciant par avance 

01.jpg

Test.dwg

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @yusukens82

Voici un petit LSP qui devrait faire le taf demandé.
Le nom de la commande est R2, comme Routine 2, il est demandé le texte initial (61.19), puis le texte à modifier (60.00).
Le texte 2 prend la valeur du texte 1 ensuite le texte 1 est effacé.

Je comprends qu'il ne fallait pas choisir les textes à additionner pour obtenir l'addition des textes de valeurs de superficies.
Merci de me tenir au courant si c'est OK, fonctionnement, choix des entités, améliorations éventuelles.

Amicalement

 

CadXP-Yusukens82-R2.lsp

Lien vers le commentaire
Partager sur d’autres sites

Re bonjour,

J'ai utilisé la routine toute l'après-midi. c'est très utile.

Si je peux apporter une petite amélioration (si c'est faisable bien sûr).

C'est de mettre en surbrillance le texte qu'on a sélectionné en premier pour montrer graphiquement qu'on l'a sélectionné.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @yusukens82

Ça y est, j'ai réussi à trouver un trou dans l'emploi du temps ! Pas simple l'agenda d'un retraité en période de vacances des petits-enfants !

Comme la mise en surbrillance n'est pas très efficace à mon goût, je me suis permis de dessiner des vecteurs temporaires autour du texte d'origine qui ne restent visibles que le temps de sélectionner le texte d'arrivée.
Au moindre zoom, ils disparaissent.

Si le jaune n'est pas visible suivant ta couleur de fond, change dans le LSP le dernier argument des lignes grdraw actuellement à 2 (jaune) pour un autre nombre entier définissant une couleur.
1 -> rouge, 2 -> jaune, 3-> vert...

Amicalement

Edit : suppression du fichier erroné

 

 

Lien vers le commentaire
Partager sur d’autres sites

Coucou,
Les (grdraw) disparaissent si tu fais des actions de zoom  🙂
Je n'ai pas regardé le code LISP donc je dis sûrement des bêtises car c'est peut-être déjà pris en compte... Mais éventuellement le problème vient de là.
Si jamais tu veux mettre en surbrillance un jeu de sélection, il faut ajouter la ligne :

(sssetfirst nil <SelectionSet>)

Avec <SelectionSet> le nom de ta variable qui comporte ton jeu de sélection. Dans ton cas, je dirais qu'il faudrait faire :

; ...
(entdel tex1)
(sssetfirst nil (ssadd tex2))  ; <--- Ligne à ajouter
; ...

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

 

 

Bonjour @yusukens82

Au temps pour moi. Je n'ai pas copié l'ultime révision.

@Luna, merci de ton intervention, mais c'est une simple faute de frappe dans le nom des variables qui est l'origine et je n'ai pas donné le bon fichier.


Le bon fichier devrait faire ça :

 

 

 

 

Amicalement

CadXP-Yusukens82-R2-02.lsp

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @yusukens82

Tu m'inquiètes.
Je viens de faire un test en chargeant depuis le site et ça fonctionne bien chez moi.
Vérifie que la première routine n'est pas chargée par défaut dans la APPLOAD car comme je n'ai pas renommé la commande, on ne peut pas savoir laquelle est appelée.

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

quand je le télécharge depuis le dernier message, j'ai celui là :

;|
demande de yusukens82
https://cadxp.com/topic/61565-copier-coller-texte-et-effacer-lorigine/#comment-351114
réponse de didier le 17 juillet 2024
ajout du cadre en vecteurs sur texte origine pour visualisation le 18 juillet 2024
|;
(defun c:r2 (/ bd bg hd hg maxext minext tex1 tex2)
  (setq tex1 (car (entsel "\nChoix du texte initial.\n")))

  (vla-GetBoundingBox (vlax-ename->vla-object tex1) 'minext 'maxext
  )
  (setq	bg (vlax-safearray->list minext)
	hd (vlax-safearray->list maxext)
  )
  (setq	hg (list (car bg) (cadr hd))
	bd (list (car hd) (cadr bg))
  )

  (grdraw bg hd 1)
  (grdraw hd bd 2)
  (grdraw bd bg 2)
  (grdraw bg hg 2)
  (grdraw hg hd 2)

  (setq tex2 (car (entsel "\nChoix du texte à modifier.\n")))
  (if
    (or
      (= (cdr (assoc 0 (entget tex1))) "TEXT")
      (= (cdr (assoc 0 (entget tex1))) "MTEXT")
    )
     (progn
       (entmod
	 (subst
	   (assoc 1 (entget tex1))
	   (assoc 1 (entget tex2))
	   (entget tex2)
	 )
       )
       (entdel tex1)

     )
     (alert "\nErreur de type d'entité")
  )
)

 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @yusukens82

Je ne comprends ce qui ne fonctionne pas.
J'ai copié-collé en ligne de commande sur deux versions différentes d'AutoCAD et ...
Tout est parfait.

Qu'est-ce qui ne fonctionne pas ?
Y-a-t-il un message d'erreur ?

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @yusukens82

Je me permets de demander à un autre membre du forum de faire le même test.
Je ne comprends pas du tout pourquoi ça fonctionne chez moi et pas chez toi.

Est-il possible de faire une vidéo de ton mode opératoire, chargement et effet obtenu ?

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

ça fonctionne chez moi, encadré jaune et changement du texte avec le Lisp : CadXP-Yusukens82-R2-02.lsp

 

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

Autocad Map 2024 - Covadis v18.2

Lien vers le commentaire
Partager sur d’autres sites

Bonjour

Merci à @Turtle76 d'avoir testé, il m'a rassuré.

@yusukens82, je ne sais que dire, je constate que ça ne fonctionne pas dans ce dessin, mais sans aucune idée de piste de recherche de la raison du dysfonctionnement.
Si quelqu'un a une idée je suis preneur, car ce n'est pas anodin.

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

Avec la commande MODIFVAR je viens de comparer les 399 variable dès deux fichiers

Il y a que deux variables de différents :

VIEWBACKSTATUS (en les mettant à la même valeur, cela ne change rien).

WORLDUCS (qui permet de comparer si le SCU coïncide avec le SCG), en le mettant à 1 cela refonctionne.

 

C’était donc un problème de SCU. 

si facile d'ajouter une ligne disant que la variable fonctionne également si variable WORLDUCS est à 0 ?

Lien vers le commentaire
Partager sur d’autres sites

je viens de trouver la réponse dans le forum, il suffit de mettre :

 

Mettre au début :

(setq uc (getvar "worlducs"))

(if (= uc 0) (command "_ucs" ""))

LE CODE

A la fin de la routine :

(if (= uc 0) (command "_ucs" "p"))

 

un grand merci à toi @didier pour tout ce que tu apportes à la communauté, j'espère que tu passeras de bonne vacances avec les petit(e)s

Merci @Turtle76 d'avoir testé la routine

Lien vers le commentaire
Partager sur d’autres sites

Coucou,
Oki je vois d'où vient le soucis dans ce cas 🙂
Les vecteurs sont tracés à partir des coordonnées SCG de l'objet dans le SCU (donc le rectangle est très sûrement dans ton dessin, mais avec les mauvaises coordonnées). Il faudrait donc translater (trans) les coordonnées permettant de créer les vecteurs depuis le SCG vers SCU (si SCG courant alors cela fera simplement une translation SCG>SCG :3)
Donc remplacer

(setq
  hg (list (car bg) (cadr hd))
  bd (list (car hd) (cadr bg))
)

par

(setq
  hg (trans (list (car bg) (cadr hd)) 0 1)
  bd (trans (list (car hd) (cadr bg)) 0 1)
)

je pense ?

Edit: Changer la variable WORLDUCS est une autre solution mais je conseille dans ce cas de vérifier également la valeur de UCSFOLLOW dans ce cas (car si UCSFOLLOW = 1, tu risques d'avoir des surprises) ! Et également de prévoir une gestion d'erreur pour remettre le dessin en ordre en cas de soucis ^^

Bisous,
Luna

Modifié par Luna
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é