PATRICE69 Posté(e) le 24 septembre Posté(e) le 24 septembre Bonjour, Je parcours quelques blocs insérés sur un fichier. Ces blocs ont des attributs, certains de ces attributs, je voudrai les supprimer (pas les mettre à vide). Comment faire en Lisp ? Merci, Patrice
(gile) Posté(e) le 24 septembre Posté(e) le 24 septembre Salut, S'agit-il de supprimer les définitions d'attribut dans les définitions de bloc et / ou de supprimer les références d'attribut dans les (ou des) références de bloc insérées ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
PATRICE69 Posté(e) le 24 septembre Auteur Posté(e) le 24 septembre Je veux supprimer les références d'attribut dans les blocs insérés sur le dessin. Je ne touche pas à la définition du bloc.
lecrabe Posté(e) le 24 septembre Posté(e) le 24 septembre Hello @PATRICE69 SVP tu testes les 2 Vieux Lisp/VLisp joints (NON Testes) Et tu nous diras ... Je crois qu il faudra faire un ATTSYNC apres !? Merci, Bye, lecrabe PS: Attention, c du VLisp donc SVP ajouter au debut une commande (vl-load-com) - Merci ;;; ;;; http://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/howto-delete-all-attributes-from-blocks/td-p/850688 ;;; ;;; CADDXIMATION PROVIDES THIS PROGRAM SOFTWARE "AS IS" AND WITH ALL ;;; FAULTS. CADDXIMATION SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY ;;; OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. CADDXIMATION ;;; SOFTWARE DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL ;;; BE UNINTERRUPTED OR ERROR FREE. ;;; ;;; 4:25 PM 5/28/2003 by Luis Esquivel ;;; http://www.draftteam.com ;;; ;;; Delete attributes ;;; (defun C:DEL-ATT (/ ent att) (vl-load-com) (and (setq ent (car (nEntSel "\nSelect attribute to delete: "))) (setq att (vlax-ename->vla-object ent)) (eq (vla-get-objectName att) "AcDbAttribute") (vla-delete att)) (princ)) ;;; delete all the attributes (defun C:DEL-ALL-ATTS () (vlax-for blk (vla-get-blocks (vla-get-activeDocument (vlax-get-acad-object))) (vlax-for item blk (if (and (eq (vla-get-objectName item) "AcDbBlockReference") (eq (vla-get-hasattributes item) :vlax-true)) (mapcar 'vla-delete (vlax-safeArray->list (vlax-variant-value (vla-getattributes item))))))) (princ)) (princ) Autodesk Expert Elite Team
(gile) Posté(e) le 24 septembre Posté(e) le 24 septembre Il y a 15 heures, PATRICE69 a dit : Je veux supprimer les références d'attribut dans les blocs insérés sur le dessin. Je ne touche pas à la définition du bloc. Attention, si on supprime les références d'attributs de blocs insérés sans toucher à la définition de bloc, un ATTSYNC recréera ces attributs avec leurs valeurs par défaut. En pur AutoLISP (les routines proposées par @lecrabe utilisent "Visual LISP") on accède aux références d'attribut d'une référence de bloc avec la fonction entnext, dans une boucle while avec comme condition d'arrêt le type d'entité renvoyé par entnext. Un exemple de routine qui récupère toutes les références d'attribut d'une référence de bloc. Elle revoie une liste de noms d'entité (ENAME). ;;; GetAttribs ;;; Renvoie la liste de toutes les référence d'attribut de la référence de bloc. ;;; ;;; Argument ;;; ename : nom d'entité de la référence de bloc (defun getAttribs (ename / lst) (while (and (setq ename (entnext ename)) (= (cdr (assoc 0 (entget ename))) "ATTRIB") ) (setq lst (cons ename lst)) ) (reverse lst) ) La même sous forme récursive : (defun getAttribs (ename) (if (and (setq ename (entnext ename)) (= (cdr (assoc 0 (entget ename))) "ATTRIB") ) (cons ename (getAttribs ename)) ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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