C3D-0296 · 260612 C-Store H2O: water labels per the HCWA redline done
NEW MText labels only, nothing existing edited. Model space h=3.0 on WATER_LINE_TEXT: 8in TSV at the Springdale main (item 7), 8in WL + 8x6 REDUCER tap-to-meter, 8x2 MASTER METER OCTAVE w/ bypass in 12x7x6 SureSpec vault Bartow SS120-61207 (item 1), 2in RPZ BFP DOM - surveyed corners 1122-1125 (item 3), 8in ZURN WILKINS 350AST OSY in 8x5x6 SureSpec vault Bartow SS120-60805 (item 2), 8in WL FIRE + three 2in DOM. LINE segment labels (item 5), FH MUELLER SUPER CENTURION 250 A421 6in MJ 2026 at the east end of the fire run (item 6), 6in GV on its valve (item 7). Paper space 22X17: development-units note grouped with the sheet notes (item 8). Item 4 ignored per user. Placements derived from the surveyed vault/run geometry in C3D-H2OREAD; verified by read-back, regen last.
C# payload
// 260612 C-Store H2O - new water labels per the HCWA redline (fresh version, 260828).
// NEW MText only - nothing existing is edited (user: "just make new labels i can see everything").
// Model labels: h=3.0 on WATER_LINE_TEXT, same pattern as the sewer line text.
// Geometry these placements came from (read C3D-H2OREAD):
// TSV = WV #465 (2296380.20,1280018.52), westernmost valve at the Springdale Rd main
// meter vault poly 2E2BE (2296400.6..2296413.5 x 1280015.0..1280022.9) ~13'x8'
// BFP vault poly 2E2BD (2296417.1..2296425.6 x 1280022.0..1280028.4) ~8.4'x5.9'
// 2" RPZ corners #1122-#1125 (2296417.3..2296421.0 x 1280016.1..1280018.1) - SURVEYED
// fire run line 2F5C9 (2296425.58,1280025.44)->(2296543.09,1280020.37) 118.7'
// DOM run poly 2F5C4: vault -> east to (2296555.7,1280015.3) -> north -> bldg (2296654.8,1280082.0)
// hydrant FH #408 (2296542.17,1280022.08), its valve WV #409 (2296543.09,1280020.37)
// Redline items covered: 1 meter, 2 BFP, 3 RPZ (surveyed as built), 5 segment sizes, 6 hydrant,
// 7 TSV + valve size, 8 development-units note (paper space). Item 4 ignored per the user.
var lt = (LayerTable)Tx.GetObject(Db.LayerTableId, OpenMode.ForRead);
if (!lt.Has("WATER_LINE_TEXT")) { Log("layer WATER_LINE_TEXT missing"); return; }
var ms = (BlockTableRecord)Tx.GetObject(SymbolUtilityServices.GetBlockModelSpaceId(Db), OpenMode.ForWrite);
int made = 0;
Func<double,double,double,string,ObjectId> put = (x, y, w, txt) => {
var mt = new MText();
mt.SetDatabaseDefaults();
mt.TextHeight = 3.0;
mt.Location = new Point3d(x, y, 0);
if (w > 0) mt.Width = w;
mt.Layer = "WATER_LINE_TEXT";
mt.Contents = txt;
ms.AppendEntity(mt);
Tx.AddNewlyCreatedDBObject(mt, true);
made++;
var back = (MText)Tx.GetObject(mt.ObjectId, OpenMode.ForRead);
Log(string.Format("[{0}] ({1:F1},{2:F1}) \"{3}\"", back.Handle, x, y, txt.Replace("\\P", " / ")));
return mt.ObjectId;
};
Log("drawing: " + Db.Filename);
// 7 - the tapping sleeve & valve at the Springdale Rd main
put(2296340, 1280000, 60, @"8"" TSV (TAPPING SLEEVE & VALVE)\PON EXIST. 8"" DIP WL");
// 5 - tap to meter run
put(2296385, 1280027, 0, @"8"" WL");
put(2296388, 1280009, 0, @"8""x6"" REDUCER");
// 1 - the master meter (replaces the stale 6" FIRE & 2" DOM. METERS wording)
put(2296385, 1279978, 62, @"8""x2"" MASTER METER OCTAVE\PULTRASONIC METER W/ BYPASS\P12'x7'x6' SURESPEC VAULT (BARTOW SS120-61207)");
// 3 - the 2" RPZ, surveyed as built (corners 1122-1125)
put(2296424, 1280010, 0, @"2"" RPZ BFP (DOM.)");
// 2 - the fire BFP (shop dwg is 8", not 6")
put(2296428, 1280052, 62, @"8"" ZURN WILKINS 350AST\PDOUBLE-CHECK ASSEMBLY (OSY GATES)\P8'x5'x6' SURESPEC VAULT (BARTOW SS120-60805)");
// 5 - the fire run and DOM segments
put(2296470, 1280012, 0, @"8"" WL (FIRE)");
put(2296490, 1280000, 0, @"2"" DOM. LINE");
put(2296565, 1280040, 0, @"2"" DOM. LINE");
put(2296610, 1280085, 0, @"2"" DOM. LINE TO BLDG");
// 6 - the hydrant at the east end of the fire run, with manufacturer + year per HCWA
put(2296550, 1280010, 62, @"FH: MUELLER SUPER CENTURION 250\P(A421, 6"" MJ), 2026");
// 7 - size on the hydrant's gate valve
put(2296547, 1280027, 0, @"6"" GV");
// 8 - development units note, paper space on 22X17, grouped with the sheet notes
var bt = (BlockTable)Tx.GetObject(Db.BlockTableId, OpenMode.ForRead);
foreach (ObjectId btrId in bt) {
var rec0 = (BlockTableRecord)Tx.GetObject(btrId, OpenMode.ForRead);
if (!rec0.IsLayout) continue;
var lay = (Layout)Tx.GetObject(rec0.LayoutId, OpenMode.ForRead);
if (lay.LayoutName != "22X17") continue;
var rec = (BlockTableRecord)Tx.GetObject(btrId, OpenMode.ForWrite);
var note = new MText();
note.SetDatabaseDefaults();
note.TextHeight = 0.08;
note.Location = new Point3d(23.525, 5.30, 0);
note.Width = 2.3;
note.Layer = "BLOCK_CLOSURE";
note.Contents = @"No. OF DEVELOPMENT UNITS:\P1 COMMERCIAL (C-STORE)";
rec.AppendEntity(note);
Tx.AddNewlyCreatedDBObject(note, true);
made++;
Log(string.Format("[{0}] 22X17 paper (23.525,5.30) development-units note", note.Handle));
}
Log("labels created: " + made + " (verified by read-back above)");
Ed.Regen();
Result
Log
drawing: C:\Users\sanja\OneDrive\_SurveyDisco\260613 - 5030 E Lake Pkwy, Stockbridge, GA 30281, USA\260612-C-Store Sewer As-Built 60 H2O.dwg [302E0] (2296340.0,1280000.0) "8" TSV (TAPPING SLEEVE & VALVE) / ON EXIST. 8" DIP WL" [302E1] (2296385.0,1280027.0) "8" WL" [302E2] (2296388.0,1280009.0) "8"x6" REDUCER" [302E3] (2296385.0,1279978.0) "8"x2" MASTER METER OCTAVE / ULTRASONIC METER W/ BYPASS / 12'x7'x6' SURESPEC VAULT (BARTOW SS120-61207)" [302E4] (2296424.0,1280010.0) "2" RPZ BFP (DOM.)" [302E5] (2296428.0,1280052.0) "8" ZURN WILKINS 350AST / DOUBLE-CHECK ASSEMBLY (OSY GATES) / 8'x5'x6' SURESPEC VAULT (BARTOW SS120-60805)" [302E6] (2296470.0,1280012.0) "8" WL (FIRE)" [302E7] (2296490.0,1280000.0) "2" DOM. LINE" [302E8] (2296565.0,1280040.0) "2" DOM. LINE" [302E9] (2296610.0,1280085.0) "2" DOM. LINE TO BLDG" [302EA] (2296550.0,1280010.0) "FH: MUELLER SUPER CENTURION 250 / (A421, 6" MJ), 2026" [302EB] (2296547.0,1280027.0) "6" GV" [302EC] 22X17 paper (23.525,5.30) development-units note labels created: 13 (verified by read-back above)
Notes
What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.
No notes yet.