.NET

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

Purging

434 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.
Daniel
*Expert Elite*
_gile
Posts: 2,106
Registered: ‎04-29-2006
Message 2 of 3 (434 Views)

Re: Purging

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

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"))
ids.Add(entry.Value);
}
db.Purge(ids);
foreach (ObjectId id in ids)
{
DBObject obj = (DBObject)tr.GetObject(id, OpenMode.ForWrite);
obj.Erase();
}
tr.Commit();
}{code} Edited by: _gile on Jan 19, 2010 1:28 PM
Gilles Chanteau
Active Contributor
dheselwood
Posts: 35
Registered: ‎11-17-2003
Message 3 of 3 (434 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.
Post to the Community

Have questions about Autodesk products? Ask the community.

New Post
Need installation help?

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