fabcad Posté(e) le 28 juin 2012 Posté(e) le 28 juin 2012 Bonjour à tous, Ayant eu ce problème, je souhaiterais "écarter" des textes (Textes et Mtextes) qui seraient confondus de façon dynamique illustré dans mon JPEG joint. Merci d'avance, Fabrice.
fauxsuisse Posté(e) le 29 juin 2012 Posté(e) le 29 juin 2012 As-tu essayé en créent un bloc, ton texte pourrais être un bloc, l'origine tu la places au centre du point de rotation, puis dans le bloc tu crées un attribut pour ton texte et tu lui crées un jeux de paramètres dynamique.J'ai fais un petit test mais c'est con je me rappelles plus qu'elles jeux de paramètres j'ai utilisé mais bon c'est un début. :unsure:
fabcad Posté(e) le 29 juin 2012 Auteur Posté(e) le 29 juin 2012 Bonjour, Merci fauxsuisse pour l'information, mais ce sont des étiquettes générées issues de Données d'Objets (xdatas améliorées de MAP) avec des objets mtextes. A+
bonuscad Posté(e) le 29 juin 2012 Posté(e) le 29 juin 2012 Bonjour, Un embryon de code écrit rapidement, voir si cela convient ! ((lambda ( / js_mt nb_text inc_ang ang ent obj_vlax dxf_ent mnpt mxpt mintpt maxpt offset) (setq js_mt (ssget '((0 . "MTEXT")))) (cond (js_mt (cond ((> (setq nb_text (sslength js_mt)) 1) (setq inc_ang (/ (* 2 pi) nb_text) ang 0.0) (repeat nb_text (setq ent (ssname js_mt (setq nb_text (1- nb_text))) obj_vlax (vlax-ename->vla-object ent) dxf_ent (entget ent) pt_ins (cdr (assoc 10 dxf_ent)) ) (vla-GetBoundingBox obj_vlax 'mnpt 'mxpt) (setq minpt (trans (safearray-value mnpt) 0 1) maxpt (trans (safearray-value mxpt) 0 1) ) (setq offset (* (distance minpt maxpt) 2.0)) (entmod (subst (cons 10 (polar pt_ins ang offset)) (assoc 10 dxf_ent) dxf_ent)) (setq ang (+ ang inc_ang)) ) ) ) ) ) )) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
fabcad Posté(e) le 2 juillet 2012 Auteur Posté(e) le 2 juillet 2012 Merci bonuscad, La première fonction de placement est impeccable,- il faudrait que la ligne imaginaire entre le centre du cercle imaginaire et les textuels soient la distance dynamique entre le centre et les textuels et comme deuxième option faire tourner les textuels comme les rayons d'une bicyclette (tour de France) depuis ce point centre en conservant leur angle d'origine. Merci par un Homo-(MAP)piens Fabrice
bonuscad Posté(e) le 2 juillet 2012 Posté(e) le 2 juillet 2012 - il faudrait que la ligne imaginaire entre le centre du cercle imaginaire et les textuels soient la distance dynamique entre le centre et les textuels Désolé, j'ai beau être imaginatif, je n'ai rien compris. Un petite illustration ?... faire tourner les textuels comme les rayons d'une bicyclette Ça, à priori, je pense avoir compris, il suffit de rajouter (après (entmod) )(entmod (subst (cons 50 ang) (assoc 50 dxf_ent) dxf_ent)) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
fabcad Posté(e) le 2 juillet 2012 Auteur Posté(e) le 2 juillet 2012 Cher Bonuscad, J'ai créé une autre illustration pour t'aider. Merci d'avance, Fabrice
bonuscad Posté(e) le 2 juillet 2012 Posté(e) le 2 juillet 2012 Alors voici le corps principal de la fonction, je te laisse peaufiner si besoin est. Tu en es capable, je sais que tu manie en tant soit peu le lisp. (defun c:dispach_text ( / js_mt nb_text inc_ang pt_or nb key ang ent dxf_ent pt_ins offset) (setq js_mt (ssget '((0 . "*TEXT")))) (cond (js_mt (cond ((> (setq nb_text (sslength js_mt)) 1) (setq inc_ang (/ (* 2 pi) nb_text) pt_or (cdr (assoc 10 (entget (ssname js_mt 0)))) nb nb_text ) (while (and (setq key (grread T 4 0)) (/= (car key) 3)) (setq ang (angle pt_or (cadr key))) (repeat nb (setq ent (ssname js_mt (setq nb (1- nb))) dxf_ent (entget ent) pt_ins (cdr (assoc 10 dxf_ent)) offset (distance pt_or (cadr key)) ) (entmod (subst (cons 10 (polar pt_or ang offset)) (assoc 10 dxf_ent) dxf_ent)) (setq ang (+ ang inc_ang)) ) (setq nb nb_text) ) ) ) ) ) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
fabcad Posté(e) le 2 juillet 2012 Auteur Posté(e) le 2 juillet 2012 Bonsoir, M a g n i f i q u e ! Peaufiner ? je ne sais pas car elle remplit avec brio mon attente.Je vais déjà décortiquer pour voir les grread et voir comment tu as fait. Merci beaucoup, Fabrice.
VDH-Bruno Posté(e) le 3 juillet 2012 Posté(e) le 3 juillet 2012 Bonjour bonuscad,Je viens de tester, c’est visuellement très réussi comme routine, bravo j’aime beaucoup :) Apprendre => Prendre => Rendre
VDH-Bruno Posté(e) le 3 juillet 2012 Posté(e) le 3 juillet 2012 Re, Pour ceux qui préfèrent avoir comme points de base la moyenne de tous les points d’insertion des textes, plutôt que le point d’insertion de la première entité sélectionné vous pouvez substituer ces lignes de codes :(setq inc_ang (/ (* 2 pi) nb_text) pt_or (cdr (assoc 10 (entget (ssname js_mt 0)))) nb nb_text) Par ces dernières :;; calcul le centre de gravité des points d'insertions des textes sélectionnés (setq inc_ang (/ (* 2 pi) nb_text) pt_or (mapcar '(lambda (x) (/ x (float (length pt_or)))) (apply 'mapcar (cons '+ (repeat (setq nb nb_text) (setq pt_or (cons (cdr (assoc 10 (entget (ssname js_mt (setq nb (1- nb)))))) pt_or)))))) nd nb_text) (Ps : Au cas où vous relanceriez la commande une seconde fois sur la même sélection, ou sur des sélections de textes non superposés) Apprendre => Prendre => Rendre
bonuscad Posté(e) le 3 juillet 2012 Posté(e) le 3 juillet 2012 Merci à vous pour les compliments. Peaufiner ? je ne sais pas car elle remplit avec brio mon attente. Je l'ai écrite vraiment rapidement depuis le SCG sans beaucoup de tests. Je n'ai même pas essayé dans et depuis des SCU particulier ou depuis des points de vues, voir si le comportement était bon. C'est en cela que j'ai évoqué le terme de peaufiner. (si besoin est!...)Il y a aussi peut être la justification de texte fixé (forcée sur 2 points) qui pourrait poser problème, et accessoirement l'état de calque verrouillé et j'en oubli peut être encore. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
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