← Inbox

C3D-0163 · READ-ONLY: the FEMA / flood note as it stands [FEMA-READ-4] done

Finds the flood note wherever it lives - block attribute, attribute definition inside a block definition, or plain text - across every layout and block definition, reporting exact text, tag, height and layer. No changes.

Script file
C3D-0163.cs
Target
active document · paper space
Author
claude
Approved
yes · reviewer
Timeout
240s

C# payload

// READ-ONLY. The FEMA / flood note as it exists right now - the exact text, whether it is an
// attribute or plain text, and where it lives. Searched across every layout AND every block
// definition, since the note lives inside the title block definition rather than model space.
// Nothing is modified.
var bt = (BlockTable)Tx.GetObject(Db.BlockTableId, OpenMode.ForRead);
Log("drawing: " + Db.Filename);

Log("=== ATTRIBUTES mentioning flood / firm / panel / zone ===");
foreach (ObjectId btrId in bt) {
    var btr = (BlockTableRecord)Tx.GetObject(btrId, OpenMode.ForRead);
    foreach (ObjectId id in btr) {
        var br = Tx.GetObject(id, OpenMode.ForRead) as BlockReference;
        if (br == null) continue;
        foreach (ObjectId aid in br.AttributeCollection) {
            var at = Tx.GetObject(aid, OpenMode.ForRead) as AttributeReference;
            if (at == null) continue;
            string blob = (at.Tag + " " + at.TextString).ToUpper();
            if (blob.IndexOf("FLOOD") < 0 && blob.IndexOf("FIRM") < 0 && blob.IndexOf("PANEL") < 0
                && blob.IndexOf("ZONE") < 0 && blob.IndexOf("FEMA") < 0) continue;
            Log(String.Format("  [{0}] block \"{1}\" in {2}", at.Handle, br.Name, btr.Name));
            Log(String.Format("     TAG \"{0}\"  =  \"{1}\"", at.Tag, at.TextString));
        }
    }
}

Log("");
Log("=== ATTRIBUTE DEFINITIONS in block definitions (the template side) ===");
foreach (ObjectId btrId in bt) {
    var btr = (BlockTableRecord)Tx.GetObject(btrId, OpenMode.ForRead);
    if (btr.IsLayout) continue;
    foreach (ObjectId id in btr) {
        var ad = Tx.GetObject(id, OpenMode.ForRead) as AttributeDefinition;
        if (ad == null) continue;
        Log(String.Format("  [{0}] in \"{1}\"  TAG \"{2}\"  prompt \"{3}\"  default \"{4}\"  h={5:F3}",
            ad.Handle, btr.Name, ad.Tag, ad.Prompt, ad.TextString, ad.Height));
    }
}

Log("");
Log("=== TEXT mentioning flood / firm / panel / zone (all spaces + block defs) ===");
foreach (ObjectId btrId in bt) {
    var btr = (BlockTableRecord)Tx.GetObject(btrId, OpenMode.ForRead);
    foreach (ObjectId id in btr) {
        Autodesk.AutoCAD.DatabaseServices.DBObject o;
        try { o = Tx.GetObject(id, OpenMode.ForRead); } catch { continue; }
        string s = null;
        var mt = o as MText;  if (mt != null) s = mt.Contents;
        var dt = o as DBText; if (dt != null) s = dt.TextString;
        if (s == null) continue;
        string u = s.ToUpper();
        if (u.IndexOf("FLOOD") < 0 && u.IndexOf("FIRM") < 0 && u.IndexOf("PANEL") < 0 && u.IndexOf("FEMA") < 0) continue;
        var ent = (Autodesk.AutoCAD.DatabaseServices.Entity)o;
        Log("");
        Log(String.Format("  [{0}] {1} in {2}  layer={3}  h={4:F3}", o.Handle, o.GetType().Name, btr.Name, ent.Layer,
            mt != null ? mt.TextHeight : dt.Height));
        Log("     " + s.Replace(@"P", " | "));
    }
}

Result

Status
success
Drawing file
C:\Users\sanja\OneDrive\_SurveyDisco\SS_BLOCK_11X17.dwg
Message
Executed C3D-0163 (0 entities touched).
Entities
Duration
594 ms
Civil 3D
25.0.0.0

Log

drawing: C:\Users\sanja\OneDrive\_SurveyDisco\SS_BLOCK_11X17.dwg
=== ATTRIBUTES mentioning flood / firm / panel / zone ===

