Aller au contenu

masque d\'arriere plan


Messages recommandés

Posté(e)

bonjour,

 

il m'arrive souvent d'utiliser un masque d'arriere plan pour rendre plus lisible les ecritures sur un fond de carte, du coup j'aimerai en un bouton mais je ne trouve pas la commande pour faire la macro.

 

J'ai trouvé le bouton ''masque de texte'' sous express mais c pas aussi bien, une fois le masque de texte réalisé , la modification des textes est plus chiante (le double clic sur le texte ne marche plus)

 

si quelqu'un pouvait m'aider pour la macro d'un bouton qui ferai les choses suivantes:

 

- masque d'arrière plan.

- utiliser masque d'arriere plan.

- utiliser la couleur d'arrière plan du dessin.

 

merci

Posté(e)

j'avais abordé le sujet, (mais je sais pas vraiment programmer non plus...)

 

et on m'avait donné des réponses : ici surtout et .

 

Dans le 1er sujet, la réponse de REBCAO t'aidera peut être.

Tiens nous au courant, si tu arrives à faire un truc sympa, moi ça m'interresse ! ;) ;)

Et si quelqu'un peut nous sortir un p'tit lisp, merci d'avance ! :)

 

[Edité le 15/3/2007 par Pieroka]

Formateur Autocad - Revit - Sketchup - Photoshop

Posté(e)

Salut,

 

Voici un LISP qui, j'espère répond à vos demandes.

 

Il permet d'ajouter, d'éditer ou de supprimer un masque d'arrière-plan à une sélection de MTexts

 

Le fichier DCL à enregistrer sous Masque.dcl dans un dossier du chemin de recherche des fichiers de support :

 

masque:dialog{
 label = "Masque d'arrière-plan";
 :toggle{
   label = "Utiliser le masque d'arrière-plan";
   key = "use";
 }
 :edit_box{
   label = "Facteur de décalage";
   key = "fact";
   edit_width = 6;
   value = 1.5;
   is_enabled = false;
 }
 spacer;
 :boxed_column{
   label = "Couleur de remplissage";
   :toggle{
     label = "Utiliser la couleur d'arrière-plan du dessin";
     key = "apd";
     is_enabled = false;
   }
   :retirement_button{
     label = "Choisir une couleur";
     key = "col";
     is_enabled = false;
   }
 }
 spacer;
 ok_cancel;
} 

 

Le LISP, taper bgf pour lancer la commande.

 

