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.
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
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.