=== ATTRIBUTE DEFINITIONS in block definitions (the template side) ===
  [12409] in "_TagCircle"  TAG "TAGNUMBER"  prompt "Enter tag number"  default "TAGNUMBER"  h=0.094
  [2034B] in "SS_BLOCK_11X17"  TAG "JOB_NO"  prompt "JOB NO.: 251002"  default "JOB NO.: 251002"  h=0.117
  [2034C] in "SS_BLOCK_11X17"  TAG "SITE_ADDRESS"  prompt "SITE_ADDRESS"  default "SITE_ADDRESS"  h=0.117
  [2034D] in "SS_BLOCK_11X17"  TAG "REF_DB_PG"  prompt "REF DB xxx Page xxx"  default "REF DB xxx Page xxx"  h=0.117
  [2034E] in "SS_BLOCK_11X17"  TAG "LAND_LOT"  prompt "LAND LOT: ###"  default "LAND LOT: ###"  h=0.117
  [2034F] in "SS_BLOCK_11X17"  TAG "DISTRICT"  prompt "DISTRICT: #TH"  default "DISTRICT: #TH"  h=0.117
  [20350] in "SS_BLOCK_11X17"  TAG "COUNTY"  prompt "COUNTY: CLAYCO"  default "COUNTY: CLAYCO"  h=0.117
  [20351] in "SS_BLOCK_11X17"  TAG "DATE"  prompt "DATE: 10/16/25"  default "DATE: 10/16/25"  h=0.117
  [20352] in "SS_BLOCK_11X17"  TAG "SUBDIVISION_NAME_LOT"  prompt "SUBDIVISION_NAME LOT ##"  default "SUBDIVISION_NAME LOT ##"  h=0.117
  [20353] in "SS_BLOCK_11X17"  TAG "PREP_FOR"  prompt "PREP_FOR"  default "PREP_FOR"  h=0.150
  [20354] in "SS_BLOCK_11X17"  TAG "SURVEY_TYPE"  prompt "BOUNDARY SURVEY"  default "BOUNDARY SURVEY"  h=0.200
  [1FE91] in "11x17 COVER SHEET SS"  TAG "SITE_ADDRESS"  prompt ""  default "SITE ADDRESS"  h=0.447
  [1FE92] in "11x17 COVER SHEET SS"  TAG "CITY"  prompt ""  default "CITY"  h=0.447
  [1FE93] in "11x17 COVER SHEET SS"  TAG "COUNTY_STATE"  prompt ""  default "COUNTY , STATE"  h=0.447
  [1FE94] in "11x17 COVER SHEET SS"  TAG "ZONING"  prompt ""  default "ZONING"  h=0.400
  [1FE95] in "11x17 COVER SHEET SS"  TAG "CLIENT_CONTACT_NAME"  prompt ""  default "CONTACT: PERSONS NAME"  h=0.300
  [1FE96] in "11x17 COVER SHEET SS"  TAG "CLIENT_COMPANY"  prompt ""  default "COMPANY"  h=0.300
  [1FE97] in "11x17 COVER SHEET SS"  TAG "CLIENT_ADDRESS"  prompt ""  default "ADDRESS"  h=0.300
  [1FE98] in "11x17 COVER SHEET SS"  TAG "CLIENT_CITY_STATE_ZIP"  prompt ""  default "CITY , STATE ZIP"  h=0.300
  [1FE99] in "11x17 COVER SHEET SS"  TAG "CLIENT_PHONE"  prompt ""  default "(XXX) XXX  XX XX"  h=0.300
  [1FE9A] in "11x17 COVER SHEET SS"  TAG "GF_CONTACT"  prompt ""  default "CONTACT: PROJECT MANAGER'S NAME"  h=0.300
  [1FE9B] in "11x17 COVER SHEET SS"  TAG "GF_ADDRESS"  prompt ""  default "OFFICE ADDRESS"  h=0.300
  [1FE9C] in "11x17 COVER SHEET SS"  TAG "GF_CITY_STATE_ZIP"  prompt ""  default "CITY , STATE ZIP"  h=0.300
  [1FE9D] in "11x17 COVER SHEET SS"  TAG "GF_PHONE"  prompt ""  default "(XXX) XXX  XX XX"  h=0.300
  [1FE9E] in "11x17 COVER SHEET SS"  TAG "CLIENT_COMPANY_NAME"  prompt ""  default "COMPANY NAME"  h=0.400
  [1FE9F] in "11x17 COVER SHEET SS"  TAG "PROJECT_NO."  prompt ""  default "200XXXXX"  h=0.249
  [1FEA2] in "11x17 COVER SHEET SS"  TAG "DATECOVER"  prompt ""  default "XX-XX-XX"  h=0.249
  [1FEA7] in "11x17 COVER SHEET SS"  TAG "FEMA_MAP1"  prompt ""  default "FLOOD INSURANCE RATE MAP"  h=0.213
  [1FEA8] in "11x17 COVER SHEET SS"  TAG "FEMA_MAP2"  prompt ""  default "(N.T.S.)"  h=0.213
  [1FEA9] in "11x17 COVER SHEET SS"  TAG "ATT_SURV2"  prompt ""  default "ALTA/ACSM LAND TITLE SURVEY"  h=0.150
  [1FEAA] in "11x17 COVER SHEET SS"  TAG "SURV_NAME"  prompt ""  default "SURVEYOR'S NAME"  h=0.200
  [1FEAB] in "11x17 COVER SHEET SS"  TAG "SURV_ADDRESS_1"  prompt ""  default "ADDRESS"  h=0.150
  [1FEAC] in "11x17 COVER SHEET SS"  TAG "ATT_SURV1"  prompt ""  default "SURVEYOR"  h=0.300
  [1FEAD] in "11x17 COVER SHEET SS"  TAG "SURV_ADDRESS_2"  prompt ""  default "ADDRESS2"  h=0.150
  [1FEAE] in "11x17 COVER SHEET SS"  TAG "SURV_PHONE"  prompt ""  default "(XXX) XXX-XXXX"  h=0.150
  [1FEAF] in "11x17 COVER SHEET SS"  TAG "SURV_PROJ#"  prompt ""  default "SURVEYOR'S PROJECT NO. "  h=0.150
  [1FEB0] in "11x17 COVER SHEET SS"  TAG "GEO_NAME"  prompt ""  default "SURVEYOR'S NAME"  h=0.200
  [1FEB1] in "11x17 COVER SHEET SS"  TAG "GEO_ADDRESS_1"  prompt ""  default "ADDRESS"  h=0.150
  [1FEB2] in "11x17 COVER SHEET SS"  TAG "ATT_GEO1"  prompt ""  default "GEOTECHNICAL ENGINEER:"  h=0.300
  [1FEB3] in "11x17 COVER SHEET SS"  TAG "GEO_ADDRESS_2"  prompt ""  default "ADDRESS2"  h=0.150
  [1FEB4] in "11x17 COVER SHEET SS"  TAG "GEO_PHONE"  prompt ""  default "(XXX) XXX-XXXX"  h=0.150
  [1FEB5] in "11x17 COVER SHEET SS"  TAG "GEO_PROJ#"  prompt ""  default "PROJECT NO. "  h=0.150
  [1FEBA] in "11x17 COVER SHEET SS"  TAG "GF_EMAIL"  prompt ""  default "XXXX"  h=0.300
  [1FF48] in "SS_BLOCK_11X17 (1)"  TAG "JOB_NO"  prompt "JOB NO.: 251002"  default "JOB NO.: 251002"  h=0.117
  [1FF49] in "SS_BLOCK_11X17 (1)"  TAG "SITE_ADDRESS"  prompt "2499 E Maddox Rd, Buford, GA 30519"  default "2499 E Maddox Rd, Buford, GA 30519"  h=0.117
  [1FF4A] in "SS_BLOCK_11X17 (1)"  TAG "REF_DB_PG"  prompt "REF DB 61982 Page 308"  default "REF DB 61982 Page 308"  h=0.117
  [1FF4B] in "SS_BLOCK_11X17 (1)"  TAG "LAND_LOT"  prompt "LAND LOT: 226"  default "LAND LOT: 226"  h=0.117
  [1FF4C] in "SS_BLOCK_11X17 (1)"  TAG "DISTRICT"  prompt "DISTRICT: 7TH"  default "DISTRICT: 7TH"  h=0.117
  [1FF4D] in "SS_BLOCK_11X17 (1)"  TAG "COUNTY"  prompt "COUNTY: GWINNETT"  default "COUNTY: GWINNETT"  h=0.117
  [1FF4E] in "SS_BLOCK_11X17 (1)"  TAG "DATE"  prompt "DATE: 10/16/25"  default "DATE: 10/16/25"  h=0.117
  [1FF4F] in "SS_BLOCK_11X17 (1)"  TAG "SUBDIVISION_NAME_LOT"  prompt "GLENDALE ESTATES LOT 10"  default "GLENDALE ESTATES LOT 10"  h=0.117
  [1FF50] in "SS_BLOCK_11X17 (1)"  TAG "PREP_FOR"  prompt "PHILLIP KIM RENOVATIONS"  default "PHILLIP KIM RENOVATIONS"  h=0.150
  [1FF51] in "SS_BLOCK_11X17 (1)"  TAG "SURVEY_TYPE"  prompt "BOUNDARY SURVEY"  default "BOUNDARY SURVEY"  h=0.200
  [1FFCB] in "SS_BLOCK_11X17 (2)"  TAG "JOB_NO"  prompt "JOB NO.: 251002"  default "JOB NO.: 251002"  h=0.117
  [1FFCC] in "SS_BLOCK_11X17 (2)"  TAG "SITE_ADDRESS"  prompt "2499 E Maddox Rd, Buford, GA 30519"  default "2499 E Maddox Rd, Buford, GA 30519"  h=0.117
  [1FFCD] in "SS_BLOCK_11X17 (2)"  TAG "REF_DB_PG"  prompt "REF DB 61982 Page 308"  default "REF DB 61982 Page 308"  h=0.117
  [1FFCE] in "SS_BLOCK_11X17 (2)"  TAG "LAND_LOT"  prompt "LAND LOT: 226"  default "LAND LOT: 226"  h=0.117
  [1FFCF] in "SS_BLOCK_11X17 (2)"  TAG "DISTRICT"  prompt "DISTRICT: 7TH"  default "DISTRICT: 7TH"  h=0.117
  [1FFD0] in "SS_BLOCK_11X17 (2)"  TAG "COUNTY"  prompt "COUNTY: GWINNETT"  default "COUNTY: GWINNETT"  h=0.117
  [1FFD1] in "SS_BLOCK_11X17 (2)"  TAG "DATE"  prompt "DATE: 10/16/25"  default "DATE: 10/16/25"  h=0.117
  [1FFD2] in "SS_BLOCK_11X17 (2)"  TAG "SUBDIVISION_NAME_LOT"  prompt "GLENDALE ESTATES LOT 10"  default "GLENDALE ESTATES LOT 10"  h=0.117
  [1FFD3] in "SS_BLOCK_11X17 (2)"  TAG "PREP_FOR"  prompt "PHILLIP KIM RENOVATIONS"  default "PHILLIP KIM RENOVATIONS"  h=0.150
  [1FFD4] in "SS_BLOCK_11X17 (2)"  TAG "SURVEY_TYPE"  prompt "BOUNDARY SURVEY"  default "BOUNDARY SURVEY"  h=0.200
  [2007C] in "SS_BLOCK_11X17 (3)"  TAG "JOB_NO"  prompt "JOB NO.: 251002"  default "JOB NO.: 251002"  h=0.117
  [2007D] in "SS_BLOCK_11X17 (3)"  TAG "SITE_ADDRESS"  prompt "2499 E Maddox Rd, Buford, GA 30519"  default "2499 E Maddox Rd, Buford, GA 30519"  h=0.117
  [2007E] in "SS_BLOCK_11X17 (3)"  TAG "REF_DB_PG"  prompt "REF DB 61982 Page 308"  default "REF DB 61982 Page 308"  h=0.117
  [2007F] in "SS_BLOCK_11X17 (3)"  TAG "LAND_LOT"  prompt "LAND LOT: 226"  default "LAND LOT: 226"  h=0.117
  [20080] in "SS_BLOCK_11X17 (3)"  TAG "DISTRICT"  prompt "DISTRICT: 7TH"  default "DISTRICT: 7TH"  h=0.117
  [20081] in "SS_BLOCK_11X17 (3)"  TAG "COUNTY"  prompt "COUNTY: GWINNETT"  default "COUNTY: GWINNETT"  h=0.117
  [20082] in "SS_BLOCK_11X17 (3)"  TAG "DATE"  prompt "DATE: 10/16/25"  default "DATE: 10/16/25"  h=0.117
  [20083] in "SS_BLOCK_11X17 (3)"  TAG "SUBDIVISION_NAME_LOT"  prompt "GLENDALE ESTATES LOT 10"  default "GLENDALE ESTATES LOT 10"  h=0.117
  [20084] in "SS_BLOCK_11X17 (3)"  TAG "PREP_FOR"  prompt "PHILLIP KIM RENOVATIONS"  default "PHILLIP KIM RENOVATIONS"  h=0.150
  [20085] in "SS_BLOCK_11X17 (3)"  TAG "SURVEY_TYPE"  prompt "BOUNDARY SURVEY"  default "BOUNDARY SURVEY"  h=0.200

=== TEXT mentioning flood / firm / panel / zone (all spaces + block defs) ===

  [158D1] MText in *Paper_Space  layer=BLOCK_NOTES_FLOOD  h=0.055
     FLOOD NOTE:\ | THIS  | RO | ERTY IS NOT LOCATED WITHIN A S | ECIAL FLOOD HAZARD AREA (SFHA) AS SHOWN ON F.I.R.M. COMMUNITY  | ANEL NO. 13135C0016G, EFFECTIVE FEBRUARY 4, 2013, AND LIES IN ZONE X.

  [14522] MText in A$C3840e5d8  layer=BLOCK_TB2  h=2.200
     FLOOD NOTE:\ | THIS  | RO | ERTY IS NOT IN AN AREA HAVING S | ECIAL FLOOD\ | HAZARDS AS  | ER COMMUNITY  | ANEL NO. 13121C0087 F, DATED\ | SE | TEMBER 18th 2013, ZONE "X".

  [14528] MText in A$C3840e5d8  layer=SS-BOUNDARY  h=3.000
     \pxqc;{\LSITE INFORMATION\ | }\ | \pq*;JURISDICTION:  CITY OF JOHNS CREEK\ |  | ARCEL ID NO.:  11 055002300102\ |  | RO | OSED ZONING:  R-4 SINGLE-FAMILY DWELLING\ | OVERLAY DISTRICT:  N/A\ | FLOOD ZONE CLASSIFICATION: X\ | \ | \pqc;{\LSETBACK & BUFFERS\ | }BUILDING SETBACKS\ | \ | \pq*;FRONT:  35 FT\ | REAR:  25 FT\ | SIDE:  7 FT\ | LANDSCA | E STRI | :  40 FT (ALONG ABBOTTS BRIDGE ROAD) \ | \ | \pqc;{\LSITE AREA CALCULATIONS\ | }\ | \pq*;SITE: {\Fsimplex|c0;\C4;±}0.87 AC/{\Fsimplex|c0;\C4; }37,779.18 SF\ | BUILDABLE AREA: {\Fsimplex|c0;\C4;±}0.69 AC/ 29933.18 SF\ | UNBUILDABLE AREA: {\Fsimplex|c0;\C4;±}0.18 AC{\Fsimplex|c0;\C4;/ }7846.00 SF\ | MINIMUM LOT SIZE: 9000 SF\ | Subdivision\~Density: 2 LOTS/0.87\~AC ≈ 2.30\~lots\~per\~acre
