Active Contributor
Posts: 35
Registered: ‎11-17-2003
Message 1 of 3 (433 Views)


433 Views, 2 Replies
01-19-2010 03:56 AM
Need a bit of help with purging materials from a drawing. I have managed to purge all items within a named object table like layers and blocks but those in the Named Object dictionary table are confusing me a little.

Do I need to itterate through the named objects dictionarys to get the AEC_MATERIAL_DEFS dictionary then purge the contents from there?

Thanks for any help.
*Expert Elite*
Posts: 2,082
Registered: ‎04-29-2006
Message 2 of 3 (433 Views)

Re: Purging

01-19-2010 04:27 AM in reply to: dheselwood

This will purge all non referenced materials

{code}ObjectIdCollection ids = new ObjectIdCollection();
using (Transaction tr = db.TransactionManager.StartTransaction())
DBDictionary matDict = (DBDictionary)tr.GetObject(db.MaterialDictionaryId, OpenMode.ForRead, false);
foreach (DBDictionaryEntry entry in matDict)
string key = entry.Key;
if ((key != "ByBlock") && (key != "ByLayer") && (key != "Global"))
foreach (ObjectId id in ids)
DBObject obj = (DBObject)tr.GetObject(id, OpenMode.ForWrite);
}{code} Edited by: _gile on Jan 19, 2010 1:28 PM
Gilles Chanteau
Active Contributor
Posts: 35
Registered: ‎11-17-2003
Message 3 of 3 (433 Views)

Re: Purging

01-19-2010 04:33 AM in reply to: dheselwood
I see, you can directly access the materialdictionaryID - I thought it would need itterating through each named dictionary to find the materials dictionary.

Thanks Gile.
Are you familiar with the Autodesk Expert Elites? The Expert Elite program is made up of customers that help other customers by sharing knowledge and exemplifying an engaging style of collaboration. To learn more, please visit our Expert Elite website.
Need installation help?

Start with some of our most frequented solutions or visit the Installation and Licensing Forum to get help installing your software.