(defun masque (/ use col fact lst)
 (setq dcl_id (load_dialog "masque.dcl"))
 (setq what_next 2)
 (while (>= what_next 2)
   (if	(not (new_dialog "masque" dcl_id))
     (exit)
   )
   (if	(not use)
     (setq use 0)
   )
   (if	(or col (= use 0))
     (mode_tile "accept" 0)
     (mode_tile "accept" 1)
   )
   (if	(not fact)
     (setq fact 1.5)
   )
   (set_tile "fact" (rtos fact))
   (if	(= 0 use)
     (progn
(set_tile "use" "0")
(mode_tile "fact" 1)
(mode_tile "apd" 1)
(mode_tile "col" 1)
(mode_tile "accept" 0)
     )
     (progn
(set_tile "use" "1")
(mode_tile "fact" 0)
(mode_tile "apd" 0)
(mode_tile "col" 0)
     )
   )
   (action_tile
     "use"
     "(if (= \"1\" $value)
     (progn
     (setq use 1)
     (mode_tile \"fact\" 0)
     (mode_tile \"apd\" 0)
     (mode_tile \"col\" 0)
     (if col
     (mode_tile \"accept\" 0)
     (mode_tile \"accept\" 1)))
     (progn
     (setq use 0)
     (mode_tile \"fact\" 1)
     (mode_tile \"apd\" 1)
     (mode_tile \"col\" 1)
     (mode_tile \"accept\" 0)))"
   )
   (action_tile
     "apd"
     "(if (= \"1\" $value)
     (progn (setq use 3 col 256)
     (mode_tile \"col\" 1)
     (mode_tile \"accept\" 0))
     (progn (setq use 1 col nil)
     (mode_tile \"col\" 0)
     (if col
     (mode_tile \"accept\" 0)
     (mode_tile \"accept\" 1))))"
   )
   (action_tile
     "fact"
     "(setq fact (atof $value))"
   )
   (action_tile
     "col"
     "(done_dialog 3)"
   )
   (action_tile
     "accept"
     "(done_dialog 1)"
   )
   (setq what_next (start_dialog))
   (cond
     ((= what_next 3)
      (if (not (setq col (acad_colordlg 1)))
 (mode_tile "accept" 1)
      )
     )
     ((= what_next 0)
      (setq use nil)
     )
   )
 )
 (unload_dialog dcl_id)
 (cond
   ((not use) nil)
   ((= use 0) '((90 . 0)))
   ((= col 256)
    (list '(90 . 3)
   '(63 . 256)
   (cons 45 fact)
    )
   )
   (T
    (list '(90 . 1)
   (cons 63 col)
   (cons 45 fact)
    )
   )
 )
)

(defun c:bgf (/ ss n txt)
 (vl-load-com)
 (if (and (setq ss (ssget '((0 . "MTEXT"))))
   (setq lst (masque))
     )
   (progn
     (vla-StartundoMark
(vla-get-Activedocument (vlax-get-acad-object))
     )
     (repeat (setq n (sslength ss))
(if (= 1 (length lst))
  (progn
    (setq
      txt (vlax-ename->vla-object (ssname ss (setq n (1- n))))
    )
    (vla-put-BackgroundFill txt :vlax-false)
  )
)
(progn
  (setq txt (entget (ssname ss (setq n (1- n)))))
  (entmod (append
	    (vl-remove-if
	      '(lambda (x)
		 (or (member (car x) '(90 63 45))
		     (			 )
	       )
	      txt
	    )
	    lst
	  )
  )
)
     )
     (vla-EndundoMark
(vla-get-Activedocument (vlax-get-acad-object))
     )
   )
 )
 (princ)
) 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Super (gile) ! C tout à fait ce qu'il me faut...

 

Mais maintenant j'aimerais en faire un bouton de commande, quelle est la macro que je dois rentrer ??

 

merci

Posté(e)

J'ai trouvé !!

 

il suffit de charger le lisp au démarrage et de créer un bouton avec la macro "C^Cbgf"

 

J'aimerais franchir une autre étape, créer le même bouton mais en transparence pour l'utilisateur cad avec les deux options couchés.

 

je c pas si vous me suivez <acronym class=dict title=

 

Là je pense qu'il faut modofier le lisp...qu'est ce que tu en pense (gile) ??

Posté(e)

Salut LOLO2B82,

 

Je me suis amusé à fair une boite de dialogue qui ressemble un peu à celle "d'origine", mais si je comprends bien la demande tu n'as pas besoin de la boite de dialogue, tu veux systématiquement les options : masque d'arrière-plan/Couleur d'arrière-plan du dessin/Facteur de décalage 1.5.

Dans ce cas un simple LISP (sans fichier DCL est suffisant)

 

(defun c:bgf2 (/ ss n txt)
 (vl-load-com)
 (if (setq ss (ssget '((0 . "MTEXT"))))
   (progn
     (vla-StartundoMark
(vla-get-Activedocument (vlax-get-acad-object))
     )
     (repeat (setq n (sslength ss))
(if (= 1 (length lst))
  (progn
    (setq
      txt (vlax-ename->vla-object (ssname ss (setq n (1- n))))
    )
    (vla-put-BackgroundFill txt :vlax-false)
  )
)
(progn
  (setq txt (entget (ssname ss (setq n (1- n)))))
  (entmod (append
	    (vl-remove-if
	      '(lambda (x)
		 (or (member (car x) '(90 63 45))
		     (			 )
	       )
	      txt
	    )
	    '((90 . 3) (63 . 256) (45 . 1.5))
	  )
  )
)
     )
     (vla-EndundoMark
(vla-get-Activedocument (vlax-get-acad-object))
     )
   )
 )
 (princ)
) 

 

Si tu veux quand même la boite de dialogue, mais avec les options Masque d'arrière-plan et Couleur d'arrière plan du dessin cochées par défaut, il faut remplacer la routine LISP Masque par celle-ci

 

(defun masque (/ use col fact lst)
 (setq dcl_id (load_dialog "masque.dcl"))
 (setq what_next 2)
 (while (>= what_next 2)
   (if	(not (new_dialog "masque" dcl_id))
     (exit)
   )
   (if	(not use)
     (setq use 1)
   )
   (if (not col)
     (setq col 256)
     )
   (if	(or col (= use 0))
     (mode_tile "accept" 0)
     (mode_tile "accept" 1)
   )
   (if	(not fact)
     (setq fact 1.5)
   )
   (set_tile "fact" (rtos fact))
   (if	(= 0 use)
     (progn
(set_tile "use" "0")
(mode_tile "fact" 1)
(mode_tile "apd" 1)
(mode_tile "col" 1)
(mode_tile "accept" 0)
     )
     (progn
(set_tile "use" "1")
(mode_tile "fact" 0)
(mode_tile "apd" 0)
(mode_tile "col" 0)
     )
   )
   (if	(= col 256)
     (progn
(set_tile "apd" "1")
(mode_tile "col" 1)
     )
   )
   (action_tile
     "use"
     "(if (= \"1\" $value)
     (progn
     (setq use 1)
     (mode_tile \"fact\" 0)
     (mode_tile \"apd\" 0)
     (mode_tile \"col\" 0)
     (if col
     (mode_tile \"accept\" 0)
     (mode_tile \"accept\" 1)))
     (progn
     (setq use 0)
     (mode_tile \"fact\" 1)
     (mode_tile \"apd\" 1)
     (mode_tile \"col\" 1)
     (mode_tile \"accept\" 0)))"
   )
   (action_tile
     "apd"
     "(if (= \"1\" $value)
     (progn (setq use 3 col 256)
     (mode_tile \"col\" 1)
     (mode_tile \"accept\" 0))
     (progn (setq use 1 col nil)
     (mode_tile \"col\" 0)
     (if col
     (mode_tile \"accept\" 0)
     (mode_tile \"accept\" 1))))"
   )
   (action_tile
     "fact"
     "(setq fact (atof $value))"
   )
   (action_tile
     "col"
     "(done_dialog 3)"
   )
   (action_tile
     "accept"
     "(done_dialog 1)"
   )
   (setq what_next (start_dialog))
   (cond
     ((= what_next 3)
      (if (not (setq col (acad_colordlg 1)))
 (mode_tile "accept" 1)
      )
     )
     ((= what_next 0)
      (setq use nil)
     )
   )
 )
 (unload_dialog dcl_id)
 (cond
   ((not use) nil)
   ((= use 0) '((90 . 0)))
   ((= col 256)
    (list '(90 . 3)
   '(63 . 256)
   (cons 45 fact)
    )
   )
   (T
    (list '(90 . 1)
   (cons 63 col)
   (cons 45 fact)
    )
   )
 )
) 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

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é