Ludo Posté(e) le 19 janvier 2004 Posté(e) le 19 janvier 2004 je voudrais éditer les attibuts (qui portes un nom identique) de plusieurs blocs, est ce possible ? merci d'avance
Invité Patrick Posté(e) le 19 janvier 2004 Posté(e) le 19 janvier 2004 Oui, regarde la commande -ATTEDIT (n'oublie pas le tiret devant la commande)
Invité Patrick Posté(e) le 19 janvier 2004 Posté(e) le 19 janvier 2004 L'autre solution serait de passer par la programmation LISP ou VBA.
fabcad Posté(e) le 19 janvier 2004 Posté(e) le 19 janvier 2004 Bonjour Ludo, voici les lignes de lon programme d'edition globale d'attributs :ecris dans le bloc notes et enregistre-le sous EDIT-ATT.LSP tu pourras le charger par un glisser-déposer dans autocad et lancer la fonctionen tapant sur la ligne de commande edit-att. Fabcad ;;; fonction d'edition globale d'attributs sur plusieurs attributs;;; issue de la fonction AutoCAD ATTEDIT;;; Créee le 18-05-1999 ;----------------------------------------------------------------------(defun sty-att () (setq nom-b (getstring "\n Nom du bloc <*>: "))(if (= nom-b nil) (setq nom-b "*")) (setq ETIQ (getstring "\n Spécification Etiquette de l'attribut : ")) (setq val-at (getstring "\n Spécification Valeur de l'attribut <*>: "))(if (= val-at nil) (setq val-at "*")) (setq p1 (getpoint "\n Sélection par Fenêtre - premier point : "))(setq p2 (getcorner p1 "\n Second point : ")) (setq sty (getstring "\n Nouveau Style des attributs : "))(if (= sty nil) (setq sty "")) (command "-ATTEDIT" "OUI" nom-b ETIQ val-at "fe" p1 p2) (while (/= (getvar "cmdnames") "") (command "Style" sty "") ) (princ) );fin defun htr-att;----------------------------------------------------------------------(defun htr-att () (setq nom-b (getstring "\n Nom du bloc <*>: "))(if (= nom-b nil) (setq nom-b "*")) (setq ETIQ (getstring "\n Spécification Etiquette de l'attribut : ")) (setq val-at (getstring "\n Spécification Valeur de l'attribut <*>: "))(if (= val-at nil) (setq val-at "*")) (setq p1 (getpoint "\n Sélection par Fenêtre - premier point : "))(setq p2 (getcorner p1 "\n Second point : ")) (setq htr (getstring "\n Nouvelle hauteur des attributs : "))(if (= htr nil) (setq htr "")) (command "-ATTEDIT" "OUI" nom-b ETIQ val-at "fe" p1 p2) (while (/= (getvar "cmdnames") "") (command "Hauteur" htr "") ) (princ) );fin defun htr-att;----------------------------------------------------------------------(defun ang-att () (setq nom-b (getstring "\n Nom du bloc <*>: "))(if (= nom-b nil) (setq nom-b "*")) (setq ETIQ (getstring "\n Spécification Etiquette de l'attribut : ")) (setq val-at (getstring "\n Spécification Valeur de l'attribut <*>: "))(if (= val-at nil) (setq val-at "*")) (setq p1 (getpoint "\n Sélection par Fenêtre premier point : "))(setq p2 (getcorner p1 "\n Second point : ")) (setq ang (getstring "\n Angle pour ces attributs : "))(if (= ang nil) (setq angle "")) (command "-ATTEDIT" "OUI" nom-b ETIQ val-at "fe" p1 p2) (while (/= (getvar "cmdnames") "") (command "Angle" ang "") ) (princ) );fin defun ang-att;----------------------------------------------------------------------(defun col-att () (setq nom-b (getstring "\n Nom du bloc <*>: "))(if (= nom-b nil) (setq nom-b "*")) (setq ETIQ (getstring "\n Spécification Etiquette de l'attribut : ")) (setq val-at (getstring "\n Spécification Valeur de l'attribut <*>: "))(if (= val-at nil) (setq val-at "*")) (setq p1 (getpoint "\n Sélection par Fenêtre premier point : "))(setq p2 (getcorner p1 "\n Second point : ")) (setq coul (getstring "\n Couleur pour ces attributs : "))(if (= coul nil) (setq coul "")) (command "-ATTEDIT" "OUI" nom-b ETIQ val-at "fe" p1 p2) (while (/= (getvar "cmdnames") "") (command "CO" coul "") ) (princ) );fin defun;----------------------------------------------------------------------(defun cal-att () (setq nom-b (getstring "\n Nom du bloc <*>: "))(if (= nom-b nil) (setq nom-b "*")) (setq ETIQ (getstring "\n Spécification Etiquette de l'attribut : ")) (setq val-at (getstring "\n Spécification Valeur de l'attribut <*>: "))(if (= val-at nil) (setq val-at "*")) (setq p1 (getpoint "\n Sélection par Fenêtre premier point : "))(setq p2 (getcorner p1 "\n Second point : ")) (setq calq (getstring "\n Calque pour ces attributs - [0] : "))(if (= calq nil) (setq calq "0")) (command "-ATTEDIT" "OUI" nom-b ETIQ val-at "fe" p1 p2) (while (/= (getvar "cmdnames") "") (command "CA" calq "") ) (princ) );fin defun;----------------------------------------------------------------------(defun Val-att () (setq nom-b (getstring "\n Nom du bloc <*>: "))(if (= nom-b nil) (setq nom-b "*")) (setq ETIQ (getstring "\n Spécification Etiquette de l'attribut : ")) (setq val-at (getstring "\n Spécification Valeur de l'attribut <*>: "))(if (= val-at nil) (setq val-at "*")) (setq p1 (getpoint "\n Sélection par Fenêtre - premier point : "))(setq p2 (getcorner p1 "\n Second point : ")) (setq val (getstring "\n Nouvelle Valeur des attributs : "))(if (= val nil) (setq val ".")) (command "-ATTEDIT" "OUI" nom-b ETIQ val-at "fe" p1 p2) (while (/= (getvar "cmdnames") "") (command "Valeur" "Remplacer" val "") ) (princ) );fin defun Val-att;----------------------------------------------------------------------(defun c:edit-att ( / chx cnt)(setq cnt T)(while cnt(initget "Hauteur Angle Style COuleur CAlque Valeur")(setq chx (getkword "\n Option [Hauteur/Angle/Style/COuleur/CAlque/Valeur] : ")) (cond ((= chx "Angle") (ang-att)) ((= chx "COuleur") (col-att)) ((= chx "CAlque") (cal-att)) ((= chx "Hauteur") (htr-att)) ((= chx "Style") (sty-att)) ((= chx "Valeur") (Val-att)) (T (setq cnt nil)) );fin cond);fin while(prompt "\n---COPYRIGHT 05/99 par Fabrice DEMIEL---")(prin1));fin defun edit-att
Ludo Posté(e) le 19 janvier 2004 Auteur Posté(e) le 19 janvier 2004 Merci pour votre rapidité et votre éfficacité, que de tps gagner et de clarté sur mes plans. Pour ceux qui comme moi viennent de découvrir ces solutions, je vous conseille d'utiliser le lisp EDIT-ATT, il est simple, complet et permet d'envisager de multitudes d'applications pour les attributs. Bonne journée
Patrick_35 Posté(e) le 19 janvier 2004 Posté(e) le 19 janvier 2004 Voilà un lisp intéressant qui permet de faire un -attedit groupé. Bonne idée pour des fainéants (enfin pas trop) comme moi. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
fabcad Posté(e) le 19 janvier 2004 Posté(e) le 19 janvier 2004 Pas pour les faineants mais autodesk croit que nous gerons un tout tout tout petit nombre de blocs avec attributs, il s'avere pour nous que nous gérons plus de 2000 bornes d'incendie alors lorsqu'il faut modifier les propriétés des attributs de ces blocs avec leur fonction je ne te fais pas un dessin.C'est pourquoi j'ai créé dans ma boite a outils cette fonction. Pour ma part j'ai créé beaucoup de fonctions traitants les chaines de caractères (textes sur autocad) scinder,reunir, ajout de texte a droite ou a gauche, une fonction dictionnaire pour choisir un mot dans une liste et l'ecrire dans autocad, ecrire sur une polyligne (je fais de la carto et bien sur les routes ne sont pas droites etc... Voila et Bonne Utilisation... Fabrice
Patrick_35 Posté(e) le 20 janvier 2004 Posté(e) le 20 janvier 2004 Pour les fainéants, c'est juste pour une image, plus on fait d'automatisme, moins de temps est passé sur les dessins.Il est plaisant de voir que d'autres personnes donnent leurs sources et en plus c’est en français.Pour ma part, je fais aussi pas mal de développement surtout pour de l'elec en bâtiment et aussi des fonctions pratique comme une recopie des attributs, remplacer une sélection de blocs par un autre, une incrémentation de texte avec un tri dans l’espace, etc...Il reste encore des choses à faire pour mon métier, comme par exemple récupérer sur le dessin l'implantation de détecteurs incendie et générer ensuite le synoptique et la même chose pour des prises informatique ou encore les schémas d'armoire, mais c'est le temps qui manque. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Ludo Posté(e) le 23 janvier 2004 Auteur Posté(e) le 23 janvier 2004 Bonjour à tous, je reviens sur le superbe programme edit-att de fabcad, juste une chose qui me pose problème pour certaines application.Les blocs ont des attributs dont la valeur par défaut est nulle, justement lorsqu'un attribut a une valeur nulle, le programme ne prend pas la modif. La fonction -attedit le fait bien mais cette fonction ne permet pas de se limiter aux bloc désirés (ce que fait le edit-att par la sélection fenêtre) Y a t-il un moyen de modifier mes attributs valeur nulle ? Bon week-end.
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