Aller au contenu

Masque d\'arrière plan - ligne de repère multiple


zebulon_

Messages recommandés

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
) 

 

Amicalement

Vincent

 

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)

Lien vers le commentaire
Partager sur d’autres sites

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.

 

Amicalement

Vincent

 

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)

Lien vers le commentaire
Partager sur d’autres sites

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:

Lien vers le commentaire
Partager sur d’autres sites

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.

 

Amicalement

Vincent

 

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)

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...
  • 8 ans après...

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

Lien vers le commentaire
Partager sur d’autres sites

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.

 

Amicalement

Vincent

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)

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité