← Inbox

C3D-0004 · Read title block attributes [TB-READ] done

Read-only: every layout with its paper size, every block reference carrying attributes and their current values, plus any flood/FIRM/panel text in paper space.

Script file
C3D-0004.cs
Target
260612 · paper space
Author
claude
Approved
yes · reviewer
Timeout
180s

C# payload

// READ-ONLY: layouts, and every block reference with attributes in each paper space, so the
// title block's current attribute values can be diffed against the SurveyDisco job record.
var layDict = (DBDictionary)Tx.GetObject(Db.LayoutDictionaryId, OpenMode.ForRead);
foreach (DBDictionaryEntry de in layDict)
{
    var lay = (Layout)Tx.GetObject(de.Value, OpenMode.ForRead);
    var ps  = (BlockTableRecord)Tx.GetObject(lay.BlockTableRecordId, OpenMode.ForRead);
    int n = 0; foreach (ObjectId x in ps) n++;
    Log("=== layout '" + lay.LayoutName + "'  tab=" + lay.TabOrder + "  entities=" + n +
        "  paper=" + (lay.PlotPaperSize.X/25.4).ToString("F1") + "x" + (lay.PlotPaperSize.Y/25.4).ToString("F1") + "in");

    foreach (ObjectId id in ps)
    {
        var br = Tx.GetObject(id, OpenMode.ForRead) as BlockReference;
        if (br == null) continue;
        var def = (BlockTableRecord)Tx.GetObject(br.BlockTableRecord, OpenMode.ForRead);
        int na = br.AttributeCollection.Count;
        if (na == 0) continue;
        Log("  block '" + def.Name + "' h=" + br.Handle + "  " + na + " attribute(s)");
        foreach (ObjectId aid in br.AttributeCollection)
        {
            var ar = Tx.GetObject(aid, OpenMode.ForRead) as AttributeReference;
            if (ar != null) Log("      " + ar.Tag.PadRight(24) + " = '" + ar.TextString + "'");
        }
    }
}

Log("=== flood / FIRM text anywhere in paper space ===");
foreach (DBDictionaryEntry de in layDict)
{
    var lay = (Layout)Tx.GetObject(de.Value, OpenMode.ForRead);
    var ps  = (BlockTableRecord)Tx.GetObject(lay.BlockTableRecordId, OpenMode.ForRead);
    foreach (ObjectId id in ps)
    {
        var e = Tx.GetObject(id, OpenMode.ForRead);
        string t = null;
        var mt = e as MText;  if (mt != null) t = mt.Contents;
        var dt = e as DBText; if (dt != null) t = dt.TextString;
        if (t == null) continue;
        var u = t.ToUpper();
        if (u.Contains("FIRM") || u.Contains("PANEL") || u.Contains("FLOOD") || u.Contains("ZONE"))
            Log("  [" + lay.LayoutName + "] " + t.Replace("\u005CP", " | "));
    }
}

Result

Status
success
Drawing file
C:\Users\sanja\OneDrive\_SurveyDisco\260613 - 5030 E Lake Pkwy, Stockbridge, GA 30281, USA\260612 - CSTORE WATER ABS BOUNDARY.dwg
Message
Executed C3D-0004 (0 entities touched).
Entities
Duration
798 ms
Civil 3D
25.0.0.0

Log

=== layout '11X17'  tab=1  entities=215  paper=11.0x17.0in
  block 'SS_BLOCK_11X17' h=20355  10 attribute(s)
      JOB_NO                   = 'JOB NO.: 260104'
      SITE_ADDRESS             = '6333 GA-42, Rex, GA 30273, USA'
      REF_DB_PG                = 'REF DB 13594 Page 389'
      LAND_LOT                 = 'LAND LOT: 119'
      DISTRICT                 = 'DISTRICT: 12th'
      COUNTY                   = 'COUNTY: CLAYTON'
      DATE                     = 'DATE: 12/22/25'
      SUBDIVISION_NAME_LOT     = ''
      PREP_FOR                 = 'Curry Leaves 6333 LLC & SERVISFIRST BANK'
      SURVEY_TYPE              = 'ALTA retracement Survey'
=== layout '13709-779'  tab=3  entities=215  paper=11.0x17.0in
  block 'SS_BLOCK_11X17' h=22F36  10 attribute(s)
      JOB_NO                   = 'JOB NO.: 260104'
      SITE_ADDRESS             = '6333 GA-42, Rex, GA 30273, USA'
      REF_DB_PG                = 'REF DB 13594 Page 389'
      LAND_LOT                 = 'LAND LOT: 119'
      DISTRICT                 = 'DISTRICT: 12th'
      COUNTY                   = 'COUNTY: CLAYTON'
      DATE                     = 'DATE: 12/22/25'
      SUBDIVISION_NAME_LOT     = ''
      PREP_FOR                 = 'Curry Leaves 6333 LLC & SERVISFIRST BANK'
      SURVEY_TYPE              = 'ALTA retracement Survey'
=== layout '22X17'  tab=2  entities=7  paper=22.0x17.0in
  block 'SS_BLOCK_11X17' h=23273  10 attribute(s)
      JOB_NO                   = 'JOB NO.: 260104'
      SITE_ADDRESS             = '6333 GA-42, Rex, GA 30273, USA'
      REF_DB_PG                = 'REF DB 13594 Page 389'
      LAND_LOT                 = 'LAND LOT: 119'
      DISTRICT                 = 'DISTRICT: 12th'
      COUNTY                   = 'COUNTY: CLAYTON'
      DATE                     = 'DATE: 10/16/25'
      SUBDIVISION_NAME_LOT     = 'SUBDIVISION_NAME LOT ##'
      PREP_FOR                 = 'Curry Leaves 6333 LLC & SERVISFIRST BANK'
      SURVEY_TYPE              = 'ALTA retracement Survey'
=== layout 'Model'  tab=0  entities=12763  paper=17.0x11.0in
=== flood / FIRM text anywhere in paper space ===
  [11X17] FLOOD NOTE: | THIS PROPERTY IS NOT IN AN AREA HAVING SPECIAL FLOOD HAZARD AS PER COMMUNITY PANEL NO. 13063C0083F, DATED JUNE 7TH 2017.
  [13709-779] FLOOD NOTE: | THIS PROPERTY IS NOT IN AN AREA HAVING SPECIAL FLOOD HAZARD AS PER COMMUNITY PANEL NO. 13063C0083F, DATED JUNE 7TH 2017.

Notes

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

No notes yet.