C3D-0029 · 20ft easement A4 to A1 [EASE-20] done
Draws the 20ft sanitary sewer easement from A4 to A1 (via A3, A2) as a single closed polyline on SEWER_EASEMENT, offset 10ft each side of the centerline. Area 11882 sf / 0.273 ac.
C# payload
// 20ft sanitary sewer easement, A4 -> A1, as ONE CLOSED POLYLINE (HCWA: easements must be
// closed polygons).
//
// Centerline is the sewer main run continuing where the 30ft easement stopped:
// A4 (pt 380) -> A3 (pt 381) -> A2 (pt 382) -> A1 (pt 383) 594.12 ft
// Offset 10.0ft each side = 20ft easement. Corners mitred; the ring runs up the left side and
// back down the right, closing at both ends.
// Computed area 11882 sf = 0.273 ac.
//
// ADDS ONLY. 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(2296987.0551, 1279919.8181), 0, 0, 0);
pl.AddVertexAt(1, new Point2d(2297258.8895, 1279680.6770), 0, 0, 0);
pl.AddVertexAt(2, new Point2d(2297276.5875, 1279608.8471), 0, 0, 0);
pl.AddVertexAt(3, new Point2d(2297421.6045, 1279628.6877), 0, 0, 0);
pl.AddVertexAt(4, new Point2d(2297424.3155, 1279608.8723), 0, 0, 0);
pl.AddVertexAt(5, new Point2d(2297261.4725, 1279586.5929), 0, 0, 0);
pl.AddVertexAt(6, new Point2d(2297240.9705, 1279669.8030), 0, 0, 0);
pl.AddVertexAt(7, new Point2d(2296973.8449, 1279904.8019), 0, 0, 0);
pl.Closed = true;
pl.Layer = LAYER;
ms.AppendEntity(pl);
Tx.AddNewlyCreatedDBObject(pl, true);
Log("20ft easement A4->A1: " + 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
20ft easement A4->A1: 8 verts, closed=True, perimeter 1228.24 ft, area 11,882 sf = 0.273 ac (verified)
Notes
What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.
No notes yet.