C3D-0396 · READ-ONLY: E2 and water-valve layers [C3D-E2WVREAD] done
Lists layers whose name contains E2 or WATER/VALVE/WV with top-level and in-block counts, to identify exactly what 'kill E2 and water valve' targets.
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]++; } }
foreach (ObjectId id in lt){
var l=(LayerTableRecord)Tx.GetObject(id,OpenMode.ForRead);
string n=l.Name;
if (n.IndexOf("E2",StringComparison.Ordinal)<0 && n.IndexOf("WATER",StringComparison.OrdinalIgnoreCase)<0 && n.IndexOf("VALVE",StringComparison.OrdinalIgnoreCase)<0 && n.IndexOf("WV",StringComparison.OrdinalIgnoreCase)<0) 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}{4}", n, t, b, l.IsFrozen?"FRZ ":"", l.IsOff?"OFF":""));
}
Result
Log
drawing: C:\Users\sanja\OneDrive\_SurveyDisco\260613 - 5030 E Lake Pkwy, Stockbridge, GA 30281, USA\ACAD-260612-C-Store Sewer As-Built 60 EASEMENT PLAT LEGAL.dwg FIRE_HYDRANT_VALVE top=0 inblk=3 WATER_VALVE top=0 inblk=5 FRZ SEWER_MANHOLE E2 top=0 inblk=6 FRZ
Notes
What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.
No notes yet.