LOLO2B82 Posté(e) le 15 mars 2007 Posté(e) le 15 mars 2007 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
Pieroka Posté(e) le 15 mars 2007 Posté(e) le 15 mars 2007 j'avais abordé le sujet, (mais je sais pas vraiment programmer non plus...) et on m'avait donné des réponses : ici surtout et là. 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
(gile) Posté(e) le 17 mars 2007 Posté(e) le 17 mars 2007 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
Pieroka Posté(e) le 17 mars 2007 Posté(e) le 17 mars 2007 Testé et approuvé ! Merci Gile ! :D Formateur Autocad - Revit - Sketchup - Photoshop
LOLO2B82 Posté(e) le 21 mars 2007 Auteur Posté(e) le 21 mars 2007 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
LOLO2B82 Posté(e) le 21 mars 2007 Auteur Posté(e) le 21 mars 2007 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) ??
(gile) Posté(e) le 22 mars 2007 Posté(e) le 22 mars 2007 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
LOLO2B82 Posté(e) le 23 mars 2007 Auteur Posté(e) le 23 mars 2007 merci bcp (gile) !! Qu'est ce que j'aimerai être aussi bon que toi :(
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