← Inbox

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.

Script file
C3D-0394.cs
Target
ACAD-260612-C-Store Sewer As-Built 60 EASEMENT PLAT LEGAL.dwg · model space
Author
claude
Approved
yes · auto-auth
Timeout
120s

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

Status
success
Drawing file
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
Message
Executed C3D-0394 (0 entities touched).
Entities
Duration
550 ms
Civil 3D
25.0.0.0

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.