t.erie Posté(e) le 29 juin 2010 Partager Posté(e) le 29 juin 2010 Bonjour,Mon problème est le suivant:J'ai plusieurs centaines de fichiers dans lesquels un bloc est inséré.Ce bloc est composé de x attributs.J'ai besoin maintenant de changer les étiquettes de ce bloc sans perdre les valeurs.Est-ce qu'une âme charitable peut m'aider ?Je vais quand même fouiner encore dans les forums ... Merci par avance Thierry Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 29 juin 2010 Partager Posté(e) le 29 juin 2010 Salut Tu insères le bloc avec une redéfinition, puis un battman ou attsync @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824 Lien vers le commentaire Partager sur d’autres sites More sharing options...
t.erie Posté(e) le 29 juin 2010 Auteur Partager Posté(e) le 29 juin 2010 Merci de votre réponse, mais...si je renomme mes étiquettes et que je fais un ATTSYNC je perd tout. Thierry Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 29 juin 2010 Partager Posté(e) le 29 juin 2010 Ok Je pensais que tu voulais ajouter une étiquette dans ton bloc. Si tu veux renommer tes étiquettes, dans un 1er dessin, tu édites ton bloc, renomme tes étiquettes, utilises battman ou attsync puis un wbloc de ton/tes blocs. Sur les autres dessins, tu insères le/les bloc(s) puis un battman ou attsync sur chacun des blocs insérés. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824 Lien vers le commentaire Partager sur d’autres sites More sharing options...
t.erie Posté(e) le 29 juin 2010 Auteur Partager Posté(e) le 29 juin 2010 Le problème est que si via l'éditeur de bloc tu renomme les étiquettes puis tu fais un attsync sur une référence de bloc, toutes les ref disparaissent Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 29 juin 2010 Partager Posté(e) le 29 juin 2010 Un attsync fait correspondre le bloc dans la base d'autocad avec ceux dans le dessin.Si tes ref disparaissent, cela veut dire que tu n'as actuellement rien qui correspond avec la base et que si tu insères un nouveau bloc, tu dois avoir des surprises Dans ce cas, reste la prog.C'est le moment ou jamais ;) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824 Lien vers le commentaire Partager sur d’autres sites More sharing options...
t.erie Posté(e) le 29 juin 2010 Auteur Partager Posté(e) le 29 juin 2010 Autant te dire que la programmation et moi ça fait un monde.Merci quand même pour ton aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 29 juin 2010 Partager Posté(e) le 29 juin 2010 Un lisp vite fait (defun c:rat(/ doc ent att nom nombl pos rep tag tot) (defun nombl(bl) (if (vlax-property-available-p bl 'effectivename) (vla-get-effectivename bl) (vla-get-name bl) ) ) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (and (setq tag (car (nentsel))) (setq tag (vlax-ename->vla-object tag)) (eq (vla-get-objectname tag) "AcDbAttribute") (/= (setq rep (getstring t "\nNouvelle étiquette : ")) "") (ssget "x" (list (cons 0 "insert") (cons 2 (strcat "`**," (setq nom (nombl (vla-objectidtoobject (vla-get-database tag) (vla-get-ownerid tag) ) ) ) ) ) ) ) (progn (setq pos 0 tot 0) (foreach att (vlax-invoke (vla-objectidtoobject (vla-get-database tag) (vla-get-ownerid tag)) 'getattributes) (and (eq (vla-get-handle att) (vla-get-handle tag)) (setq pos tot) ) (setq tot (1+ tot)) ) (setq tot 0) (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (and (eq (nombl ent) nom) (setq tot (1+ tot)) (vla-put-tagstring (nth pos (vlax-invoke ent 'getattributes)) rep) ) ) (vla-delete sel) (princ (strcat "\nModification de " (itoa tot) " attribut(s).")) ) ) (vla-endundomark doc) (princ) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824 Lien vers le commentaire Partager sur d’autres sites More sharing options...
t.erie Posté(e) le 29 juin 2010 Auteur Partager Posté(e) le 29 juin 2010 C'est vraiment gentil de prendre sur votre temps pour trouver une solution à mon problème.En fait j'ai un bloc dans mon fichier avec plusieurs ref associées.Je voudrais inséré un nouveau bloc portant le même nom (mais avec avec des etiquettes différentes)tout en conservant les précédentes valeurs.Merci beaucoup Lien vers le commentaire Partager sur d’autres sites More sharing options...
didier Posté(e) le 29 juin 2010 Partager Posté(e) le 29 juin 2010 coucou tel que c'est expliqué, je confirme que c'est BATTMAN qui convientmaintenant les "ref", c'est pas des XREFS au moins ? amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
t.erie Posté(e) le 29 juin 2010 Auteur Partager Posté(e) le 29 juin 2010 Oui c'est bien des références de blocs dont je parle.Je décompose la manip que j'ai faite:1°) Éditeur de bloc et renommage des étiquettes.2°) Ensuite attsync ou BATTMAN 3°) mes références de blocs disparaissent Thierry Lien vers le commentaire Partager sur d’autres sites More sharing options...
t.erie Posté(e) le 30 juin 2010 Auteur Partager Posté(e) le 30 juin 2010 Bonjour,serait-il possible d'automatiser la commande BATTMAN ?Je m'explique:J'ai environ 200 fichiers dans lesquels se trouve un bloc qui se nomme ETIQ-SU dont j'aimerai modifier ses 9 étiquettes d'attributs.Celles-ci se nomment toujours avec en préfixe (ESPACE_CLIENT:) du type ESPACE_CLIENT:ENTITEMon souhait serait d'enlever ESPACE_CLIENT: à toutes mes étiquettes pour conserver que la partie après les : CLIENT étant évidemment un nom de remplacement (discrétion oblige). Je croise les doigts en espérant qu'un des virtuoses de la programmation me sauve de cette galère. Thierry Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 30 juin 2010 Partager Posté(e) le 30 juin 2010 Salut pour les 200 fichiers, à utiliser par exemple avec SAS (defun c:rat(/ att blo doc ent sel txt) (setq doc (vla-get-activedocument (vlax-get-acad-object)) txt "ESPACE_CLIENT:" ) (vla-startundomark doc) (vlax-for blo (vla-get-blocks doc) (and (eq (vla-get-islayout blo) :vlax-false) (vlax-for ent blo (and (eq (vla-get-objectname ent) "AcDbAttributeDefinition") (wcmatch (strcase (vla-get-tagstring ent)) (strcase (strcat txt "*"))) (vla-put-tagstring ent (substr (vla-get-tagstring ent) (1+ (strlen txt)))) ) ) ) ) (and (ssget "x" (list (cons 0 "insert") (cons 66 1))) (progn (vlax-for blo (setq sel (vla-get-activeselectionset doc)) (foreach ent (vlax-invoke blo 'getattributes) (and (wcmatch (strcase (vla-get-tagstring ent)) (strcase (strcat txt "*"))) (vla-put-tagstring ent (substr (vla-get-tagstring ent) (1+ (strlen txt)))) ) ) ) (vla-delete sel) ) ) (vla-endundomark doc) (princ) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824 Lien vers le commentaire Partager sur d’autres sites More sharing options...
t.erie Posté(e) le 30 juin 2010 Auteur Partager Posté(e) le 30 juin 2010 Que dire.... UN GRAND MERCI pour ce LISP qui va me tirer d'affaire.Pour les autres personnes qui utiliseront ce LISP ne pas oublier de faire un ATTSYNC. BRAVO PATRICK Thierry Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 30 juin 2010 Partager Posté(e) le 30 juin 2010 Pour les autres personnes qui utiliseront ce LISP ne pas oublier de faire un ATTSYNC.Ce n'est pas la peine BRAVO PATRICK Thierry De rien :) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824 Lien vers le commentaire Partager sur d’autres sites More sharing options...
t.erie Posté(e) le 30 juin 2010 Auteur Partager Posté(e) le 30 juin 2010 C'est vrais la synchro n'est pas utile.La j'ai la tête dans le guidon et je commence à modifier mes fichiers.merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 1 juillet 2010 Partager Posté(e) le 1 juillet 2010 Hello SVP puis je permettre de demander un progr "un peu plus general" pour changer le nom des etiquettes d'attributs de UN bloc ou de TOUS les blocs du dessin !? Le tout etant bien sur Scriptable ... Question 1 :Traiter UN bloc (avec attrinut) que l'on va selectionner ou TOUS les blocs (avec attribut) d'un dessin Question 2Ajouter prefixe ou Ajouter suffixe ou Rechercher/remplacer texte Ainsi on pourrait ajouter "CADXP" en prefixe ou en suffixe a toutes les etiquettes ou rechercher le texte ALPHA dans les etiquettes pour le remplacer par rien du tout ou par CADXP ! Qu'en pensez vous ? Le Decapode Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
t.erie Posté(e) le 1 juillet 2010 Auteur Partager Posté(e) le 1 juillet 2010 Bonjour,pour faire écho au précèdent post, il serait aussi intéressant de pouvoir traiter les fichiers par lot:Dossier Windows par exemple.Thierry Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 1 juillet 2010 Partager Posté(e) le 1 juillet 2010 Salut Pourquoi pas Une première version en attendant d'y ajouter une BD pour faire écho au précèdent post, il serait aussi intéressant de pouvoir traiter les fichiers par lot: Avec SAS :DEric se fera un plaisir de t'aider @+ [Edité le 1/7/2010 par Patrick_35] Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 2 juillet 2010 Partager Posté(e) le 2 juillet 2010 Bonjour Une nouvelle version avec une boite de dialogue possiblecommande ret avec la bdcommande -ret sans la bdcommande ret en script sans bd @+ edit : Version 2.01 [Edité le 2/7/2010 par Patrick_35] Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824 Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 2 juillet 2010 Partager Posté(e) le 2 juillet 2010 Bonjour à toutes et tous, Trop fort le Patrick !!! :D Merki ! Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
t.erie Posté(e) le 2 juillet 2010 Auteur Partager Posté(e) le 2 juillet 2010 Merci Patrick Thierry Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 2 juillet 2010 Partager Posté(e) le 2 juillet 2010 Hello La grande classe Patrick ! :) Moi je fais les CCTP/CDC et vous (les fous du developpement : Patrick_35, Gilles, Bonuscad, etc), vous programmez !! :D Elle est pas belle la vie ??? ;) Encore Merci, Le Decapode PS: j'ai ajoute un (vl-load-com) en debut du code Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 2 juillet 2010 Partager Posté(e) le 2 juillet 2010 PS: j'ai ajoute un (vl-load-com) en debut du code Grumf.. L'éternel oubli C'est corrigé dans le lien @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824 Lien vers le commentaire Partager sur d’autres sites More sharing options...
kalos Posté(e) le 21 juillet 2010 Partager Posté(e) le 21 juillet 2010 je pense qu'un simple gestattb suffirait pour changer le nom de l'étiquette, on ne perds pas les valeurs! Lien vers le commentaire Partager sur d’autres sites More sharing options...
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