lolb75 Posté(e) le 2 juin 2014 Partager Posté(e) le 2 juin 2014 Bonjour a tous, :) Je fais encore appel a vous.... Voici mon problème: J'ai besoin de traiter beaucoup de blocs avec attribut, notamment changer (un des attributs du bloc) de calque mais pas l'autre attribut, je n'ai trouvé qu'une manière la commande BATTMAN mais il faut les changer un par un ... :( je souhaiterais pouvoir en sélectionner plusieurs. Si une âme charitable a la solution, merci d'avance Cordialement Lolb75 Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 2 juin 2014 Partager Posté(e) le 2 juin 2014 Bonsoir à toutes et tous, Depuis l'éditeur de bloc, puis en effet, une synchronisation,.. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
lolb75 Posté(e) le 2 juin 2014 Auteur Partager Posté(e) le 2 juin 2014 Bonsoir à toutes et tous, Depuis l'éditeur de bloc, puis en effet, une synchronisation,.. Bonjour lili2006, Désolé je ne comprends pas :( Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 2 juin 2014 Partager Posté(e) le 2 juin 2014 Re, Tu ouvres ton bloc dans l'éditeur de bloc,Tu changes ton attribut de calque,Tu synchronise,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
lolb75 Posté(e) le 3 juin 2014 Auteur Partager Posté(e) le 3 juin 2014 re: Ok, mais j'ai oublié de dire que c'est le même bloc mais les attributs ne vont pas dans les mêmes calques,c'est à dire, le même attribut de ce bloc sera dans des calques différents, je ne sais pas si je m'explique bien... Cordialement Lolb75 Lien vers le commentaire Partager sur d’autres sites More sharing options...
didier Posté(e) le 3 juin 2014 Partager Posté(e) le 3 juin 2014 Coucou de temps en temps je viens mettre mon grain de sel (hihi) le souci avec cette solution proposée c'est que si les attributs sont déplacés avant la synchronisation ils perdent cette définition et reviennent aux positions "théoriques".par contre c'est une solution en natifil reste à faire un lisp (quelques lignes) pour gérer ce changement de calque aisément en gardant les modifications de position des attributs. amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 3 juin 2014 Partager Posté(e) le 3 juin 2014 Hello Au fait il me semble avoir vu passer un Lisp/VLisp de Gilles ou Bruno qui faisait une resynchronisation (un peu comme BATTMAN/ATTSYNC) des Blocs mais en gardant la position modifiee des attributs ! C'est CE genre de programme qui serait la base depart d'un dev specifique a ton besoin !? Bye, lecrabe Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 3 juin 2014 Partager Posté(e) le 3 juin 2014 Hello En fait c une routine en Dotnet de Gilles : SYNCNEWATT__SynchronizeNewlyAddedAttribute http://forums.autodesk.com/t5/AutoCAD-Francais/Ajout-d-un-attribut-dans-un-bloc/td-p/4844069 Bye, lecrabe Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
Goldorak44 Posté(e) le 4 juin 2014 Partager Posté(e) le 4 juin 2014 Salut, voici deux ptits lisp rapide qui te permttent de changer le calque d'un attribut : - Le premier : tu saisi le nom du nouveau claque et ensuite tu sélectionne tes attributs. (defun c:layatt ( / newcal selatt objatt) (vl-load-com) (setq newcal (getstring "\nNom du nouveau calque : ")) (while (/= (setq selatt (nentsel "\nSélectionner l'attribut à changer de calque:")) nil) (setq objatt (vlax-ename->vla-object (car selatt))) (if (= (vla-get-ObjectName objatt) "AcDbAttribute") (progn (vla-put-layer objatt newcal) ) ) ) (princ) ) - Le deuxième : Tu sélectionne un attribut et ensuite tu applique le calque de ce dernier a tous les nouveaux attributs sélectionnés. (defun c:coplayatt ( / selattsource objattsource newcal selatt objatt) (vl-load-com) (setq selattsource (nentsel "\nSélectionner l'attribut source:")) (setq objattsource (vlax-ename->vla-object (car selattsource))) (setq newcal (vla-get-layer objattsource)) (while (/= (setq selatt (nentsel "\nSélectionner l'attribut à changer de calque:")) nil) (setq objatt (vlax-ename->vla-object (car selatt))) (if (= (vla-get-ObjectName objatt) "AcDbAttribute") (progn (vla-put-layer objatt newcal) ) ) ) (princ) ) Ces lisps sont une base rapide largement améliorable. PIRO CharlesDeveloppeur Revit, RV/RA - Formateur RevitPIRO CIE Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 4 juin 2014 Partager Posté(e) le 4 juin 2014 Salut, Si j'ai bien compris la demande (changer le calque d'un attribut dans certains blocs), voilà un petit LISP.Commande : LOLB75 (modifiable dans le code), l'utilisateur est invité à entrer le nom du calque, puis à sélectionner un attribut cible, puis à sélectionner les blocs à traiter.Attention, toute synchronisation après exécution du LISP restaurerait les propriétés définies dans les définitions d'attribut. (defun c:LOLB75 (/ getLayer getAttrib tryFindAttrib layer attrib tag blockName selSet i elst) (defun getLayer (/ str) (while (not (and (setq str (getstring "\nEntrez le nom du calque: ")) (tblsearch "layer" str) ) ) (prompt (strcat "\nle calque '" str "' n'existe pas.")) ) str ) (defun getAttrib (/ ent elst) (while (not (and (setq ent (car (nentsel "\nSélectionnez un attribut cible: "))) (= (cdr (assoc 0 (setq elst (entget ent)))) "ATTRIB") ) ) (prompt "\nL'objet sélectionné n'est pas un attribut.") ) elst ) (defun tryFindAttrib (ent tag / found ent elst) (while (and (setq ent (entnext ent)) (= (cdr (assoc 0 (setq elst (entget ent)))) "ATTRIB") (not (setq found (= tag (cdr (assoc 2 elst))))) ) ) (if found elst ) ) (setq layer (getLayer) attrib (getattrib) tag (cdr (assoc 2 attrib)) blockName (cdr (assoc 2 (entget (cdr (assoc 330 attrib))))) ) (if (setq selSet (ssget (list '(0 . "INSERT") (cons 2 blockName)))) (repeat (setq i (sslength selSet)) (if (setq elst (tryFindAttrib (ssname selSet (setq i (1- i))) tag)) (entmod (subst (cons 8 layer) (assoc 8 elst) elst)) ) ) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lolb75 Posté(e) le 4 juin 2014 Auteur Partager Posté(e) le 4 juin 2014 :D :D :D Merci a tous, Je savais que je pouvais compter sur vousJe vais tester tout ça et je reviens vers vous. Cordialement Lien vers le commentaire Partager sur d’autres sites More sharing options...
lolb75 Posté(e) le 4 juin 2014 Auteur Partager Posté(e) le 4 juin 2014 Bonjour Goldorak44Pour ton lsp layatt j'ai ce message quand je le charge :( ; erreur: type d'argument incorrect: numberp: nil Cordialement Salut, voici deux ptits lisp rapide qui te permttent de changer le calque d'un attribut : - Le premier : tu saisi le nom du nouveau claque et ensuite tu sélectionne tes attributs. (defun c:layatt ( / newcal selatt objatt) (vl-load-com) (setq newcal (getstring "\nNom du nouveau calque : ")) (while (/= (setq selatt (nentsel "\nSélectionner l'attribut à changer de calque:")) nil) (setq objatt (vlax-ename->vla-object (car selatt))) (if (= (vla-get-ObjectName objatt) "AcDbAttribute") (progn (vla-put-layer objatt newcal) ) ) ) (princ) ) - Le deuxième : Tu sélectionne un attribut et ensuite tu applique le calque de ce dernier a tous les nouveaux attributs sélectionnés. (defun c:coplayatt ( / selattsource objattsource newcal selatt objatt) (vl-load-com) (setq selattsource (nentsel "\nSélectionner l'attribut source:")) (setq objattsource (vlax-ename->vla-object (car selattsource))) (setq newcal (vla-get-layer objattsource)) (while (/= (setq selatt (nentsel "\nSélectionner l'attribut à changer de calque:")) nil) (setq objatt (vlax-ename->vla-object (car selatt))) (if (= (vla-get-ObjectName objatt) "AcDbAttribute") (progn (vla-put-layer objatt newcal) ) ) ) (princ) ) Ces lisps sont une base rapide largement améliorable. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Goldorak44 Posté(e) le 4 juin 2014 Partager Posté(e) le 4 juin 2014 Salut, a quel moment tu obtient ce message ? PS : je te joins le fichier lisp qui fonctionne chez moi !layatt.lsp PIRO CharlesDeveloppeur Revit, RV/RA - Formateur RevitPIRO CIE Lien vers le commentaire Partager sur d’autres sites More sharing options...
lolb75 Posté(e) le 4 juin 2014 Auteur Partager Posté(e) le 4 juin 2014 Désolé j'ai du faire une fausse manœuvre en copiant, il fonctionne très bien...Merci encore. Cordialement Lien vers le commentaire Partager sur d’autres sites More sharing options...
lolb75 Posté(e) le 10 juin 2014 Auteur Partager Posté(e) le 10 juin 2014 Bonjour Goldorak44, Tu vas dire que j'abuse... ;) mais Est-ce que se serais possible de pouvoir sélectionner par capture . Cordialement Lien vers le commentaire Partager sur d’autres sites More sharing options...
famaice Posté(e) le 12 août 2015 Partager Posté(e) le 12 août 2015 Bonjour à tous, J'ai lu ce post avec intérêt car je suis confronté à un problème récurrent et consommateur de temps. Je fais joujou avec des fichiers à multiples présentations (des cahiers d'isométries de tuyauterie) et qui ont été tripoté par une multitude de projeteur plus ou moins à l'aise avec Totocad. Résultat : Pour une même instance de bloc (le cartouche), j'ai souvent les mêmes attributs mais ayant propriétés forcées (tailles de textes, police, calque différent, orientations) différentes d'un onglet à l'autre (et souvent le tout en même temps...) Et pour recaler le tout dans un but d'harmonisation et de standardisation, cela peut prendre un temps... certains. <_< (J'ai pas le choix, c'est une question d'image de marque !). Question @ Gile : Est-ce que ton lisp synchronise tous les instances d'un bloc quelque soit son emplacement (espace objet et présentations multiples) ? A lire le code (en diagonale je l'avoue) j'ai l'impression qu'on ne peut le faire que dans un espace (objet) à la fois. L'Idée sous-jacente : ¨pouvoir synchroniser les propriétés d'attribut de toutes les instances d'un bloc du dessin (ceux en espace objet ainsi que ceux qui se trouverait en espace papier sur différentes présentations ) ? :) Bien à vous, ""Nous avons un avenir et il sera fait de nos rêves si nous avons le courage de bousculer les idées reçues" - S. HONDA Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 12 août 2015 Partager Posté(e) le 12 août 2015 Salut Tu peux faire une synchro (battman ou attsync).Mais si tu veux conserver certaines choses, avec SYN @+ 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...
famaice Posté(e) le 12 août 2015 Partager Posté(e) le 12 août 2015 Salut Tu peux faire une synchro (battman ou attsync).Mais si tu veux conserver certaines choses, avec SYN @+ Merci Patrick pour ta réactivité et Lili qui a amorcé sur cette "bonne pratique" ! Je viens de réaliser que je me suis paluché 45 folios en 8h au lieu de 5 secondes. :angry: Je hais les dessins multifolios.Je m'en vais rédiger une fiche "trucs et astuces" pour les collègues et vous fait un retour ASAP (comme disent les English !) Bien à vous, ""Nous avons un avenir et il sera fait de nos rêves si nous avons le courage de bousculer les idées reçues" - S. HONDA 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