zebulon_ Posté(e) le 23 novembre 2010 Posté(e) le 23 novembre 2010 Bonjour, C'est un sujet qui a déjà été abordé ici . La solution consiste, en gros, à modifier chaque ligne de repère multiple une fois qu'elle est créée. Cela ne me satisfait pas. Je préférerais définir un masque d'arrière plan dans le style de repère multiple et avoir ce masque une fois pour toute.Mais, j'ai beau regarder dans le gestionnaire des styles de repère multiple, je n'ai trouvé aucun endroit où j'aurai pu activer la transparence de l'arrière-plan (comme on sait le faire facilement avec un style de cote) Pourtant, quand on regarde les codes DXF dans les Codes de groupe de données contextuelles de style de ligne de repère multiple, on trouve ces codes dxf : 91 Couleur d'arrière-plan texte 92 Transparence de l'arrière-plan texte 291 Couleur d'arrière-plan texte activée? 292 Remplissage d'arrière-plan texte activé? J'en conclue qu'il est possible de définir un style de repère multiple avec une couleur d'arrière-plan texte activé, puisqu'il y a le code dxf correspondant. :exclam: Comment sont définis les styles de lignes de repère multiple ? On ne les trouve pas, comme les style de cotes, dans une table. Il faut aller les chercher dans un dictionnaire. (setq dic (vla-item (vla-get-dictionaries acdoc) "ACAD_MLEADERSTYLE")) puis un style contenu dans dic (setq mlstyle (vla-item dic "standard")) Là, on se dit qu'avec (vlax-dump-object mlstyle), on va trouver quelque chose qui correspond à TextBackGround... mais, non, on fait choux blanc. Donc, j'ai essayé de passer par les codes dxf, mais c'est pas mieux. Comme je n'arrive pas à définir les choses en amont, j'essaye de modifier les choses en aval avec un réacteur. J'ai rajouté les textes dans le réacteur, afin de leur appliquer un masque également. ;;; Lisp à charger uniquement ... ne pas exécuter !!! (vl-load-com) (vlr-command-reactor "Masque texte" '((:vlr-commandEnded . EndMtextMleader))) (defun EndMtextMleader (calling-reactor endcommandInfo / thecommandend enam elst obj d) (setq thecommandend (nth 0 endcommandInfo)) (setq enam (entlast)) (setq obj (vlax-ename->vla-object enam)) (setq d 1.15) ;; valeur de l'offset (cond ((= thecommandend "MTEXT") (if (eq (vla-get-backgroundfill obj) :vlax-false) (progn ;; changer backgroundfill à vrai (vla-put-backgroundfill obj :vlax-true) ;; entmod offset (setq elst (entget enam)) (entmod (subst (cons 45 d) (assoc 45 elst) elst ) ;_ subst ) ;_ entmod ) ;_ progn ) ;_ if ) ((= thecommandend "MLEADER") (if (eq (vla-get-TextBackgroundFill obj) :vlax-false) (progn ;; changer backgroundfill à vrai (vla-put-TextBackgroundFill obj :vlax-true) ;; entmod offset (setq elst (entget enam)) (entmod (subst (cons 141 d) (assoc 141 elst) elst ) ;_ subst ) ;_ entmod ) ;_ progn ) ;_ if ) ) ;_ cond ) AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
fauxsuisse Posté(e) le 24 novembre 2010 Posté(e) le 24 novembre 2010 Bravo !!! C'est exactement ce que je recherchait :P Merci pour ton travail
zebulon_ Posté(e) le 24 novembre 2010 Auteur Posté(e) le 24 novembre 2010 Bonjour, l'utilisation du réacteur est un pis-aller. Ce serait quand même plus logique de pouvoir définir le masque d'arrière plan dans le style de ligne de repère multiple. On sait le faire avec des cotes, alors pourquoi pas avec des lignes de repère multiple, voire des styles de texte ? Quoique, avec les cotes on sait rajouter facilement au style de cote une couleur de remplissage "Arrière-plan", mais je ne vois pas non plus où on peut définir un facteur de décalage ? Étant donné que le décalage par défaut pour les cotes est convenable, on ne va pas se casser la tête à trouver comment ça se paramètre, pour autant que c'est possible. AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
fauxsuisse Posté(e) le 24 novembre 2010 Posté(e) le 24 novembre 2010 Tout à fait d'accord avec toi.De plus dans les lignes de repères multiples il est aussi possible d'encadrer les texte, mais là le même problème pas moyen de définir la distance entre le texte et le cadre ce qui fait quand on utilise une police simple style shx la distance joue mais dès qu'on ulitilse une police comme Arial alors le texte est collé au cadre, c'est dommage car les lignes de repères multiples sont très pratiques mais malheureusement mal développés. :casstet:
zebulon_ Posté(e) le 24 novembre 2010 Auteur Posté(e) le 24 novembre 2010 pas moyen de définir la distance entre le texte et le cadre Celui qui trouve recevra des chocolats du fauxsuisse, ou des fauxchocolats suisses, c'est selon... Blague à part, je ne sais pas non plus où ça se définit, si ça se définit. Pour les cotes, c'est d'ailleurs le même problème. AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
philsogood Posté(e) le 20 janvier 2011 Posté(e) le 20 janvier 2011 merci à toi _zebulonton code est vraiment sympa et très pratique!Phil Projeteur Revit Indépendant - traitement des eaux/CVC
Demixav Posté(e) le 18 juillet 2019 Posté(e) le 18 juillet 2019 Bonjour, Comment fait on pour se servir du LISP sans l’exécuter please?... :blink: Merci!Xav AutoCad Map 3D 2011 - Covadis v16.0dWindows 7 - 64b
Aleck_Ultimate Posté(e) le 18 juillet 2019 Posté(e) le 18 juillet 2019 Salut. Le tutôt de Maître (gile) sur le sujet : Mon lien Je suis pas sûr de comprendre ta question, mais il y a surement la réponse ici. Cordialy. Je suis dysorthographique alors lâchez-moi les basques avec ça, je fait déjà de mon mieux. Membre d'Extinction Rebellion, car pour sauver le monde il n'est jamais trop tard, amour et rage ! Pour écrire un vraie point médian (e·x·e·m·p·l·e) [Alt + 0183] ou ajout d'un raccourci clavier personnalisé (ex. [AltGr + ;]) Utilisateur d'AutoCAD 2021 sous Windows 10
zebulon_ Posté(e) le 18 juillet 2019 Auteur Posté(e) le 18 juillet 2019 Bonjour, Comment fait on pour se servir du LISP sans l’exécuter please?... :blink: Merci!Xav Bonjour,c'est un lisp qui contient un "réacteur" qui, comme son nom l'indique, doit réagir. Dans notre cas, il réagit à la commande "MLEADER", plus exactement, à la fin de cette commande. Le principe du réacteur est d'être chargé en début de session (soit avec un load manuel, soit en le chargeant automatiquement ce qui serait mieux), puis il réagira de lui-même après chaque commande MLEADER et fera ce qu'on lui demande de faire, dans notre cas la fonction EndMtextMleader. AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
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