C3D-0439 · Add ONLY C layer filter (C-*) done
Add layer filter named ONLY C matching only C-* layers; verify no non-C layers pass.
C# payload
var fc = Db.LayerFilters;
var root = fc.Root;
var toRemove = new System.Collections.Generic.List<Autodesk.AutoCAD.LayerManager.LayerFilter>();
foreach (Autodesk.AutoCAD.LayerManager.LayerFilter f in root.NestedFilters)
if (f.Name == "ONLY C") toRemove.Add(f);
foreach (var f in toRemove) root.NestedFilters.Remove(f);
var lf = new Autodesk.AutoCAD.LayerManager.LayerFilter();
lf.Name = "ONLY C";
lf.FilterExpression = "NAME==\"C-*\"";
root.NestedFilters.Add(lf);
Db.LayerFilters = fc;
var lt = (LayerTable)Tx.GetObject(Db.LayerTableId, OpenMode.ForRead);
int shown=0, nonC=0;
foreach (ObjectId id in lt) {
var lr=(LayerTableRecord)Tx.GetObject(id,OpenMode.ForRead);
if (lf.Filter(lr)) { shown++; if(!lr.Name.StartsWith("C-")) nonC++; }
}
Log("expr="+lf.FilterExpression+" shown="+shown+" nonC-inFilter="+nonC);
Ed.Regen();
Result
Log
expr=NAME=="C-*" shown=182 nonC-inFilter=0
Notes
What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.
No notes yet.