Modification couleur attribut texte dans un bloc

Modification couleur attribut texte dans un bloc

Anonymous
Non applicable
4 430 Visites
15 Réponses
Message 1 sur 16

Modification couleur attribut texte dans un bloc

Anonymous
Non applicable

Bonjour, dans mon folio j'ai un bloc cartouche "AUTO4DE" qui contient plusieurs attributs textes, dont 'Titre1' et 'Plan' qui ont respectivement la couleur 'ducalque=jaune'. je souhaiterai modifier uniquement la couleur en vert de ces 2 attributs. Problème :  j'ai des 10aines voir une centaine de folio à modifier, comment puis je faire un script pour modifier l'ensemble des folios ?

 

pour info:

j'ai réussi a créer un script pour modifier les textes, exemple :

-attedit
n
n

 

Titre1

 

67
74

-attedit
n
n

 

Plan

 

01
02

****

j'ai un trouver un fichier excell pour générer les scripts,. je sélectionne le script et les folios a modifier: résultat,  il me créé un fichier avec le script contenant tous les folios. je fais un déplacé de l'explorateur vers autocad et le script lance l'ouverture 1 par 1 des folios en apportant la modification du titre 1 et plan .  ca fonctionne très bien.

 

merci d'avance

0 J'aime
Solutions acceptées (1)
4 431 Visites
15 Réponses
Replies (15)
Message 2 sur 16

patrick_35
Collaborator
Collaborator

Salut

 

Quelle est la question ?

 

Sinon, tu as aussi SuperAutoScript

 

@+

0 J'aime
Message 3 sur 16

Anonymous
Non applicable

dans le bloc cartouche, nommé "AUTO4DE" qui contient plusieurs attributs textes, je souhaiterai modifier uniquement la couleur de 2 attributs 'Titre1' et 'Plan'  en vert qui sont de la couleur 'ducalque=jaune'.

 

ayant beaucoup de folio a modifier j'aurai aimé savoir en plus si l'on pouvait faire un petit script pour pouvoir modifier l'ensemble de mes folios.

 

j'ai réussi à modifier le texte mais pas pour la couleur.

 

 

0 J'aime
Message 4 sur 16

_Steven_
Mentor
Mentor

Salut,

 

Est-ce que tous tes folios sont dans le même dessin?

Si oui, il n'y a pas besoin de faire de script.

Tu sélectionnes ton cartouche > Clic droit > Editeur de bloc > Tu sélectionnes les attributs Titre 1 et Plan et tu forces la couleur en vert puis tu fermes l'éditeur de bloc en enregistrant les modifications.

Tu lances, ensuite la commande ATTSYNQ, tu valides, tu sélectionnes ton cartouche puis tu valides.

De ce fait, la modification sera faite sur tous tes folios.

A moins que je n'ai pas bien compris la question.

Steven

Ce post vous a été utile ? N'hésitez pas à aimer ce post.
Ce post a-t-il répondu à votre question ? Cliquez sur le bouton APPROUVER LA SOLUTION en dessous de la réponse.




« L’homme de bien n’exige pas de l’autre qu’il soit parfait, il l’aide à accomplir ce qu’il a en lui de meilleur. »
Lao Tseu
0 J'aime
Message 5 sur 16

Anonymous
Non applicable

bonjour j'ai 1 folio =1fichier,

et le cartouche est le même pour tous.

j'arrive a apporter les modification manuellement mais peut-on faire un script pour

passer la couleur jaune en vert pour les 2 attributs dans le bloc cartouche.

 

cartouche bloc : AUTO4DE

étiquette/attribut : titre1

étiquette/attribut : plan

 

****

au moins un script pour un folio, comme je l'indique plus haut j'ai trouvé un programme excell qui me créé le script pour tous les folios. 

0 J'aime
Message 6 sur 16

patrick_35
Collaborator
Collaborator

Pas avec la commande -attedit.

 

La solution est d'insérer et de redéfinir le bloc avec les bonnes couleurs (inserer;toto=toto;...)

Puis d'effacer le dernier objet (en l'occurrence, le bloc que l'on vient d'insérer)

Puis de faire une synchro (attsync)

 

@+

 

0 J'aime
Message 7 sur 16

Anonymous
Non applicable

faire ca pour chaque fichier/folio !!

 

actuellement je rentre dans "éditeur d'attribut étendu" et onglet 'propriété" puis je modifie la couleur.

