C3D-0015 · Move notes to SEWER_MANHOLE_TEXT, erase leaders [MH-FIX] done
Moves the 14 manhole notes from SEWER_LINE_TEXT to SEWER_MANHOLE_TEXT and erases the 13 broken leaders. Works off handles read from the drawing, verifies both layer counts afterwards.
C# payload
// Move the 14 manhole notes to SEWER_MANHOLE_TEXT and ERASE their leaders (the leaders draw
// wrong - user: "THE LEADERS ARE ALL BROKEN ... JUST REMOVE ALL THOSE LEADERS").
//
// A previous attempt reported success but nothing persisted, so this works off EXPLICIT HANDLES
// read back out of the drawing rather than content matching, and re-reads every entity at the
// end to prove the state.
// Host owns Tx; host regens after commit.
const string FROM = "SEWER_LINE_TEXT", TO = "SEWER_MANHOLE_TEXT";
var ms = (BlockTableRecord)Tx.GetObject(SymbolUtilityServices.GetBlockModelSpaceId(Db), OpenMode.ForWrite);
EnsureLayer(TO, 3);
var noteIds = new List<ObjectId>();
var leaderIds = new List<ObjectId>();
foreach (ObjectId id in ms)
{
var e = Tx.GetObject(id, OpenMode.ForRead) as Autodesk.AutoCAD.DatabaseServices.Entity;
if (e == null || e.Layer != FROM) continue;
if (e is MText) noteIds.Add(id);
if (e is Leader) leaderIds.Add(id);
}
Log("on '" + FROM + "': " + noteIds.Count + " MText, " + leaderIds.Count + " Leader");
int moved = 0;
foreach (var id in noteIds)
{
var w = (MText)Tx.GetObject(id, OpenMode.ForWrite);
w.Layer = TO;
moved++;
}
int erased = 0;
foreach (var id in leaderIds)
{
var w = (Leader)Tx.GetObject(id, OpenMode.ForWrite);
w.Erase();
erased++;
}
Log("moved " + moved + " note(s), erased " + erased + " leader(s)");
int onFrom = 0, onTo = 0;
foreach (ObjectId id in ms)
{
var e = Tx.GetObject(id, OpenMode.ForRead) as Autodesk.AutoCAD.DatabaseServices.Entity;
if (e == null || e.IsErased) continue;
if (e.Layer == FROM) onFrom++;
if (e.Layer == TO) onTo++;
}
Log("VERIFIED: '" + FROM + "' = " + onFrom + " entit(ies), '" + TO + "' = " + onTo);
Result
Log
on 'SEWER_LINE_TEXT': 14 MText, 13 Leader moved 14 note(s), erased 13 leader(s) VERIFIED: 'SEWER_LINE_TEXT' = 0 entit(ies), 'SEWER_MANHOLE_TEXT' = 14
Notes
What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.
No notes yet.