← Inbox

C3D-FEMAFIX · Fix flood note on 11X17 (wrong county panel) + remove my model-space duplicate done

The REAL note on layout 11X17 reads panel 13135C0016G eff 02/04/2013 - that is a GWINNETT panel carried in from another job. Job 260702 is FULTON: panel 13121C0359F eff 09/18/2013 (per job record). Also erases the duplicate FEMA note I wrongly added to model space. Reads back + verifies; idempotent.

Script file
C3D-FEMAFIX.cs
Target
active document · model space
Author
claude
Approved
yes · reviewer
Timeout
60s

C# payload

// Fix the REAL flood note on layout 11X17 (was a stale Gwinnett panel 13135C0016G from another job)
// and erase the duplicate note I added to model space. Reads back + verifies. Idempotent.
var bt = (BlockTable)Tx.GetObject(Db.BlockTableId, OpenMode.ForRead);

string NEW = "FLOOD NOTE:\\PTHIS PROPERTY IS NOT LOCATED WITHIN A SPECIAL FLOOD HAZARD AREA (SFHA) "
           + "AS SHOWN ON F.I.R.M. COMMUNITY PANEL NO. 13121C0359F, EFFECTIVE SEPTEMBER 18, 2013, AND LIES IN ZONE X.";

// 1) fix the paper-space note (handle 158D1 on layout 11X17)
var h = new Handle(System.Convert.ToInt64("158D1", 16));
ObjectId noteId;
if (Db.TryGetObjectId(h, out noteId) && !noteId.IsNull) {
    var mt = (MText)Tx.GetObject(noteId, OpenMode.ForWrite);
    string oldv = mt.Contents;
    if (oldv == NEW) { Log("11X17 flood note already correct (no change)."); }
    else {
        mt.Contents = NEW;
        var chk = (MText)Tx.GetObject(noteId, OpenMode.ForRead);
        Log($"11X17 flood note UPDATED (verified):");
        Log($"    OLD: \"{oldv.Replace("\\P", " / ")}\"");
        Log($"    NEW: \"{chk.Contents.Replace("\\P", " / ")}\"");
    }
} else { Log("WARNING: handle 158D1 not found — 11X17 note NOT updated."); }

// 2) erase my duplicate model-space note
var ms = (BlockTableRecord)Tx.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForRead);
int killed = 0;
var toKill = new List<ObjectId>();
foreach (ObjectId id in ms) {
    var mt = Tx.GetObject(id, OpenMode.ForRead) as MText;
    if (mt != null && mt.Layer == "C-ANNO" && mt.Contents.Contains("FLOOD NOTE")) toKill.Add(id);
}
foreach (var id in toKill) {
    var mt = (MText)Tx.GetObject(id, OpenMode.ForWrite);
    mt.Erase(); killed++;
}
Log($"Model-space duplicate flood note(s) erased: {killed}.");
Log("Note: block def 'A$C3840e5d8' (BLOCK_TB2) also carries a stale panel 13121C0087 F — left alone, appears unused.");

Result

Status
success
Drawing file
C:\Users\sanja\OneDrive\_SurveyDisco\260702 - 358 St Johns Ave SW, Atlanta, GA 30315, USA\260702 - 358 St Johns Ave SW.dwg
Message
Executed C3D-FEMAFIX (0 entities touched).
Entities
Duration
340 ms
Civil 3D
25.0.0.0

Log

11X17 flood note UPDATED (verified):
    OLD: "FLOOD NOTE: / THIS PROPERTY IS NOT LOCATED WITHIN A SPECIAL FLOOD HAZARD AREA (SFHA) AS SHOWN ON F.I.R.M. COMMUNITY PANEL NO. 13135C0016G, EFFECTIVE FEBRUARY 4, 2013, AND LIES IN ZONE X."
    NEW: "FLOOD NOTE: / THIS PROPERTY IS NOT LOCATED WITHIN A SPECIAL FLOOD HAZARD AREA (SFHA) AS SHOWN ON F.I.R.M. COMMUNITY PANEL NO. 13121C0359F, EFFECTIVE SEPTEMBER 18, 2013, AND LIES IN ZONE X."
Model-space duplicate flood note(s) erased: 1.
Note: block def 'A$C3840e5d8' (BLOCK_TB2) also carries a stale panel 13121C0087 F — left alone, appears unused.

Notes

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

No notes yet.