← Inbox

C3D-0412 · Erase+delete the 7 layers (layer 0 now unfrozen) [C3D-KILL4] error

Rerun of the erase+delete now that layer 0 is unfrozen. Sets Clayer to 0, thaws targets, erases all content on WATER_LINE_PTS, SS-0-FRAME, the 4 SEWER_EASEMENT layers and PDF2_E IPF-SET, deletes them.

Script file
C3D-0412.cs
Target
ACAD-260612-C-Store As-Built 60 H2O wPROFILE.dwg · model space
Author
claude
Approved
yes · auto-auth
Timeout
180s

C# payload

// Erase all content on the target layers and delete them. Clayer -> 0 as the FIRST action
// (you cannot freeze/modify the current layer; that was the eInvalidLayer).
var kill = new List<string>{
    "WATER_LINE_PTS", "SS-0-FRAME",
    "SEWER_EASEMENT 1 ORNAGE", "SEWER_EASEMENT 1 YELLOW",
    "SEWER_EASEMENT E2", "SEWER_EASEMENT RED"
};
Log("drawing: " + Db.Filename);
var bt = (BlockTable)Tx.GetObject(Db.BlockTableId, OpenMode.ForRead);
var lt = (LayerTable)Tx.GetObject(Db.LayerTableId, OpenMode.ForWrite);
foreach (ObjectId id in lt){ var l=(LayerTableRecord)Tx.GetObject(id,OpenMode.ForRead); if(l.Name.StartsWith("PDF",StringComparison.OrdinalIgnoreCase) && !kill.Contains(l.Name)) kill.Add(l.Name); }
var kset = new HashSet<string>(kill, StringComparer.OrdinalIgnoreCase);

// FIRST: move off the current layer if it is a target, and make 0 current+usable
if (!lt.Has("0")) { Log("no layer 0?!"); return; }
Db.Clayer = lt["0"];
{ var z=(LayerTableRecord)Tx.GetObject(lt["0"],OpenMode.ForWrite); z.IsFrozen=false; z.IsOff=false; z.IsLocked=false; }
Log("current layer -> 0");

// thaw/unlock targets (now none of them is current)
foreach (var n in kill) if (lt.Has(n)){ try { var l=(LayerTableRecord)Tx.GetObject(lt[n],OpenMode.ForWrite); l.IsFrozen=false; l.IsOff=false; l.IsLocked=false; } catch (System.Exception ex){ Log("  thaw " + n + ": " + ex.Message); } }

int erased=0;
foreach (ObjectId bid in bt){
    var def=(BlockTableRecord)Tx.GetObject(bid,OpenMode.ForRead);
    var ids=new List<ObjectId>(); foreach (ObjectId sid in def) ids.Add(sid);
    foreach (var sid in ids){
        var probe=Tx.GetObject(sid,OpenMode.ForRead) as Autodesk.AutoCAD.DatabaseServices.Entity;
        if (probe==null || probe.IsErased || !kset.Contains(probe.Layer)) continue;
        var e=(Autodesk.AutoCAD.DatabaseServices.Entity)Tx.GetObject(sid,OpenMode.ForWrite);
        e.Erase(); erased++;
    }
}
Log("erased " + erased + " entities");

int deleted=0, kept=0;
foreach (var n in kill){
    if(!lt.Has(n)) continue;
    int still=0; foreach (ObjectId bid in bt){ var def=(BlockTableRecord)Tx.GetObject(bid,OpenMode.ForRead); foreach (ObjectId sid in def){ var e=Tx.GetObject(sid,OpenMode.ForRead) as Autodesk.AutoCAD.DatabaseServices.Entity; if(e!=null && !e.IsErased && e.Layer.Equals(n,StringComparison.OrdinalIgnoreCase)) still++; } }
    if (still>0){ kept++; Log("  KEPT " + n + " (" + still + ")"); continue; }
    try { ((LayerTableRecord)Tx.GetObject(lt[n],OpenMode.ForWrite)).Erase(); deleted++; Log("  deleted " + n); }
    catch (System.Exception ex){ kept++; Log("  keep " + n + ": " + ex.Message); }
}
Log(string.Format("deleted {0}, kept {1}", deleted, kept));
Ed.Regen();

Result

Status
error
Drawing file
C:\Users\sanja\OneDrive\_SurveyDisco\260613 - 5030 E Lake Pkwy, Stockbridge, GA 30281, USA\ACAD-260612-C-Store As-Built 60 H2O wPROFILE.dwg
Message
eInvalidLayer
Entities
Duration
354 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 As-Built 60 H2O wPROFILE.dwg

Notes

What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.

No notes yet.