C3D-0436 · Rename layer filter to NO C (everything but C-*) done
Remove the NOT C-* filter, add filter named NO C matching all layers except C-*. Report shown vs hidden counts.
C# payload
var fc = Db.LayerFilters;
var root = fc.Root;
// drop the old confusingly-named one
var toRemove = new System.Collections.Generic.List<Autodesk.AutoCAD.LayerManager.LayerFilter>();
foreach (Autodesk.AutoCAD.LayerManager.LayerFilter f in root.NestedFilters)
if (f.Name == "NOT C-*" || f.Name == "NO C") toRemove.Add(f);
foreach (var f in toRemove) root.NestedFilters.Remove(f);
var lf = new Autodesk.AutoCAD.LayerManager.LayerFilter();
lf.Name = "NO C";
lf.FilterExpression = "NAME==\"*\" AND NAME!=\"C-*\"";
root.NestedFilters.Add(lf);
Db.LayerFilters = fc;
// list what passes
var lt = (LayerTable)Tx.GetObject(Db.LayerTableId, OpenMode.ForRead);
int pass=0, hidden=0;
foreach (ObjectId id in lt) {
var lr = (LayerTableRecord)Tx.GetObject(id, OpenMode.ForRead);
if (lr.Name.StartsWith("C-", StringComparison.OrdinalIgnoreCase)) { hidden++; continue; }
pass++;
}
Log("filter 'NO C' set. layers shown=" + pass + " layers hidden(C-*)=" + hidden);
Ed.Regen();
Result
Log
filter 'NO C' set. layers shown=72 layers hidden(C-*)=182
Notes
What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.
No notes yet.