yusukens82 Posté(e) le 17 juillet 2024 Posté(e) le 17 juillet 2024 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 Test.dwg
didier Posté(e) le 17 juillet 2024 Posté(e) le 17 juillet 2024 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 Éternel débutant... Mon site perso : Programmer dans AutoCAD
yusukens82 Posté(e) le 17 juillet 2024 Auteur Posté(e) le 17 juillet 2024 Merci Didier. c'est exactement ce qu'il me fallait. aucune amélioration n'a besoin d'être faite. mon gain de temps au quotidien te remercie infiniment !
didier Posté(e) le 17 juillet 2024 Posté(e) le 17 juillet 2024 Bonjour @yusukens82 Content d'avoir rendu service. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
yusukens82 Posté(e) le 17 juillet 2024 Auteur Posté(e) le 17 juillet 2024 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é.
didier Posté(e) le 17 juillet 2024 Posté(e) le 17 juillet 2024 Bonjour @yusukens82 Pas de souci, par contre, je regarde ça demain. OK ? Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
yusukens82 Posté(e) le 17 juillet 2024 Auteur Posté(e) le 17 juillet 2024 Aucun problème, très bonne soirée et merci encore pour ton aide
didier Posté(e) le 18 juillet 2024 Posté(e) le 18 juillet 2024 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é Éternel débutant... Mon site perso : Programmer dans AutoCAD
yusukens82 Posté(e) le 18 juillet 2024 Auteur Posté(e) le 18 juillet 2024 nacré de te déranger tes vacances essaye d'en profiter au maximum quand même je viens de tester la routine. bizarrement ça ne change rien par rapport à la version 1. pas de vecteur jaune autour de la première sélection
Luna Posté(e) le 18 juillet 2024 Posté(e) le 18 juillet 2024 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
didier Posté(e) le 18 juillet 2024 Posté(e) le 18 juillet 2024 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 : 2024-07-18_16-33-17.mp4 Amicalement CadXP-Yusukens82-R2-02.lsp Éternel débutant... Mon site perso : Programmer dans AutoCAD
Luna Posté(e) le 18 juillet 2024 Posté(e) le 18 juillet 2024 oki doki ! Désolée, je n'ai pas pris le temps de vérifier le fichier .lsp >w< Profites bien des tes petits-enfants ! 🙂 Bisous, Luna
yusukens82 Posté(e) le 18 juillet 2024 Auteur Posté(e) le 18 juillet 2024 c'est moi qui suis dessolé de te déranger durant tes vacances. Sauf erreur, je pense que tu t'es encore trompé de fichier. c'est la routine.
didier Posté(e) le 18 juillet 2024 Posté(e) le 18 juillet 2024 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 Éternel débutant... Mon site perso : Programmer dans AutoCAD
yusukens82 Posté(e) le 18 juillet 2024 Auteur Posté(e) le 18 juillet 2024 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é") ) )
didier Posté(e) le 19 juillet 2024 Posté(e) le 19 juillet 2024 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 Éternel débutant... Mon site perso : Programmer dans AutoCAD
yusukens82 Posté(e) le 19 juillet 2024 Auteur Posté(e) le 19 juillet 2024 Bonjour @didier j'avais donc bien la dernière version. Pas de message d'erreur la routine fonctionne mais sans l'amélioration, à savoir l'encadrement du texte sélectionné. à causse d'un variable peut être ?
didier Posté(e) le 19 juillet 2024 Posté(e) le 19 juillet 2024 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 Éternel débutant... Mon site perso : Programmer dans AutoCAD
Turtle76 Posté(e) le 19 juillet 2024 Posté(e) le 19 juillet 2024 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
yusukens82 Posté(e) le 19 juillet 2024 Auteur Posté(e) le 19 juillet 2024 Je viens de faire le test sur le fichier initial et cela fonction. Le problème vient donc de mon fichier de travail sur lequel je testais la routine. Je joins le fichier. vous verrez que ça ne fonctionne pas test 2.dwg
didier Posté(e) le 19 juillet 2024 Posté(e) le 19 juillet 2024 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 Éternel débutant... Mon site perso : Programmer dans AutoCAD
yusukens82 Posté(e) le 19 juillet 2024 Auteur Posté(e) le 19 juillet 2024 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 ?
yusukens82 Posté(e) le 19 juillet 2024 Auteur Posté(e) le 19 juillet 2024 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
Turtle76 Posté(e) le 19 juillet 2024 Posté(e) le 19 juillet 2024 maigre contribution 😇 bonnes vacances ----------------------------------------------------------------------------------------------------------------------------------- Autocad Map 2024 - Covadis v18.2
Luna Posté(e) le 19 juillet 2024 Posté(e) le 19 juillet 2024 (modifié) 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é le 19 juillet 2024 par Luna
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