coyotte Posté(e) le 25 juin 2019 Posté(e) le 25 juin 2019 Bonjour, J'ai dans mon plan un certain nombre de blocks dynamics avec des attributs. J'aimerais en .Net supprimer un ou plusieurs attributs de ces blocks dynamics. En vous remerciant par avance des vos réponses. Cordialement. http://www.carpetdiem.netPlugins pour AutoCAD
(gile) Posté(e) le 25 juin 2019 Posté(e) le 25 juin 2019 Salut, Il faudrait que tu sois plus clair dans ta demande. Parles-tu de définitions de bloc (BlockTableRecord) et de définitions d'attributs (AttributeDefinition) ou de références de block (blockReference) et de références d'attributs (AttributeReference) ?Dans le premier cas, il faudra "synchroniser" les attributs pour que les modifications soient reflétées dans les références insérées.Dans le second cas, les modifications faites aux références uniquement seront annulées en cas de synchronisation des attributs (ATTSYNC). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
coyotte Posté(e) le 26 juin 2019 Auteur Posté(e) le 26 juin 2019 Bonjour Gile, Il s'agit de définitions de bloc (BlockTableRecord) et de définitions d'attributs (AttributeDefinition). Ensuite via la commande ATTSYNC, je mettrais à jour les références de blocs. ;) http://www.carpetdiem.netPlugins pour AutoCAD
(gile) Posté(e) le 26 juin 2019 Posté(e) le 26 juin 2019 Alors, il suffit d'aller dans la définition du bloc dynamique (pas d'un bloc anonyme) de rechercher les définitions d'attributs selon test critères et de les effacer. private static void EraseAttrib(Database db, string blockName, string tag) { using (var tr = db.TransactionManager.StartTransaction()) { var bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead); if (!bt.Has(blockName)) return; var btr = (BlockTableRecord)tr.GetObject(bt[blockName], OpenMode.ForRead); foreach (ObjectId id in btr) { if (id.ObjectClass == RXObject.GetClass(typeof(AttributeDefinition))) { var attDef = (AttributeDefinition)tr.GetObject(id, OpenMode.ForRead); if (attDef.Tag == tag) { tr.GetObject(id, OpenMode.ForWrite); attDef.Erase(); } } } tr.Commit(); } } Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
coyotte Posté(e) le 27 juin 2019 Auteur Posté(e) le 27 juin 2019 Merci Gile. Je pensais que le fait que ce soit des blocs dynamics la méthode serait différente. http://www.carpetdiem.netPlugins 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