C3D-0027 · 30ft easement as one closed polyline [EASE-RING] done
Draws the 30ft sewer easement as a single CLOSED polyline (HCWA requires closed polygons): 20 verts around the main leg 473->A4 plus the 6in PVC stub at A12. Computed area 24,159 sf / 0.555 ac.
C# payload
// 30ft sewer easement as ONE CLOSED POLYLINE - HCWA requires easements to be closed polygons
// ("All easements (existing and abandoned) must be shown on their layer. Easements must be
// closed polygons.").
//
// The previous attempt drew four separate open offset edges; this replaces that with a single
// closed ring.
//
// Centerline (30ft wide, 15ft each side), BRANCHING at A12:
// * main leg 473 -> 424 -> A12 -> A10 -> A9 -> A6 -> A5 -> A4 754.36 ft
// * 6" PVC stub arriving at A12 from the NW 55.10 ft
// Test-MH connectors excluded (h=2E95F, h=2EC92). Nothing past A4.
//
// Ring traversal: left side 473->A12, around the stub end, left side A12->A4, across the A4
// end, then the right side back to 473. Corners mitred.
// Computed area 24,159 sf = 0.555 ac (main 754.36x30 + stub 55.10x30 = ~24,284 sf before mitre
// losses) - the geometry is sane before posting.
//
// ADDS ONLY - the earlier open edges are the user's to clear.
// Host owns Tx; host regens after commit.
const string LAYER = "SEWER_EASEMENT";
var ms = (BlockTableRecord)Tx.GetObject(SymbolUtilityServices.GetBlockModelSpaceId(Db), OpenMode.ForWrite);
EnsureLayer(LAYER, 3);
var pl = new Polyline();
pl.AddVertexAt(0, new Point2d(2296380.0863, 1279968.5181), 0, 0, 0);
pl.AddVertexAt(1, new Point2d(2296505.0714, 1279966.5492), 0, 0, 0);
pl.AddVertexAt(2, new Point2d(2296598.3952, 1280061.2218), 0, 0, 0);
pl.AddVertexAt(3, new Point2d(2296602.8589, 1280031.3073), 0, 0, 0);
pl.AddVertexAt(4, new Point2d(2296548.1489, 1280037.8873), 0, 0, 0);
pl.AddVertexAt(5, new Point2d(2296551.7311, 1280067.6727), 0, 0, 0);
pl.AddVertexAt(6, new Point2d(2296606.4411, 1280061.0927), 0, 0, 0);
pl.AddVertexAt(7, new Point2d(2296696.6972, 1280060.8801), 0, 0, 0);
pl.AddVertexAt(8, new Point2d(2296715.6590, 1280043.9778), 0, 0, 0);
pl.AddVertexAt(9, new Point2d(2296830.4026, 1280115.6444), 0, 0, 0);
pl.AddVertexAt(10, new Point2d(2296890.2110, 1280043.8255), 0, 0, 0);
pl.AddVertexAt(11, new Point2d(2296991.9655, 1279921.9221), 0, 0, 0);
pl.AddVertexAt(12, new Point2d(2296968.9345, 1279902.6979), 0, 0, 0);
pl.AddVertexAt(13, new Point2d(2296867.1690, 1280024.6145), 0, 0, 0);
pl.AddVertexAt(14, new Point2d(2296824.0974, 1280076.3356), 0, 0, 0);
pl.AddVertexAt(15, new Point2d(2296712.4810, 1280006.6222), 0, 0, 0);
pl.AddVertexAt(16, new Point2d(2296685.2228, 1280030.9199), 0, 0, 0);
pl.AddVertexAt(17, new Point2d(2296610.9048, 1280031.1782), 0, 0, 0);
pl.AddVertexAt(18, new Point2d(2296517.4286, 1279936.3508), 0, 0, 0);
pl.AddVertexAt(19, new Point2d(2296379.6137, 1279938.5219), 0, 0, 0);
pl.Closed = true;
pl.Layer = LAYER;
ms.AppendEntity(pl);
Tx.AddNewlyCreatedDBObject(pl, true);
Log("easement polygon: " + pl.NumberOfVertices + " verts, closed=" + pl.Closed +
", perimeter " + pl.Length.ToString("F2") + " ft, area " + pl.Area.ToString("N0") + " sf = " +
(pl.Area/43560.0).ToString("F3") + " ac (verified)");
Result
Log
easement polygon: 20 verts, closed=True, perimeter 1731.12 ft, area 24,159 sf = 0.555 ac (verified)
Notes
What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.
No notes yet.