C3D-0398 · READ-ONLY: layer state of the H2O wPROFILE drawing [C3D-H2OREAD2] done
Reads frozen layers, PDF/Aec counts, WATER layers (which stay unfrozen), V-NODE/V-CTRL, and the layer-0 top-level vs in-block split, to plan the same delivery cleanup with the water stuff left alone.
C# payload
Log("drawing: " + Db.Filename);
var bt = (BlockTable)Tx.GetObject(Db.BlockTableId, OpenMode.ForRead);
var lt = (LayerTable)Tx.GetObject(Db.LayerTableId, OpenMode.ForRead);
var top=new Dictionary<string,int>(); var blk=new Dictionary<string,int>();
foreach (ObjectId bid in bt){ var def=(BlockTableRecord)Tx.GetObject(bid,OpenMode.ForRead); var d=def.IsLayout?top:blk; foreach (ObjectId sid in def){ var e=Tx.GetObject(sid,OpenMode.ForRead) as Autodesk.AutoCAD.DatabaseServices.Entity; if(e==null)continue; if(!d.ContainsKey(e.Layer))d[e.Layer]=0; d[e.Layer]++; } }
var names=new List<string>(); foreach (ObjectId id in lt) names.Add(((LayerTableRecord)Tx.GetObject(id,OpenMode.ForRead)).Name); names.Sort(StringComparer.OrdinalIgnoreCase);
Log("total layers: " + names.Count);
Log("=== FROZEN layers ===");
foreach (var n in names){ var l=(LayerTableRecord)Tx.GetObject(lt[n],OpenMode.ForRead); if(!l.IsFrozen)continue; int t=top.ContainsKey(n)?top[n]:0,b=blk.ContainsKey(n)?blk[n]:0; Log(string.Format(" {0,-34} top={1,-4} inblk={2,-4} {3}", n, t, b, l.IsOff?"OFF":"")); }
Log("=== PDF* layers ===");
int pc=0; foreach (var n in names) if(n.StartsWith("PDF",StringComparison.OrdinalIgnoreCase)){ pc++; }
Log(" count: " + pc);
Log("=== Aec* layers ===");
foreach (var n in names) if(n.StartsWith("Aec",StringComparison.OrdinalIgnoreCase)){ int t=top.ContainsKey(n)?top[n]:0,b=blk.ContainsKey(n)?blk[n]:0; Log(" "+n+" top="+t+" inblk="+b); }
Log("=== WATER* layers (these STAY not frozen) ===");
foreach (var n in names) if(n.IndexOf("WATER",StringComparison.OrdinalIgnoreCase)>=0 || n.IndexOf("WATR",StringComparison.OrdinalIgnoreCase)>=0){ var l=(LayerTableRecord)Tx.GetObject(lt[n],OpenMode.ForRead); int t=top.ContainsKey(n)?top[n]:0,b=blk.ContainsKey(n)?blk[n]:0; Log(string.Format(" {0,-34} top={1,-4} inblk={2,-4} {3}", n, t, b, l.IsFrozen?"FRZ":"")); }
Log("=== V-NODE / V-CTRL layers ===");
foreach (var n in names) if(n.StartsWith("V-NODE",StringComparison.OrdinalIgnoreCase)||n.StartsWith("V-CTRL",StringComparison.OrdinalIgnoreCase)){ int t=top.ContainsKey(n)?top[n]:0,b=blk.ContainsKey(n)?blk[n]:0; if(t>0||b>0) Log(string.Format(" {0,-34} top={1,-4} inblk={2}", n, t, b)); }
Log(string.Format("=== layer 0: top={0} inblk={1} ===", top.ContainsKey("0")?top["0"]:0, blk.ContainsKey("0")?blk["0"]:0));
Result
Log
drawing: C:\Users\sanja\OneDrive\_SurveyDisco\260613 - 5030 E Lake Pkwy, Stockbridge, GA 30281, USA\ACAD-260612-C-Store As-Built 60 H2O wPROFILE.dwg total layers: 71 === FROZEN layers === PROPERTY_LINE top=3 inblk=0 PROPERTY_LINE_DASHED top=17 inblk=0 SEWER_EASEMENT 1 ORNAGE top=1 inblk=0 SEWER_EASEMENT 1 YELLOW top=1 inblk=0 SEWER_EASEMENT E2 top=0 inblk=1 SEWER_EASEMENT RED top=13 inblk=0 SEWER_LINE E2 top=6 inblk=0 SEWER_LINE_TEXT E2 top=13 inblk=0 SEWER_MANHOLE E2 top=6 inblk=0 SEWER_MANHOLE_TEXT E2 top=7 inblk=0 SS-0-FRAME top=64 inblk=4 SS-BOUNDARY top=2 inblk=0 WATER_LINE_PTS top=25 inblk=50 === PDF* layers === count: 7 === Aec* layers === AecObjExplode_22X17_Pspace top=1 inblk=0 AecObjExplode_22X17_Vport_1D77 top=1 inblk=0 === WATER* layers (these STAY not frozen) === V-NODE-WATR top=0 inblk=42 WATER_LINE top=2 inblk=0 WATER_LINE_PTS top=25 inblk=50 FRZ WATER_LINE_TEXT top=9 inblk=4 WATER_VALVE top=5 inblk=0 WATER_VAULT top=4 inblk=0 === V-NODE / V-CTRL layers === V-NODE-BNDY top=0 inblk=8 V-NODE-BORE top=0 inblk=1 V-NODE-POLE top=0 inblk=2 V-NODE-STRM top=0 inblk=14 V-NODE-TEXT top=0 inblk=110 V-NODE-TREE top=0 inblk=2 V-NODE-WATR top=0 inblk=42 === layer 0: top=23 inblk=195 ===
Notes
What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.
No notes yet.