C3D-0394 · READ-ONLY: SEWER_* E1 layers on the ACAD C-Store [C3D-E1READ2] done
Lists every SEWER* layer with top-level and in-block counts, so the E1 layers can be mapped to their standard SEWER counterparts.
C# payload
// Find SEWER_*_E1 (or "SEWER_XX E1") layers and their standard SEWER_XX counterparts, with
// top-level vs in-block counts, so the E1 objects can be moved to the standard layers.
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]++; } }
Log("=== all SEWER* layers ===");
foreach (ObjectId id in lt){
var l=(LayerTableRecord)Tx.GetObject(id,OpenMode.ForRead);
if (l.Name.IndexOf("SEWER",StringComparison.OrdinalIgnoreCase)<0) continue;
int t=top.ContainsKey(l.Name)?top[l.Name]:0, b=blk.ContainsKey(l.Name)?blk[l.Name]:0;
Log(string.Format(" {0,-34} top={1,-4} inblk={2,-4} {3}{4}", l.Name, 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 === all SEWER* layers === SEWER_LINE top=1 inblk=11 SEWER_MANHOLE top=1 inblk=1 SEWER_MANHOLE_TEXT top=7 inblk=0 SEWER_EASEMENT top=1 inblk=0 SEWER_LINE_TEXT E1 top=0 inblk=2 SEWER_LINE E1 top=6 inblk=0 SEWER_MANHOLE E1 top=5 inblk=5 SEWER_MANHOLE E2 top=0 inblk=6
Notes
What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.
No notes yet.