C3D-0384 · READ-ONLY: SEWER_*_E1 layers and their standard SEWER counterparts [C3D-E1READ] done
Lists every SEWER* layer with top-level and in-block entity counts and frozen/off state, so the E1 objects can be moved to the matching standard SEWER layers.
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\260612-C-Store As-Built 60 H2O.dwg === all SEWER* layers === SS-SEWER LINE top=0 inblk=0 SEWER_LINE top=2 inblk=0 SEWER_EASEMENT_TEXT top=12 inblk=0 SEWER_END_OF_LINE top=0 inblk=0 FRZ SEWER_END_OF_LINE_TEXT top=0 inblk=0 FRZ SEWER_FORCE_MAIN top=0 inblk=0 SEWER_FORCE_MAIN_TEXT top=0 inblk=0 SEWER_FORCE_MAIN_EXISTING top=0 inblk=0 SEWER_FORCE_MAIN_EXISTING_TEXT top=0 inblk=0 FRZ SEWER_LINE_TEXT top=0 inblk=1 SEWER_LINE_EXISTING top=0 inblk=0 SEWER_LINE_EXISTING_TEXT top=0 inblk=0 SEWER_MANHOLE top=1 inblk=0 SEWER_MANHOLE_TEXT top=7 inblk=0 SEWER_MANHOLE_EXISTING top=0 inblk=0 SEWER_MANHOLE_EXISTING_TEXT top=0 inblk=0 SEWER_TAP top=0 inblk=0 SEWER_TAP_TEXT top=0 inblk=0 SEWER_EASEMENT RED top=13 inblk=0 FRZ SEWER_EASEMENT_20 top=0 inblk=0 FRZ OFF SEWER_EASEMENT top=1 inblk=0 SEWER_MANHOLE_TEXT E1 top=8 inblk=2 SEWER_LINE_TEXT E1 top=12 inblk=0 SEWER_LINE E1 top=6 inblk=0 SEWER_MANHOLE E1 top=5 inblk=0 SEWER_LINE E2 top=6 inblk=0 FRZ SEWER_LINE_TEXT E2 top=13 inblk=0 FRZ SEWER_MANHOLE E2 top=6 inblk=0 FRZ SEWER_MANHOLE_TEXT E2 top=7 inblk=0 FRZ SEWER_EASEMENT E2 top=1 inblk=0 FRZ SEWER_EASEMENT 1 ORNAGE top=1 inblk=0 FRZ SEWER_EASEMENT 1 YELLOW top=1 inblk=0 FRZ
Notes
What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.
No notes yet.