← Inbox

C3D-0371 · Erase the empty AecObjExplode block ref + delete the 3 Aec layers [C3D-AECKILL] done

Erases the single empty BlockReference on AecObjExplode_22X17_Pspace (draws nothing), deletes the three Aec* layers, and purges the now-unused block definition. Verifies no Aec layer remains.

Script file
C3D-0371.cs
Target
260612-Springdale Sanitary Sewer Extension As-Built 60 wPROFILE.dwg · model space
Author
claude
Approved
yes · auto-auth
Timeout
120s

C# payload

// Erase the empty leftover block reference on AecObjExplode_22X17_Pspace, then delete the three
// Aec* layers. Nothing of value here - the insert draws nothing.
Log("drawing: " + Db.Filename);

var bt = (BlockTable)Tx.GetObject(Db.BlockTableId, OpenMode.ForRead);
int erased = 0;
foreach (ObjectId btrId in bt) {
    var btr = (BlockTableRecord)Tx.GetObject(btrId, OpenMode.ForRead);
    foreach (ObjectId id in btr) {
        var probe = Tx.GetObject(id, OpenMode.ForRead) as Autodesk.AutoCAD.DatabaseServices.Entity;
        if (probe == null) continue;
        if (!probe.Layer.StartsWith("Aec", StringComparison.OrdinalIgnoreCase)) continue;
        var e = (Autodesk.AutoCAD.DatabaseServices.Entity)Tx.GetObject(id, OpenMode.ForWrite);
        Log("erasing [" + e.Handle + "] " + e.GetType().Name + " on " + e.Layer);
        e.Erase();
        erased++;
    }
}
Log("erased " + erased + " entity(ies) off Aec layers");

// delete the Aec layers
var lt = (LayerTable)Tx.GetObject(Db.LayerTableId, OpenMode.ForWrite);
{
    var cl = (LayerTableRecord)Tx.GetObject(Db.Clayer, OpenMode.ForRead);
    if (cl.Name.StartsWith("Aec", StringComparison.OrdinalIgnoreCase)) { Db.Clayer = lt["0"]; Log("current layer was Aec - switched to 0"); }
}
var names = new List<string>();
foreach (ObjectId id in lt) { var l=(LayerTableRecord)Tx.GetObject(id,OpenMode.ForRead); if (l.Name.StartsWith("Aec",StringComparison.OrdinalIgnoreCase)) names.Add(l.Name); }
int deleted = 0;
foreach (var n in names) {
    try { var l=(LayerTableRecord)Tx.GetObject(lt[n],OpenMode.ForWrite); l.Erase(); deleted++; Log("deleted layer " + n); }
    catch (System.Exception ex) { Log("could not delete " + n + ": " + ex.Message); }
}

// also purge the block DEFINITION if now unused
var bt2 = (BlockTable)Tx.GetObject(Db.BlockTableId, OpenMode.ForWrite);
foreach (string bn in new string[]{"AecObjExplode_22X17_Pspace"}) {
    if (!bt2.Has(bn)) continue;
    var def = (BlockTableRecord)Tx.GetObject(bt2[bn], OpenMode.ForWrite);
    if (def.GetBlockReferenceIds(true, false).Count == 0) { try { def.Erase(); Log("purged block def " + bn); } catch (System.Exception ex) { Log("keep block def " + bn + ": " + ex.Message); } }
    else Log("block def " + bn + " still referenced - kept");
}

// verify
var lt3 = (LayerTable)Tx.GetObject(Db.LayerTableId, OpenMode.ForRead);
int left = 0;
foreach (ObjectId id in lt3) { var l=(LayerTableRecord)Tx.GetObject(id,OpenMode.ForRead); if (l.Name.StartsWith("Aec",StringComparison.OrdinalIgnoreCase)) { left++; Log("  STILL: " + l.Name); } }
Log(string.Format("VERIFY: erased {0}, deleted {1} layers, Aec layers remaining={2}  {3}",
    erased, deleted, left, left==0 ? "CLEAN" : "*** NOT CLEAN ***"));
Ed.Regen();

Result

Status
success
Drawing file
C:\Users\sanja\OneDrive\_SurveyDisco\260613 - 5030 E Lake Pkwy, Stockbridge, GA 30281, USA\ACAD-260612-Springdale Sanitary Sewer Extension As-Built 60 wPROFILE.dwg
Message
Executed C3D-0371 (0 entities touched).
Entities
Duration
468 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-Springdale Sanitary Sewer Extension As-Built 60 wPROFILE.dwg
erasing [1FC8] BlockReference on AecObjExplode_22X17_Pspace
erased 1 entity(ies) off Aec layers
deleted layer AecObjExplode_22X17_Pspace
deleted layer AecObjExplode_11X17_Pspace
deleted layer AecObjExplode_22X17_Vport_1D7E
purged block def AecObjExplode_22X17_Pspace
VERIFY: erased 1, deleted 3 layers, Aec layers remaining=0  CLEAN

Notes

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

No notes yet.