C3D-0003 · Layer filter: PDF_* layers [PDF-FILTER] done
Creates a layer filter group "PDF Import" containing every layer whose name starts with PDF_. Replaces an existing group of the same name; verified by reading the filter tree back off the database.
C# payload
// Layer filter holding every PDF_* layer (the ones an Import PDF creates).
// LayerGroup stores explicit layer ids; Db.LayerFilters is a STRUCT so the edited tree must be
// assigned back or nothing persists (cookbook 16). Autodesk.AutoCAD.LayerManager is not in the
// host's imports - fully qualified. Replaces an existing group of the same name.
// Host owns Tx; host regens after commit.
const string GROUP = "PDF Import";
var lt = (LayerTable)Tx.GetObject(Db.LayerTableId, OpenMode.ForRead);
var keep = new List<ObjectId>();
var names = new List<string>();
foreach (ObjectId id in lt)
{
var l = (LayerTableRecord)Tx.GetObject(id, OpenMode.ForRead);
if (!l.Name.StartsWith("PDF_", System.StringComparison.OrdinalIgnoreCase)) continue;
keep.Add(id); names.Add(l.Name);
}
names.Sort();
Log(keep.Count + " PDF_* layers:");
foreach (var n in names) Log(" " + n);
if (keep.Count == 0) { Log("nothing to filter"); return; }
var tree = Db.LayerFilters;
var root = tree.Root;
Autodesk.AutoCAD.LayerManager.LayerFilter dup = null;
foreach (Autodesk.AutoCAD.LayerManager.LayerFilter f in root.NestedFilters)
if (f.Name == GROUP) { dup = f; break; }
if (dup != null) { root.NestedFilters.Remove(dup); Log("removed existing '" + GROUP + "'"); }
var grp = new Autodesk.AutoCAD.LayerManager.LayerGroup();
grp.Name = GROUP;
foreach (var id in keep) grp.LayerIds.Add(id);
root.NestedFilters.Add(grp);
Db.LayerFilters = tree;
int found = -1;
foreach (Autodesk.AutoCAD.LayerManager.LayerFilter f in Db.LayerFilters.Root.NestedFilters)
if (f.Name == GROUP) {
var g2 = f as Autodesk.AutoCAD.LayerManager.LayerGroup;
found = (g2 == null) ? -2 : g2.LayerIds.Count;
}
Log("filter '" + GROUP + "' read back: " + (found >= 0 ? found + " layer(s) (verified)" : "NOT FOUND"));
Result
Log
2 PDF_* layers: PDF_Geometry PDF_Solid Fills filter 'PDF Import' read back: 2 layer(s) (verified)
Notes
What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.
No notes yet.