← Inbox

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.

Script file
C3D-0384.cs
Target
260612-C-Store As-Built 60 H2O.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\260612-C-Store As-Built 60 H2O.dwg
Message
Executed C3D-0384 (0 entities touched).
Entities
Duration
1849 ms
Civil 3D
25.0.0.0

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.