← Inbox

C3D-0159 · Title block for job 260714 (285 Huckaby Rd) [TB-FILL-260714] done

Writes every SS_BLOCK_11X17 attribute for job 260714 from the SurveyDisco card - job number, address, Fayette county, land lot 124, district 4, Joy Ewing, Boundary Survey, deed 5857/692 - clearing the stale job 251103 data. Subdivision is blanked as the card has none. Re-reads every attribute to verify.

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

C# payload

// Fill the SS_BLOCK_11X17 title block for job 260714 (285 Huckaby Rd, Brooks).
//
// The block was carrying job 251103 wholesale (2850 Riderwood Dr, Dekalb, LAND LOT 147,
// ANGELA & LLOYD BARNETT) - the stale-template hazard. EVERY attribute is written; a field with
// no source data is BLANKED rather than left holding the previous job's answer.
//
// Values from GET /api/project-by-id?job_number=260714:
//   jobNumber 260714 | geoAddress 285 Huckaby Rd, Brooks, GA 30205, USA
//   county Fayette   | landLot 124 | district 4 | preparedFor Joy Ewing
//   serviceType "Boundary Survey" | deedBook 5857 / deedPage 692
// The card has NO fieldDate for this job, so DATE uses today (08/13/26).
var bt = (BlockTable)Tx.GetObject(Db.BlockTableId, OpenMode.ForRead);
Log("drawing: " + Db.Filename);

var want = new Dictionary<string,string>();
want["JOB_NO"]               = "JOB NO.: 260714";
want["SITE_ADDRESS"]         = "285 Huckaby Rd, Brooks, GA 30205, USA";
want["COUNTY"]               = "COUNTY: Fayette";
want["LAND_LOT"]             = "LAND LOT: 124";
want["DISTRICT"]             = "DISTRICT: 4th";
want["DATE"]                 = "DATE: 08/13/26";
want["SURVEY_TYPE"]          = "Boundary Survey";
want["PREP_FOR"]             = "JOY EWING";
want["REF_DB_PG"]            = "REF DB 5857 Page 692";
want["SUBDIVISION_NAME_LOT"] = "";   // no subdivision on the card - blanked, not inherited

int set = 0;
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 || br.AttributeCollection.Count == 0) continue;
        if (br.Name.ToUpper().IndexOf("SS_BLOCK") < 0) continue;
        Log("");
        Log("BLOCK \"" + br.Name + "\" [" + br.Handle + "] in " + btr.Name);
        foreach (ObjectId aid in br.AttributeCollection) {
            var at0 = Tx.GetObject(aid, OpenMode.ForRead) as AttributeReference;
            if (at0 == null || !want.ContainsKey(at0.Tag)) continue;
            string old = at0.TextString, neu = want[at0.Tag];
            if (old == neu) { Log(String.Format("   {0,-22} unchanged", at0.Tag)); continue; }
            var at = (AttributeReference)Tx.GetObject(aid, OpenMode.ForWrite);
            at.TextString = neu;
            set++;
            Log(String.Format("   {0,-22} \"{1}\"  ->  \"{2}\"", at0.Tag, old, neu));
        }
    }
}
Log("");
Log("attributes written: " + set);

Log("");
Log("=== VERIFY ===");
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 || br.AttributeCollection.Count == 0) continue;
        if (br.Name.ToUpper().IndexOf("SS_BLOCK") < 0) continue;
        foreach (ObjectId aid in br.AttributeCollection) {
            var at = Tx.GetObject(aid, OpenMode.ForRead) as AttributeReference;
            if (at != null) Log(String.Format("   {0,-22} = \"{1}\"", at.Tag, at.TextString));
        }
    }
}
Ed.Regen();

Result

Status
success
Drawing file
C:\Users\sanja\OneDrive\_SurveyDisco\260714 - 285 Huckaby Rd, Brooks, GA 30205, USA\260714 - 285 Huckaby Rd.dwg
Message
Executed C3D-0159 (0 entities touched).
Entities
Duration
627 ms
Civil 3D
25.0.0.0

Log

drawing: C:\Users\sanja\OneDrive\_SurveyDisco\260714 - 285 Huckaby Rd, Brooks, GA 30205, USA\260714 - 285 Huckaby Rd.dwg

BLOCK "SS_BLOCK_11X17" [20355] in *Paper_Space
   JOB_NO                 "JOB NO.: 251103"  ->  "JOB NO.: 260714"
   SITE_ADDRESS           "2850 Riderwood Dr, Decatur, GA 30033, USA"  ->  "285 Huckaby Rd, Brooks, GA 30205, USA"
   REF_DB_PG              "REF DB  Page "  ->  "REF DB 5857 Page 692"
   LAND_LOT               "LAND LOT: 147"  ->  "LAND LOT: 124"
   DISTRICT               "DISTRICT: 18th"  ->  "DISTRICT: 4th"
   COUNTY                 "COUNTY: Dekalb"  ->  "COUNTY: Fayette"
   DATE                   "DATE: 11/11/25"  ->  "DATE: 08/13/26"
   SUBDIVISION_NAME_LOT   unchanged
   PREP_FOR               "ANGELA & LLOYD BARNETT"  ->  "JOY EWING"
   SURVEY_TYPE            "Survey"  ->  "Boundary Survey"

attributes written: 9

=== VERIFY ===
   JOB_NO                 = "JOB NO.: 260714"
   SITE_ADDRESS           = "285 Huckaby Rd, Brooks, GA 30205, USA"
   REF_DB_PG              = "REF DB 5857 Page 692"
   LAND_LOT               = "LAND LOT: 124"
   DISTRICT               = "DISTRICT: 4th"
   COUNTY                 = "COUNTY: Fayette"
   DATE                   = "DATE: 08/13/26"
   SUBDIVISION_NAME_LOT   = ""
   PREP_FOR               = "JOY EWING"
   SURVEY_TYPE            = "Boundary Survey"

Notes

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

No notes yet.