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.
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
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.