j'ai pris la main je continu comme ça 🙂

****

on ne peut pas faire un script ? par exemple la fonction "attedit" avec  édition des attributs un par un pour modifier la couleur.....

 

0 J'aime
Message 8 sur 16

patrick_35
Collaborator
Collaborator

On peut avec -attedit changer la couleur des attributs, mais il faut les sélectionner.

Du coup, le script, bye bye.

 

Il reste la solution d'un lisp si tu es en version pleine.

 

@+

0 J'aime
Message 9 sur 16

Anonymous
Non applicable

oui je peux lancer les lisp.

par contre la programmation ce n'est pas ma tasse de the 🙂

0 J'aime
Message 10 sur 16

patrick_35
Collaborator
Collaborator
Solution acceptée

Voici un lisp

(defun c:mumudidi(/ att col doc obj sel nombl Mes_Attributs Mon_Bloc)

  (defun nombl(bl)
    (if (vlax-property-available-p bl 'effectivename)
      (strcase (vla-get-effectivename bl))
      (strcase (vla-get-name bl))
    )
  )

(vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) ;;;============================================================================== ;;; ;;; Paramètres à définir par l'utilisateur ;;; ;;; Mon_Bloc = Le nom du bloc à modifier ;;; ;;; Mes_Attributs = Une liste des attributs à modifier ;;; La liste de compose du nom de l'étiquette et de sa couleur ;;; Par exemple l'étiquette ETQ1 et la couleur rouge (1) ;;; l'étiquette ETQ2 et la couleur jaune (2) ;;; (setq Mes_Attributs '(("ETQ1" 1) ("ETQ2" 2))) ;;; ;;;============================================================================== (setq Mon_Bloc "AUTO4DE") (setq Mes_Attributs '(("TITRE1" 1) ("PLAN" 2))) ;;;============================================================================== ;;; ;;; Fin des paramètres à définir par l'utilisateur ;;; ;;;============================================================================== (and (ssget "_x" (list (cons 0 "insert") (cons 66 1))) (progn (vlax-for obj (setq sel (vla-get-activeselectionset doc)) (and (eq (nombl obj) Mon_Bloc) (foreach att (vlax-invoke obj 'getattributes) (and (setq col (assoc (vla-get-tagstring att) Mes_Attributs)) (vla-put-color att (cadr col)) ) ) ) )
      (vla-delete sel) ) ) (vla-endundomark doc) (princ) )

Tu peux dans un script, charger puis lancer le lisp.

Tu testes en premier le lisp sur un folio, et si c'est ok, tu le scriptes.

 

@+

0 J'aime
Message 11 sur 16

Anonymous
Non applicable

bonjour,

quelques explications supplémentaires svp:

dois-je mettre le chemin du fichier ici "(defun c:mumudidi..." ?

est ce que le 1 et le 2 dans "setq Mes_Attributs '(("TITRE1" 1) ("PLAN" 2)))" je les remplace par la couleur initiale  ou finale ? exp initiale jaune = 255.255.0 et finale vert=0.255.0

merci d'avance

0 J'aime
Message 12 sur 16

patrick_35
Collaborator
Collaborator

Salut

 


@Anonymous  a écrit :dois-je mettre le chemin du fichier ici "(defun c:mumudidi..." ?

Non, tu as juste à lancer le lisp pout tester s'il te convient.


@Anonymous  a écrit :

est ce que le 1 et le 2 dans "setq Mes_Attributs '(("TITRE1" 1) ("PLAN" 2)))" je les remplace par la couleur initiale  ou finale ? exp initiale jaune = 255.255.0 et finale vert=0.255.0


Non, le lisp n'est pas prévu pour les couleurs RVB. Il faudrait le faire évoluer.

Pour les couleurs, tu indiques simplement la couleur voulue. Pas besoin de connaitre la couleur initiale.

 

@+

0 J'aime
Message 13 sur 16

Anonymous
Non applicable

bonjour, désolé j'avais un dossier à finir absolument.. avec un peu de retard je reviens sur mes plans.

pouvez vous me valider le scrip que j'ai complété svp :

 

