Aller au contenu

Suppression d\'attribut


AuT

Messages recommandés

Bonjour tout le monde,

 

Je suis à la recherche d'un Lisp (ou autre) qui supprime les attributs d'un block sans le décomposer.

J'ai plusieurs plans qui comportent chacun une centaine de bloc au minimum.

Pour l'instant je fait : Bedit > selection des attributs > effacer > enregistrer.

Si quelqu'un connait une routine qui fait ça tout seul ça serait top.

 

D'avance merci

 

++

Lien vers le commentaire
Partager sur d’autres sites

 

Hello

 

Sans passer par un Lisp tu peux faire la manipulation suivante :

 

1) Sur le calque ZERO, insérer ton bloc qq part avec Echelle=1 et Rotation=0

 

2) Le decomposer/exploser puis effacer tous les attributs inutiles ...

 

3) Refaire une commande BLOC en selectionnant le graphique restant

Tu redonnes le MEME nom avec le MEME point d'Insertion et tu confirmes ...

 

4) Commande au clavier : BATTMAN

Tu selectionnes le bon BLOC dans l'ascenseur puis SYNC puis OK

 

Le Decapode

 

PS: Je suppose bien sur que les routines Express/Bonus sont installees !

 

 

 

 

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Un truc comme ça ?

(defun c:delatt	()
 (vl-load-com)

 ;; Supprimer les attributs dans toutes les définitions de bloc
 (vlax-for blk	(vla-get-Blocks
	  (vla-get-ActiveDocument (vlax-get-acad-object))
	)
   (if
     (and
(= (vla-get-isXref blk) :vlax-false)
(= (vla-get-isLayout blk) :vlax-false)
     )
      (vlax-for obj blk
 (if (= (vla-get-ObjectName obj) "AcDbAttributeDefinition")
   (vla-delete obj)
 )
      )
   )
 )

 ;; Supprimer les attributs dans toutes les références de bloc insérées
 (if (ssget "_X" '((0 . "INSERT") (66 . 1)))
   (progn
     (vlax-for	blk
	(setq
	  ss (vla-get-ActiveSelectionSet
	       (vla-get-ActiveDocument (vlax-get-acad-object))
	     )
	)
(mapcar 'vla-delete (vlax-invoke blk 'GetAttributes))
     )
     (vla-delete ss)
   )
 )
 (princ)
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

 

Hello

 

Le gros interet de BATTMAN c'est qu'il permet de re-synchroniser toutes les insertions de blocs avec la nouvelle definition du bloc !

 

On peut donc ajouter et/ou supprimer des attributs ...

 

Les attributs supprimes sont supprimes partout !

 

Les attributs ajoutes sont ajoutes partout (vide ou avec valeur par defaut)

 

Le Decapode

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Alors là !!!!

 

Que dire à part: MERCI! :)

 

C'est niquel...bien joué Gile!

Et merci à toi aussi Lecrabe pour ton tuyau...

 

En vous souhaitant une bonne journée, maintenant la mienne va être plus relaxe! <acronym class=dict title=

 

++

Lien vers le commentaire
Partager sur d’autres sites

Salut

 

(gile) est le plus rapide ;)

 

Voici quand même une solution qui supprime l'attribut sélectionné

 

(setq ent (nentsel)) ; Sélection de l'attribut
(setq ent (vlax-ename->vla-object (car ent))) ; Transformer la sélection en objet vl
(setq bl  (vla-objectidtoobject (vla-get-database ent)(vla-get-ownerid ent))) ; Recherher le pére
(setq pos 1)
(foreach att (vlax-invoke bl 'getattributes) ; rechercher la position de l'attribut
 (and (equal att ent)(setq ok pos))
 (setq pos (1+ pos))
)
(setq blo (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) (vla-get-name bl))) ; bloc de réference dans la table des blocks
(setq pos 1)
(vlax-for ent blo ; parcourir les entités qui compose le bloc
 (if (eq (vla-get-objectname ent) "AcDbAttributeDefinition") ; c'est un attribut
   (progn
     (if (eq pos ok) ; c'est la même position que celui sélectionné
(vla-delete ent) ; je l'efface
     )
     (setq pos (1+ pos))
   )
 )
)
(vl-cmdf "_.attsync" "_name" (vla-get-name bl)) ; je synchronise les attributs

 

@+

Les Lisps de Patrick

Le 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

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité