brunomu Posté(e) le 4 mars 2015 Partager Posté(e) le 4 mars 2015 Bonjour le Forum ! J'aimerais disposer d'un lisp tout bête pour aligner un texte sur un autre texte :(ce lisp existe peut-être déjà mais je ne l'ai pas trouvé) – je clique sur un texte A, puis sur un texte B→ le texte A se déplace en x, de sorte que son point d'insertion ait la même valeur en x que celui du texte B (sans changer la coordonnée y)C'est tout ! En fait, il faudrait 2 lisps : un pour aligner un texte sur un autre en x, un pour l'aligner en y. Quelqu'un sait où trouver ça, ou saurait écrire ce lisp (trop difficile pour mon maigre niveau) ?Merci !!! Lien vers le commentaire Partager sur d’autres sites More sharing options...
-Olivier- Posté(e) le 4 mars 2015 Partager Posté(e) le 4 mars 2015 Bonjour brunomu, ALIGNTEXTE Olivier Lien vers le commentaire Partager sur d’autres sites More sharing options...
brunomu Posté(e) le 4 mars 2015 Auteur Partager Posté(e) le 4 mars 2015 Bonjour, Merci pour ta réponse....mais cette commande n'est pas disponible sur mon poste (ACAD 2013 fr). Que faire-je ?! Lien vers le commentaire Partager sur d’autres sites More sharing options...
speedy Posté(e) le 5 mars 2015 Partager Posté(e) le 5 mars 2015 Bonjour à toutes et à toustu peux trouver ton bonheur là avec le lisp rrt.lsphttp://forums.autodesk.com/t5/autocad-land-desktop/text-alignment-lisp/td-p/1718317/page/2 ou le super http://www.lee-mac.com/dynamictextalignment.html CordialementMichel a Lien vers le commentaire Partager sur d’autres sites More sharing options...
brunomu Posté(e) le 5 mars 2015 Auteur Partager Posté(e) le 5 mars 2015 Bonjour, Merci pour ta réponse. Les 2 lisp sont alléchants, malheureusement :– quand j'utilise rrt.lsp pour déplacer des textes jusqu'à la même valeur en .x, il ne se passe rien...– DynamicTextAlignV1-6.lsp est tellement sophistiqué que je n'obtiens pas le résultat escompté ! :o| Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 5 mars 2015 Partager Posté(e) le 5 mars 2015 Salut Deux lisps vite fait Pour aligner en X(defun c:txx(/ bas doc ori pos sel txt) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (and (setq bas (entsel "\nSélectionnez le texte de référence : ")) (setq bas (vlax-ename->vla-object (car bas))) (vl-position (vla-get-objectname bas) '("AcDbText" "AcDbMText")) (ssget (list (cons 0 "TEXT,MTEXT"))) (setq pos (car (vlax-get bas 'insertionpoint))) (progn (vlax-for txt (setq sel (vla-get-activeselectionset doc)) (setq ori (vlax-get txt 'insertionpoint)) (vlax-put txt 'insertionpoint (list pos (cadr ori) (caddr ori))) ) (vla-delete sel) ) ) (vla-endundomark doc) (princ) ) Pour aligner en Y(defun c:txy(/ bas doc ori pos sel txt) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (and (setq bas (entsel "\nSélectionnez le texte de référence : ")) (setq bas (vlax-ename->vla-object (car bas))) (vl-position (vla-get-objectname bas) '("AcDbText" "AcDbMText")) (ssget (list (cons 0 "TEXT,MTEXT"))) (setq pos (cadr (vlax-get bas 'insertionpoint))) (progn (vlax-for txt (setq sel (vla-get-activeselectionset doc)) (setq ori (vlax-get txt 'insertionpoint)) (vlax-put txt 'insertionpoint (list (car ori) pos (caddr ori))) ) (vla-delete sel) ) ) (vla-endundomark doc) (princ) ) @+ Les Lisps de PatrickLe 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 More sharing options...
lecrabe Posté(e) le 5 mars 2015 Partager Posté(e) le 5 mars 2015 Hello & MERCI Patrick_35 c la creme des choux (a la creme) ! Bye, lecrabe Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
brunomu Posté(e) le 5 mars 2015 Auteur Partager Posté(e) le 5 mars 2015 Merci beaucoup, très chou en effet ! Je sens qu'on s'approche du but...mais les textes ne se déplacent pas au point attendu.Plus précisément, quand je travaille avec un SCU (donc pas en SCG), les textes se déplacent vers l'endroit où ils iraient dans le SCG (j'ai fait le test). → y a-t-il moyen de faire fonctionner le LISP dans le SCU courant ? Merci ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 5 mars 2015 Partager Posté(e) le 5 mars 2015 Hello En plus Mr brunomu desire que le gourmand de choux (a la creme) Patrick_35 fasse du calcul matriciel !? Bye, lecrabe Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 6 mars 2015 Partager Posté(e) le 6 mars 2015 (modifié) Voila (defun c:txx(/ bas doc ori pos sel txt) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (and (setq bas (entsel "\nSélectionnez le texte de référence : ")) (setq bas (vlax-ename->vla-object (car bas))) (vl-position (vla-get-objectname bas) '("AcDbText" "AcDbMText")) (ssget (list (cons 0 "TEXT,MTEXT"))) (setq pos (car (trans (vlax-get bas 'insertionpoint) 1 0))) (progn (vlax-for txt (setq sel (vla-get-activeselectionset doc)) (setq ori (trans (vlax-get txt 'insertionpoint) 1 0)) (vlax-put txt 'insertionpoint (trans (list pos (cadr ori) (caddr ori)) 0 1)) ) (vla-delete sel) ) ) (vla-endundomark doc) (princ) ) (defun c:txy(/ bas doc ori pos sel txt) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (and (setq bas (entsel "\nSélectionnez le texte de référence : ")) (setq bas (vlax-ename->vla-object (car bas))) (vl-position (vla-get-objectname bas) '("AcDbText" "AcDbMText")) (ssget (list (cons 0 "TEXT,MTEXT"))) (setq pos (cadr (trans (vlax-get bas 'insertionpoint) 1 0))) (progn (vlax-for txt (setq sel (vla-get-activeselectionset doc)) (setq ori (trans (vlax-get txt 'insertionpoint) 1 0)) (vlax-put txt 'insertionpoint (trans (list (car ori) pos (caddr ori)) 0 1)) ) (vla-delete sel) ) ) (vla-endundomark doc) (princ) ) ps : Mon petit tourteau, on dirait que tu as trouvé mon point faible ;)pps : Mon petit décapode, je t'ai donné une réponse pour tes fenêtres. @+ Modifié le 6 mars 2015 par Patrick_35 Les Lisps de PatrickLe 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 More sharing options...
brunomu Posté(e) le 6 mars 2015 Auteur Partager Posté(e) le 6 mars 2015 Merci beaucoup ! ...problème(s) : – quand je lance la commande, je dois sélectionner 2 fois l'objet de référence– mais surtout, AutoCad me renvoie un message d'erreur : erreur: Le serveur ActiveX a renvoyé l'erreur: nom inconnu: "TEXTALIGNMENTPOINT" A tout hasard, j'ai remplacé TEXTALIGNMENTPOINT par _TEXTALIGNMENTPOINT parce mon AutoCad est en français, mais peine perdue... Des idées ? Merci en tous cas. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 6 mars 2015 Partager Posté(e) le 6 mars 2015 – quand je lance la commande, je dois sélectionner 2 fois l'objet de référenceNon, pas besoin :huh: – mais surtout, AutoCad me renvoie un message d'erreur : C'est corrigé avec insertionpoint @+ Les Lisps de PatrickLe 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 More sharing options...
brunomu Posté(e) le 6 mars 2015 Auteur Partager Posté(e) le 6 mars 2015 Merci ! Reste un problème : l'alignement se fait sur les valeurs de .x ou de .y dans le SCG. Mais du coup dans un SCU, ça n'est pas aligné... Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 6 mars 2015 Partager Posté(e) le 6 mars 2015 Salut, Peut-être cela te convient-il mieux ? (defun getInputText (/ txt ss i lst) (if (setq txt (car (entsel "\nSélectionnez le texte de référence: "))) (if (wcmatch (cdr (assoc 0 (entget txt))) "*TEXT") (if (setq ss (ssget '((0 . "*TEXT")))) (cons txt (repeat (setq i (sslength ss)) (setq lst (cons (ssname ss (setq i (1- i))) lst)) ) ) ) (prompt "\nL'objet sélectionné n'est pas un texte.") ) ) ) (defun alignText (fun lst / coord elst dxf10 ucsPt) (and lst (setq fun (eval fun) coord (fun (trans (cdr (assoc 10 (entget (car lst)))) (car lst) 1)) ) (foreach txt (cdr lst) (setq elst (entget txt) dxf10 (assoc 10 elst) ucsPt (trans (cdr dxf10) txt 1) ) (entmod (subst (cons 10 (trans (subst coord (fun ucsPt) ucsPt) 1 txt)) dxf10 elst ) ) ) ) (princ) ) (defun c:txx () (alignText 'car (getInputText))) (defun c:txy () (alignText 'cadr (getInputText))) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
brunomu Posté(e) le 6 mars 2015 Auteur Partager Posté(e) le 6 mars 2015 Parfait, bravo ! Merci à tous les contributeurs. Lien vers le commentaire Partager sur d’autres sites More sharing options...
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