C3D-EPCHK · Check EP / R-W / water feature points (read-only) done
Determine whether ROAD_EDGE_OF_PAVEMENT can be built from surveyed EP, and map water structures
C# payload
// Read-only: EP (edge of pavement) points + R/W + water-feature codes, to answer whether
// HCWA's ROAD_EDGE_OF_PAVEMENT (explicitly "not back of curb") can be built from surveyed EP.
var cd = CivilDoc; var cps = cd.CogoPoints;
var eps = new List<(uint,string,double,double)>();
var rw = new List<(uint,string,double,double)>();
var wat = new List<(uint,string,double,double)>();
foreach (ObjectId id in cps) {
var cp = (Autodesk.Civil.DatabaseServices.CogoPoint)Tx.GetObject(id, OpenMode.ForRead);
var r = (cp.RawDescription ?? "").Trim(); var u = r.ToUpperInvariant();
var tup = (cp.PointNumber, r, cp.Easting, cp.Northing);
if (u == "EP" || u == "EP TBC") eps.Add(tup);
if (u.Contains("R\\W") || u.Contains("R/W")) rw.Add(tup);
if (u.StartsWith("FH") || u.StartsWith("WV") || u.Contains("WATER VAULT") || u.Contains("VAULT COR")
|| u.Contains("RPZ") || u.Contains("BOX COR") || u == "WATER") wat.Add(tup);
}
Log("--- EP points ---");
foreach (var p in eps.OrderBy(x => x.Item1)) Log($" #{p.Item1} '{p.Item2}' E={p.Item3:F2} N={p.Item4:F2}");
Log("--- R/W points ---");
foreach (var p in rw.OrderBy(x => x.Item1)) Log($" #{p.Item1} '{p.Item2}' E={p.Item3:F2} N={p.Item4:F2}");
Log("--- water feature points ---");
foreach (var p in wat.OrderBy(x => x.Item1)) Log($" #{p.Item1} '{p.Item2}' E={p.Item3:F2} N={p.Item4:F2}");
Log($"EP={eps.Count} RW={rw.Count} WATER={wat.Count}");
Result
Log
--- EP points --- #1003 'EP' E=2296961.71 N=1280286.01 #1014 'EP' E=2296965.32 N=1280367.57 #1016 'EP' E=2296902.16 N=1280368.34 #1026 'EP' E=2296898.03 N=1280286.47 #1027 'EP' E=2296867.30 N=1280286.71 #1047 'EP' E=2296809.16 N=1280287.35 #1048 'EP' E=2296833.57 N=1280277.55 #1049 'EP TBC' E=2296816.50 N=1280274.91 --- R/W points --- #1002 'R\W' E=2296946.81 N=1280252.19 --- water feature points --- #1085 'WATER' E=2296695.40 N=1280036.51 #1091 'BOX COR' E=2296682.35 N=1280016.11 #1092 'BOX COR' E=2296682.50 N=1280014.48 #1093 'BOX COR' E=2296679.85 N=1280014.13 #1115 'FH' E=2296377.44 N=1280101.12 #1116 'WV' E=2296376.28 N=1280101.54 #1117 'WV' E=2296380.29 N=1280018.48 #1118 'VAULT COR' E=2296400.69 N=1280014.91 #1119 'WATER VAULT' E=2296400.61 N=1280022.87 #1120 'VAULT COR' E=2296413.49 N=1280022.93 #1121 'VAULT COR' E=2296413.54 N=1280014.99 #1122 '2 IN RPZ BFP COR' E=2296420.97 N=1280016.39 #1123 '2 IN RPZ BFP COR' E=2296420.94 N=1280018.11 #1124 '2 IN RPZ BFP COR' E=2296417.27 N=1280017.76 #1125 '2 IN RPZ BFP COR' E=2296417.61 N=1280016.13 #1126 'VAULT COR' E=2296425.57 N=1280028.34 #1127 'VAULT COR' E=2296425.61 N=1280022.42 #1128 'VAULT COR' E=2296416.67 N=1280022.41 #1129 'WATER VAULT' E=2296416.67 N=1280028.30 #1130 'WV' E=2296543.16 N=1280020.41 #1131 'FH' E=2296542.38 N=1280022.07 EP=8 RW=1 WATER=21
Notes
What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.
No notes yet.