mittoo Posté(e) le 4 décembre 2007 Posté(e) le 4 décembre 2007 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?
bseb67 Posté(e) le 4 décembre 2007 Posté(e) le 4 décembre 2007 Salut mittoo! Si ta date est un attribut, c'est pas un problème.Il suffit de faire un ssget pour chercher tous les cartouchesex: (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...
Matt666 Posté(e) le 4 décembre 2007 Posté(e) le 4 décembre 2007 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."
mittoo Posté(e) le 4 décembre 2007 Auteur Posté(e) le 4 décembre 2007 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 ???
Patrick_35 Posté(e) le 4 décembre 2007 Posté(e) le 4 décembre 2007 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
MarcoTic Posté(e) le 4 décembre 2007 Posté(e) le 4 décembre 2007 Bonjour,Essai la commande Gatte, je pense que c'est ce qu'il te faut
mittoo Posté(e) le 4 décembre 2007 Auteur Posté(e) le 4 décembre 2007 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 ?
lesourd2 Posté(e) le 4 décembre 2007 Posté(e) le 4 décembre 2007 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). @+
Bred Posté(e) le 4 décembre 2007 Posté(e) le 4 décembre 2007 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...
speedy Posté(e) le 5 décembre 2007 Posté(e) le 5 décembre 2007 Bonjourc'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: DATEEnter 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
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