.NET
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Reply
Message 1 of 3
dheselwood
686 Views, 2 Replies

Purging

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
2 REPLIES 2
Message 2 of 3
_gile
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
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

Message 3 of 3
dheselwood
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.

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk DevCon in Munich May 28-29th


Autodesk Design & Make Report

”Boost