Fruity Posté(e) le 19 octobre 2020 Posté(e) le 19 octobre 2020 BonjourHormis via les express tools, existe-il un autre moyen d'appliquer un masque a un txt simple de la même manière que sur un multi?Le but étant de ne pas avoir un second objet indépendant du texte. Merci Citer https://www.facebook.com/aedenhivanovahttp://ca-vous-enerve.blogspot.com/
Vincent P. Posté(e) le 19 octobre 2020 Posté(e) le 19 octobre 2020 Salut Fruity, Pour moi, tu n'as pas cette possibilité la avec un texte simple.Le plus simple serais de transformer les textes en MTextes avec la commande TXT2MTXT.A moins que tu n'ai un intérêt particulier à les conserver en TEXTE biensur ... AimablementVincent P. Citer Lispeur éternel débutant! Autocad Map3D 2023 Covadis-Autopist 18.2
lecrabe Posté(e) le 19 octobre 2020 Posté(e) le 19 octobre 2020 Hello ET donc la routine CT_MT de notre Grand Maitre Gilles est LA pour faire le boulot ! Commandes : CT / MT Elle traite les TEXTs et MTEXTs ... MERCI Gilles ! Routine tiree de mon stock de 3001 routines ... LA SANTE, Bye, lecrabe ... Retraite J19 ... ;; ;; Une routine pour placer un cadre ou un masque d'arrière plan (hachure SOLID) ;; sur les textes (simples ou multilignes). ;; ;; CT & MT par GC 15/11/07 + 18/11/07 + 20/11/07 pour Patrice ;; ;; Fonctionnent avec textes simples et multilignes ;; Les Parametres (couleur et la distance de Decalage) ;; sont conservées dans le dessin pendant la session ;; ;; EDIT : Tout bien pesé, je pense qu'il vaut mieux 2 commandes séparées ;; (CT pour les cadres et MT pour les masques) : moins d'options à valider ou modifier. ;; ;; EDIT : Nouvelles versions, fonctionnent avec les "couleurs vraies" pour les version 2004 ;; et plus, en couleurs de l'index pour les version antérieures. ;; ;; EDIT : Ajout d'une option Wipeout dans MT ;; ;; EDIT : Ajout d'une option Largeur (de polyligne) dans CT ;; ;; ;; CT Encadre les textes Selectionnés ;; (defun c:CT (/ of col wid opt par wo n ss n tx elst plst) (or *TextFrameOffset* (setq *TextFrameOffset* (/ (getvar "TEXTSIZE") 5.0)) ) (or *TextFrameColor* (setq *TextFrameColor* (list '(62 . 256))) ) (or *TextFrameWidth* (setq *TextFrameWidth* 0.0) ) (setq of *TextFrameOffset* col *TextFrameColor* wid *TextFrameWidth* ) (while (and (princ (strcat "\nDecalage: " (rtos of) "\tCouleur: " (TrueColor2String col) "\tLargeur: " (rtos wid) "\nSelectionnez les textes ou <Parametres> " ) ) (not (setq ss (ssget '((0 . "MTEXT,TEXT"))))) ) (initget 1 "Decalage Couleur Largeur") (setq par (getkword "\nChoix de l'option [Decalage/Couleur/Largeur]: " ) ) (cond ((= par "Couleur") (if (< 15 (atoi (substr (getvar "ACADVER") 1 2))) (if (setq col (acad_truecolordlg (cond ((assoc 420 col)) ((assoc 62 col)) ) ) ) (setq *TextFrameColor* col) (setq col *TextFrameColor*) ) (if (setq col (acad_colordlg (cdr (assoc 62 col)))) (setq *TextFrameColor* (setq col (list (cons 62 col)))) (setq col *TextFrameColor*) ) ) ) ((= par "Decalage") (if (setq of (getdist (strcat "\nSpecifiez le Decalage du cadre <" (rtos of) ">: " ) ) ) (setq *TextFrameOffset* of) (setq of *TextFrameOffset*) ) ) (T (if (setq wid (getdist (strcat "\nSpecifiez la largeur du cadre <" (rtos wid) ">: " ) ) ) (setq *TextFrameWidth* wid) (setq wid *TextFrameWidth*) ) ) ) ) (setq n -1) (while (setq tx (ssname ss (setq n (1+ n)))) (setq elst (entget tx) plst (text2box-plst elst of) ) (make-frame elst col wid plst) ) (princ) ) ;; ==========================================================;; ;; ;; MT Place un masque (hachure SOLID ou wipeout) derrière les textes Selectionnés ;; (defun c:MT (/ of col par n ss n tx elst plst ec) (or *TextMaskOffset* (setq *TextMaskOffset* (/ (getvar "TEXTSIZE") 5.0)) ) (or *TextMaskColor* (setq *TextMaskColor* (list '(62 . 1))) ) (setq of *TextMaskOffset* col *TextMaskColor* ) (while (and (princ (strcat "\nDecalage: " (rtos of) "\tCouleur: " (TrueColor2String col) "\nSelectionnez les textes ou <Parametres> " ) ) (not (setq ss (ssget '((0 . "MTEXT,TEXT"))))) ) (initget 1 "Decalage Couleur Wipeout") (setq par (getkword "\nChoix de l'option [Decalage/Couleur/Wipeout]: " ) ) (cond ((= par "Wipeout") (setq *TextMaskColor* (setq col (list (cons 430 "Wipeout")))) ) ((= par "Couleur") (if (< 15 (atoi (substr (getvar "ACADVER") 1 2))) (if (setq col (acad_truecolordlg (cond ((assoc 420 col)) ((assoc 62 col)) (T '(62 . 1)) ) ) ) (setq *TextMaskColor* col) (setq col *TextMaskColor*) ) (if (setq col (acad_colordlg (cond ((cdr (assoc 62 col))) (T 1) ) ) ) (setq *TextMaskColor* (setq col (list (cons 62 col)))) (setq col *TextMaskColor*) ) ) ) (T (setq of (getdist (strcat "\nSpecifiez le Decalage du cadre <" (rtos of) ">: " ) ) ) (setq *TextMaskOffset* of) (setq of *TextMaskOffset*) ) ) ) (setq n -1) (while (setq tx (ssname ss (setq n (1+ n)))) (setq elst (entget tx) plst (text2box-plst elst of) ) (make-mask elst col plst) ) (setq ec (getvar "CMDECHO")) (setvar "CMDECHO" 0) (command "_draworder" ss "" "_f") (setvar "CMDECHO" ec) (princ) ) ;; ==========================================================;; ;; Text2Box-plst ;; Retourne la liste des sommets (coordonnées SCO) de la boite ;; englobant le texte après Decalage ;; ;; Arguments ;; elst : liste DXF de l'entité ;; of : distance de Decalage (defun Text2box-plst (elst of / nor ref rot wid hgt jus org box plst) (if (= "MTEXT" (cdr (assoc 0 elst))) (setq nor (cdr (assoc 210 elst)) ref (trans (cdr (assoc 10 elst)) 0 nor) rot (angle '(0 0 0) (trans (cdr (assoc 11 elst)) 0 nor)) wid (cdr (assoc 42 elst)) hgt (cdr (assoc 43 elst)) jus (cdr (assoc 71 elst)) org (list (cond ((member jus '(2 5 8)) (/ wid -2)) ((member jus '(3 6 9)) (- wid)) (T 0.0) ) (cond ((member jus '(1 2 3)) (- hgt)) ((member jus '(4 5 6)) (/ hgt -2)) (T 0.0) ) ) plst (mapcar (function (lambda (p) (mapcar '+ org p) ) ) (list (list (- of) (- of)) (list (+ wid of) (- of)) (list (+ wid of) (+ hgt of)) (list (- of) (+ hgt of)) ) ) ) (setq box (textbox elst) ref (cdr (assoc 10 elst)) rot (cdr (assoc 50 elst)) plst (list (list (- (caar box) of) (- (cadar box) of)) (list (+ (caadr box) of) (- (cadar box) of)) (list (+ (caadr box) of) (+ (cadadr box) of)) (list (- (caar box) of) (+ (cadadr box) of)) ) ) ) (setq mat (list (list (cos rot) (- (sin rot)) 0) (list (sin rot) (cos rot) 0) '(0 0 1) ) plst (mapcar (function (lambda (p) (mapcar '+ (mxv mat p) (list (car ref) (cadr ref))) ) ) plst ) ) ) ;; ==========================================================;; ;; Make-Frame ;; Crée une polyligne encadrant le texte ;; ;; Arguments ;; elst : liste DXF de l'entité ;; col : couleur de la polyligne ;; plst : liste des sommets (defun make-frame (elst col wid plst / nor elv) (setq nor (cdr (assoc 210 elst))) (if (= "MTEXT" (cdr (assoc 0 elst))) (setq elv (caddr (trans (cdr (assoc 10 elst)) 0 nor))) (setq elv (caddr (cdr (assoc 10 elst)))) ) (entmake (append (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") (assoc 8 elst) (if (and (< 15 (atoi (substr (getvar "ACADVER") 1 2))) (assoc 420 col) ) (assoc 420 col) (assoc 62 col) ) '(100 . "AcDbPolyline") '(90 . 4) '(70 . 1) (cons 43 wid) (cons 38 elv) (cons 210 nor) ) (mapcar (function (lambda (x) (cons 10 x))) plst) ) ) ) ;; ==========================================================;; ;; Make-Mask ;; Crée une hachure SOLID figurant un masque d'arrière plan ;; ;; Arguments ;; elst : liste DXF de l'entité texte ;; col : couleur de la hachure ;; plst : liste des sommets (defun make-mask (elst col plst / nor elv) (setq nor (cdr (assoc 210 elst))) (if (= "MTEXT" (cdr (assoc 0 elst))) (setq elv (caddr (trans (cdr (assoc 10 elst)) 0 nor))) (setq elv (caddr (cdr (assoc 10 elst)))) ) (if (= (cdr (assoc 430 col)) "Wipeout") (MakeWipeout (mapcar (function (lambda (p) (list (car p) (cadr p) elv) ) ) plst ) nor (cdr (assoc 8 elst)) ) (entmake (list '(0 . "HATCH") '(100 . "AcDbEntity") (assoc 8 elst) (if (and (< 15 (atoi (substr (getvar "ACADVER") 1 2))) (assoc 420 col) ) (assoc 420 col) (assoc 62 col) ) '(100 . "AcDbHatch") (list 10 0.0 0.0 elv) (cons 210 nor) '(2 . "SOLID") '(70 . 1) '(71 . 0) '(91 . 1) '(92 . 1) '(93 . 4) '(72 . 1) (cons 10 (car plst)) (cons 11 (cadr plst)) '(72 . 1) (cons 10 (cadr plst)) (cons 11 (caddr plst)) '(72 . 1) (cons 10 (caddr plst)) (cons 11 (cadddr plst)) '(72 . 1) (cons 10 (cadddr plst)) (cons 11 (car plst)) '(97 . 0) '(75 . 0) '(76 . 1) '(98 . 1) '(10 0.0 0.0 0.0) ) ) ) ) ;; ==========================================================;; ;; MakeWipeout crée un objet "wipeout" à partir d'une liste de points ;; et du vecteur normal de l'objet (defun MakeWipeout (pt_lst nor lay / dxf10 max_dist cen dxf_14) (or (member "acwipeout.arx" (arx)) (arxload "acwipeout.arx")) (setq dxf10 (list (apply 'min (mapcar 'car pt_lst)) (apply 'min (mapcar 'cadr pt_lst)) (caddar pt_lst) ) ) (setq max_dist (float (apply 'max (mapcar '- (apply 'mapcar (cons 'max pt_lst)) dxf10) ) ) ) (setq cen (mapcar '+ dxf10 (list (/ max_dist 2) (/ max_dist 2) 0.0))) (setq dxf14 (mapcar '(lambda (p) (mapcar '/ (mapcar '- p cen) (list max_dist (- max_dist) 1.0) ) ) pt_lst ) ) (setq dxf14 (reverse (cons (car dxf14) (reverse dxf14)))) (entmake (append (list '(0 . "WIPEOUT") '(100 . "AcDbEntity") (cons 8 lay) '(100 . "AcDbWipeout") '(90 . 0) (cons 10 (trans dxf10 nor 0)) (cons 11 (trans (list max_dist 0.0 0.0) nor 0)) (cons 12 (trans (list 0.0 max_dist 0.0) nor 0)) '(13 1.0 1.0 0.0) '(70 . 7) '(280 . 1) '(71 . 2) (cons 91 (length dxf14)) ) (mapcar '(lambda (p) (cons 14 p)) dxf14) ) ) ) ;; ==========================================================;; ;; Applique une matrice de transformation à un vecteur (Vladimir Nesterovsky) (defun mxv (m v) (mapcar (function (lambda (r) (apply '+ (mapcar '* r v)))) m ) ) ;; ==========================================================;; ;; Retourne une chaîne indiquant l'index de la couleur ou les valeurs RVB (defun TrueColor2String (lst / ind) (setq ind (cond ((cdr (assoc 430 lst))) ((cdr (assoc 420 lst))) ((cdr (assoc 62 lst))) (T 256) ) ) (cond ((= (type ind) 'STR) ind) ((= ind 256) "DuCalque") ((= ind 0) "DuBloc") ((< 256 ind) (strcat (itoa (lsh ind -16)) "," (itoa (lsh (lsh ind 16) -24)) "," (itoa (lsh (lsh ind 24) -24)) ) ) ((itoa ind)) ) ) Citer Autodesk Expert Elite Team
Fruity Posté(e) le 20 octobre 2020 Auteur Posté(e) le 20 octobre 2020 Je ne l'ai pas testé, mais il semblerait que cette routine crée un solid2d ou un wipeout derriere le txt.Exactement ce que je ne veux pas (et que l'on peut déjà faire via les express tools). Citer https://www.facebook.com/aedenhivanovahttp://ca-vous-enerve.blogspot.com/
arnaudalp Posté(e) le 20 octobre 2020 Posté(e) le 20 octobre 2020 ET si tu faisais un texte et une hachure , puis tu en fais un groupe ? Citer
lecrabe Posté(e) le 20 octobre 2020 Posté(e) le 20 octobre 2020 Hello Fruity YES la routine de Gilles cree 1/2 objet(s) !A la fois sur les N TEXTs et sur les N MTEXTs selectionnes ...PERSO: je l aime bien ! LA SANTE, Bye, lecrabe ... Retraite J20 ... Citer Autodesk Expert Elite Team
Fruity Posté(e) le 22 octobre 2020 Auteur Posté(e) le 22 octobre 2020 ET si tu faisais un texte et une hachure , puis tu en fais un groupe ? Pas bête l'idée de groupe. A voir si la modification du texte ensuite est encore possible sans dégrouper/regrouper. Je teste ca.Merci. Citer https://www.facebook.com/aedenhivanovahttp://ca-vous-enerve.blogspot.com/
Olivier Eckmann Posté(e) le 22 octobre 2020 Posté(e) le 22 octobre 2020 Bonjour, Dans le Lisp de Gilles (proposé par LeCrabe) tu peux paramétrer Wipeout ou Couleur. Si tu paramètres Couleur, il dessine une hachure de la couleur spécifiée. Olivier Citer
vincentp010 Posté(e) le 22 octobre 2020 Posté(e) le 22 octobre 2020 BonjourHormis via les express tools, existe-il un autre moyen d'appliquer un masque a un txt simple de la même manière que sur un multi?Le but étant de ne pas avoir un second objet indépendant du texte. Merci Grace à toi je découvre seulement maintenant que l'on peut mettre des masques sur les mtext :blink: Citer Aide au téléchargement du cadastre dgfip-download-helper Insertion de photos géolocalisées exif https://www.dropbox.com/s/gkf6o9ac2hxen97/exifscr.zip?dl=0 Script correction BUG SPDC V2, propriétaire département 21 et 22 : https://greasyfork.org/scripts/442400-spdcv2/code/SPDCV2.user.js
Dinosor Posté(e) le 22 octobre 2020 Posté(e) le 22 octobre 2020 Vous n'avez pas bientôt fini de causer de masques partout ! :P On en entend déjà assez comme ça… Bon je sors Citer Seuls nous allons vite, ensemble nous allons plus loin... CPU Intel 3,5Go / Nvidia RTX-3090 AutoCad (Architecture) 2022 - Lumion PRO BMW R-1200-RT, c'est moche, oui... je sais... www.neda.ch
Vincent P. Posté(e) le 22 octobre 2020 Posté(e) le 22 octobre 2020 Pas bête l'idée de groupe. A voir si la modification du texte ensuite est encore possible sans dégrouper/regrouper. Je teste ca.Merci. CTRL + HC'est le raccourci clavier qui passe la variable système PICKSTYLE de 0 à 1 à 0 à 1 à 0 .... Quand PICKSTYLE est à 0, les groupes sont gérés normalement (ca ressemble à un bloc quoi).Quand PICKSTYLE est à 1, tu peut sélectionner/ modifier les entités dans les groupes comme s'ils n'étaient pas groupés. Citer Lispeur éternel débutant! Autocad Map3D 2023 Covadis-Autopist 18.2
arnaudalp Posté(e) le 22 octobre 2020 Posté(e) le 22 octobre 2020 CTRL + HC'est le raccourci clavier qui passe la variable système PICKSTYLE de 0 à 1 à 0 à 1 à 0 .... Quand PICKSTYLE est à 0, les groupes sont gérés normalement (ca ressemble à un bloc quoi).Quand PICKSTYLE est à 1, tu peut sélectionner/ modifier les entités dans les groupes comme s'ils n'étaient pas groupés. De plus, quand tu as fait le groupe, tu le sélectionnes, dans la palette de propriété tu déroules groupe, tu vas sur texte, et depuis la palette tu changes ton texte Citer
Fruity Posté(e) le 23 octobre 2020 Auteur Posté(e) le 23 octobre 2020 Grace à toi je découvre seulement maintenant que l'on peut mettre des masques sur les mtext :blink: :DPratique aussi pour les cotes, il y a une option pour mettre un masque derrière le texte de cote (j'ai découvert ca il n'y pas logntps, ca change la vie d'avoir des textes lisibles!) Citer https://www.facebook.com/aedenhivanovahttp://ca-vous-enerve.blogspot.com/
Messages recommandés