Example of Teigha.LayerManager in .NET API

I'm trying to generate a code in .NET to create a layer filter and associate some layers that a have on current drawing on this layer filter. My problem is to identify the DBDictionary ID for call LayerMananger in current drawing.


That is my code:

[CommandMethod("CREATE_LAYER_FILTERS")]
public void CreateLayerFilters()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;using (Transaction tr = db.TransactionManager.StartTransaction())
{
// Acessa o Dictionary de Layer Filters
DBDictionary filterDict = tr.GetObject(db.id, OpenMode.ForWrite) as DBDictionary;

// Remove filtros antigos com mesmo nome (opcional)
if (filterDict.Contains("CIVIL"))
filterDict.Remove("CIVIL");

if (filterDict.Contains("ELMEC"))
filterDict.Remove("ELMEC");

// Cria o filtro CIVIL
Teigha.LayerManager.LayerFilter civilFilter = new Teigha.LayerManager.LayerFilter();
civilFilter.Name = "CIVIL";
civilFilter.FilterExpression = "Name ~ \"cv*\"";

// Cria o filtro ELMEC
Teigha.LayerManager.LayerFilter elmecFilter = new Teigha.LayerManager.LayerFilter();
elmecFilter.Name = "ELMEC";
elmecFilter.FilterExpression = "Name ~ \"em*\"";

// Adiciona filtros ao dictionary
filterDict.SetAt("CIVIL", civilFilter);
filterDict.SetAt("ELMEC", elmecFilter);

tr.AddNewlyCreatedDBObject(civilFilter, true);
tr.AddNewlyCreatedDBObject(elmecFilter, true);

tr.Commit();

ed.WriteMessage("\nLayer Filters criados com sucesso!");
}
}

Comments