(defun c:mumudidi(/ att col doc obj sel nombl (("TITRE1" VERT) ("PLAN" VERT)) AUTO2AT)

  (defun nombl(bl)
    (if (vlax-property-available-p bl 'effectivename)
      (strcase (vla-get-effectivename bl))
      (strcase (vla-get-name bl))
    )
  )

  (vl-load-com)
  (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  (vla-startundomark doc)

;;;==============================================================================
;;;
;;; Paramètres à définir par l'utilisateur
;;;
;;; Mon_Bloc = Le nom du bloc à modifier
;;;
;;; Mes_Attributs = Une liste des attributs à modifier
;;; La liste de compose du nom de l'étiquette et de sa couleur
;;; Par exemple l'étiquette ETQ1 et la couleur rouge (1)
;;;  l'étiquette ETQ2 et la couleur jaune (2)
;;; (setq Mes_Attributs '(("ETQ1" 1) ("ETQ2" 2)))
;;;
;;;==============================================================================

  (setq Mon_Bloc "AUTO2AT")
  (setq Mes_Attributs '(("TITRE1" VERT) ("PLAN" VERT)))

;;;==============================================================================
;;;
;;; Fin des paramètres à définir par l'utilisateur
;;;
;;;==============================================================================

  (and (ssget "_x" (list (cons 0 "insert") (cons 66 1)))
    (progn
      (vlax-for obj (setq sel (vla-get-activeselectionset doc))
 (and (eq (nombl obj) AUTO2AT)
   (foreach att (vlax-invoke obj 'getattributes)
     (and (setq col (assoc (vla-get-tagstring att) (("TITRE1" VERT) ("PLAN" VERT))))
       (vla-put-color att (cadr col))
     )
   )
 )
      )
      (vla-delete sel)
    )
  )
  (vla-endundomark doc)
  (princ)
)

0 J'aime
Message 14 sur 16

patrick_35
Collaborator
Collaborator

Bonjour

 

Tu n'as pas besoin de toucher à


@Anonymous  a écrit :

(defun c:mumudidi(/ att col doc obj sel nombl (("TITRE1" VERT) ("PLAN" VERT)) AUTO2AT)


Juste ce qui est compris entre


@Anonymous  a écrit :

;;;============================================================================
;;;
;;; Paramètres à définir par l'utilisateur
;;;
;;; Mon_Bloc = Le nom du bloc à modifier
;;;
;;; Mes_Attributs = Une liste des attributs à modifier
;;; La liste de compose du nom de l'étiquette et de sa couleur
;;; Par exemple l'étiquette ETQ1 et la couleur rouge (1)
;;;  l'étiquette ETQ2 et la couleur jaune (2)
;;; (setq Mes_Attributs '(("ETQ1" 1) ("ETQ2" 2)))
;;;
;;;============================================================================


et


@Anonymous  a écrit :

;;;============================================================================
;;;
;;; Fin des paramètres à définir par l'utilisateur
;;;
;;;============================================================================


Donc pour correspondre à ton besoin

  (setq Mon_Bloc "AUTO2AT")
  (setq Mes_Attributs '(("TITRE1" 3) ("PLAN" 3)))

@+

0 J'aime
Message 15 sur 16

Anonymous
Non applicable

bonjour désolé mais je n'y arrive pas : la programmation ! ce n'est vraiment pas ma tasse de thé 😞

 

rappel:

1 folio =1fichier,

dans mon bloc cartouche il faut passer la couleur jaune en vert pour les 2 attributs.

bloc cartouche = AUTO4DE

contenant étiquette/attribut = titre1

et étiquette/attribut = plan

0 J'aime
Message 16 sur 16

patrick.emin
Alumni
Alumni

Bonjour @Anonymous

Si une des réponses à votre question résout votre problème, vous a permis de le comprendre ou contribue significativement à sa résolution, voulez vous avoir l'amabilité de cliquer sur le bouton "Accepter comme solution" en bas de la réponse qui apporte une solution?

Merci de ne pas accepter comme solution le message que vous êtes en train de lire.


Si nos équipes de support technique ont pu vous apporter une solution ou contribuer significativement à vous aider en dehors de ce forum, pouvez vous partager ici la solution trouvée et cliquer sur le bouton "Accepter comme solution" de façon qu'elle bénéficie à la communauté?
Merci.


Patrick Emin animateur de la communauté francophone


Vous avez trouvé un message utile? Alors donnez un "J'aime" à ce message!
Votre question a eu une réponse satisfaisante? Voulez vous avoir l'amabilité de cliquer sur le bouton
 APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Signez notre Livre d'Or
0 J'aime