Aller au contenu

Automatisation modif attribus


Messages recommandés

Posté(e)

Salut !

J'ai un fichier dans lequel j'ai une bonne quinzaine de présentations.

Dans chaque présentation, il y a un cartouche.

Dans chaque cartouche, je doi mofifier une date.

Est il possible de changer cet élément automatiquement partout, sans me taper chaque présentation?

Posté(e)

Salut mittoo!

 

Si ta date est un attribut, c'est pas un problème.

Il suffit de faire un ssget pour chercher tous les cartouches

ex: (setq s (ssget "x" (list (cons 2 nom_cartouche))))

 

Puis pour chaque élément de s, tu cherches son attribut qui correspond à la date et tu le modifie en faisant un simple (entmod (subst (cons 1 nouvelle_date) (assoc 1 elem) elem))

Ou elem est un (entget (ssname s cpt)).

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

Bah oui que c'est possible !!!

Voici 3 routines. MDATE1 2 et 3.

Je travaille sur un autre logiciel, qui ne remplit les dates qu'avec la routine MDATE2, qui force l'affichage de toutes les présentations dispo.

MDATE3 montre ce que disait bseb67.

MDATE1 est une autre technique, elle regarde toutes les entités du dessin.

 

Voici les codes :

(defun c:MDATE1 ( / ent str)
   (setq str (strcat 
           (substr (itoa (fix (getvar "CDATE"))) 7) 
           "/" 
           (substr (itoa (fix (getvar "CDATE"))) 5 2) 
           "/" 
           (substr (itoa (fix (getvar "CDATE"))) 1 4)
   ))
   (setq ent (entnext))
   (while ent
       (if (and 
               (member '(0 . "ATTRIB") (entget ent))
               (member '(2 . "DATE") (entget ent))
           )
           (progn
               (entmod (subst
                       (cons 1 str)
                       (assoc 1 (entget ent))
                       (entget ent)
               ))
               (entupd ent)
           )  
       )
       (setq ent (entnext ent))
   )
   (princ)
)


(defun c:MDATE2 ( / ctab sel n ent str)
   (setq 
       ctab (getvar "ctab")
       str (strcat 
           (substr (itoa (fix (getvar "CDATE"))) 7) 
           "/" 
           (substr (itoa (fix (getvar "CDATE"))) 5 2) 
           "/" 
           (substr (itoa (fix (getvar "CDATE"))) 1 4)
       )
   )
   (foreach pt (layoutlist)
       (setvar "ctab" pt)
       (if (setq sel (ssget "_x" '((2 . "cartouche_meril"))))
           (repeat (setq n (sslength sel))
               (setq ent (ssname sel (setq n (1- n))))
               (while (setq ent (entnext ent))
                   (if (and 
                           (member '(0 . "ATTRIB") (entget ent))
                           (member '(2 . "DATE") (entget ent))
                       )
                       (progn
                           (entmod (subst
                                   (cons 1 str)
                                   (assoc 1 (entget ent))
                                   (entget ent)
                           ))
                           (entupd ent)
                       )  
                   )
               )
           )
       )
   )
   (setvar "ctab" ctab)
   (princ)
)

(defun c:MDATE3 ( / sel n ent str)
   (setq str (strcat 
           (substr (itoa (fix (getvar "CDATE"))) 7) 
           "/" 
           (substr (itoa (fix (getvar "CDATE"))) 5 2) 
           "/" 
           (substr (itoa (fix (getvar "CDATE"))) 1 4)
   ))
   (if (setq sel (ssget "_x" '((2 . "cartouche_meril"))))
       (repeat (setq n (sslength sel))
           (setq ent (ssname sel (setq n (1- n))))
           (while (setq ent (entnext ent))
               (if (and 
                       (member '(0 . "ATTRIB") (entget ent))
                       (member '(2 . "DATE") (entget ent))
                   )
                   (progn
                       (entmod (subst
                               (cons 1 str)
                               (assoc 1 (entget ent))
                               (entget ent)
                       ))
                       (entupd ent)
                   )  
               )
           )
       )
   )
   (princ)
)

 

A bientot !

Matt.

"Chacun compte pour un, et nul ne compte pour plus d'un."

Posté(e)

oulalala les gars !!!

Je suis un utilisateur classique...c'est a dire que les lisp et toute autre petite prog sont étrangers por moi... Pourvez vous reprendre en incualt juste un peu avant...où je vais pour faire tout ça ???

Posté(e)

Salut

 

Avec LATT, tu peux lier des attributs entre-eux. Comme ça, dès que tu en changes un, les autres prennent la même valeur.

Le lisp doit être constament chargé car il utilise les réacteurs.

Comme liaison, elle est du type identique, et pour mémoriser l'attribut à lier d'une présentation à une autre, il faut utiliser MATT (inclus dans le lisp) puis LATT sur l'autre page pour la liaison.

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Bon, j'ai réussi pour Matt et Latt. Le hicc'est qu'il faut quand meme passer par totes les présentations pour valider le truc.

En revanche, je ne parviens pas du tout à avoir la commande GATTE... où la trouve-je ?

 

Posté(e)

Salut

 

Marcotic a parfaitement raison c'est la solution la plus simple

 

commande GATTE... où la trouve-je
.

 

 

Tu la tapes sur ta barre de commande ( à la condition que toutes tes presentations soient faites avec un seul bloc/cartouche et avec des attributs).

 

@+

Posté(e)

Salut,

la commande GATTE... où la trouve-je ?

C'est un outils des express-tools.

Si tu ne les a pas installé, tu met le dvd, et tu passes par le panneau de config/ajout-suppression de prog/ acad 2008 -> modifier-supprimer .....

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Bonjour

c'est bien une commande des Expresstools.....

http://cjoint.com/?mficNRGpLw

 

Voici la procédure .......

Commande: gatte

 

Select block or attribute [block name]: "tu selectionnes ton bloc "

Known tag names for block: DATE "le nom de l'étiquette"

Select attribute or type attribute name: "tu cliques sur la valeur que tu veux changer"

Block: nom_cartouche Attribute tag: DATE

Enter new text: 5/12/2007 "Saisie de la nouvelle valeur"

 

Number of inserts in drawing = 3 Process all of them? [Yes/No] : "et valider ainsi tous les blocs du même nom auront la même valeur modifiée"

 

@+

 

Michel a

 

 

 

 

 

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é