\ | \pqc;{\LBASE INFORMATION\ | }\ | \pq*;NO  | ORTION OF THIS  | RO | ERTY IS LOCATED IN A S | ECIAL FLOOD AREA AS  | ER F.I.R.M. MA |  NO. {\Fsimplex|c0;13121C0087 F, DATED\ | SE | TEMBER 18th 2013, ZONE "X".\ | } \ | BASE CONDITIONS  | ROVIDED BY SAWHNEY ASSOCIATES, DATED 6/21/2024\ | \ | \pqc;{\L | RO | OSED VARIANCES\ | \pq*;}\ | 1. Variance to remove 10% open space requirement under section 12.E3 subsection A of the City of Johns Creek building ordinance

  [1E7AB] MText in *Paper_Space154  layer=BLOCK_TB2  h=0.055
     FLOOD NOTE:\ | THIS  | RO | ERTY IS NOT IN AN AREA HAVING S | ECIAL FLOOD AS  | ER COMMUNITY  | ANEL NO. 13089C0132J, DATED MAY 16th 2013.

  [1FEA7] AttributeDefinition in 11x17 COVER SHEET SS  layer=G-NOTE  h=0.213
     FLOOD INSURANCE RATE MA | 

  [1FEB6] MText in 11x17 COVER SHEET SS  layer=C-0-GNRL-NOTE-INDX  h=0.100
     THE MAJORITY  SITE DOES NOT LIE WITHIN A 100 YEAR FLOOD HAZARD AREA AND IS LOCATED IN ZONE "X" , HOWEVER A SMALL  | ORTION LOCATED IN THE  NORTH EAST CORNER DOES LIE IN ZONE A AS SHOWN ON THE ABOVE FEDERAL EMERGENCY MANAGEMENT AGENCY FLOOD INSURANCE RATE MA |  NUMBER 13151CO276D WITH AN EFFECTIVE DATE OF OCTOBER 6, 2016.

Notes

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

No notes yet.