C3D-0420 · READ-ONLY: frontage arc, road/RW points and layers [C3D-ROADREAD] done
Reads all model-space arcs (center/radius/endpoints/layer), polylines containing bulge segments, any road/CL/RW/EP CogoPoints, and road/right-of-way layers - so the 100' R/W road and its 'Christmas Ave (100' R/W)' label can be drawn from the real frontage geometry.
C# payload
// Find the frontage arc (the road side) and any road/CL/RW points, so a 100' R/W and a
// "Christmas Ave (100' R/W)" label can be placed FROM the real geometry, not guessed.
var civ = Autodesk.Civil.ApplicationServices.CivilApplication.ActiveDocument;
Log("drawing: " + Db.Filename);
var ms = (BlockTableRecord)Tx.GetObject(SymbolUtilityServices.GetBlockModelSpaceId(Db), OpenMode.ForRead);
// arcs in model space (frontage curve is an arc) - report center, radius, endpoints, layer
Log("=== ARCS ===");
int arcs=0;
foreach (ObjectId id in ms){
var a=Tx.GetObject(id,OpenMode.ForRead) as Arc;
if(a==null) continue;
arcs++;
Log(string.Format(" [{0}] layer={1} R={2:F2} len={3:F2} center=({4:F2},{5:F2}) start=({6:F2},{7:F2}) end=({8:F2},{9:F2})",
a.Handle, a.Layer, a.Radius, a.Length, a.Center.X, a.Center.Y, a.StartPoint.X, a.StartPoint.Y, a.EndPoint.X, a.EndPoint.Y));
}
Log(" arc count: " + arcs);
// polylines with arc segments (boundary is often one pline)
Log("=== POLYLINES with bulge segments ===");
foreach (ObjectId id in ms){
var pl=Tx.GetObject(id,OpenMode.ForRead) as Polyline;
if(pl==null) continue;
bool hasArc=false; for(int i=0;i<pl.NumberOfVertices;i++) if(System.Math.Abs(pl.GetBulgeAt(i))>1e-6) hasArc=true;
if(!hasArc) continue;
Log(string.Format(" [{0}] layer={1} verts={2} len={3:F1} closed={4}", pl.Handle, pl.Layer, pl.NumberOfVertices, pl.Length, pl.Closed));
for(int i=0;i<pl.NumberOfVertices;i++){ double b=pl.GetBulgeAt(i); if(System.Math.Abs(b)>1e-6){ var p=pl.GetPoint2dAt(i); Log(string.Format(" v{0} ({1:F2},{2:F2}) bulge={3:F4}", i, p.X, p.Y, b)); } }
}
// road / CL / RW / christmas related points
Log("=== road-ish points ===");
foreach (ObjectId id in civ.CogoPoints){
var p=(Autodesk.Civil.DatabaseServices.CogoPoint)Tx.GetObject(id,OpenMode.ForRead);
string d=(p.RawDescription??"").ToUpper();
if(d.Contains("RW")||d.Contains("R/W")||d.Contains("ROAD")||d.Contains("CL")||d.Contains("EP")||d.Contains("PVMT")||d.Contains("CHRISTMAS")||d.Contains("CENTER"))
Log(string.Format(" {0,5} E={1:F2} N={2:F2} \"{3}\"", p.PointNumber, p.Easting, p.Northing, p.RawDescription));
}
// layers that look road/rw
Log("=== road/RW layers ===");
var lt=(LayerTable)Tx.GetObject(Db.LayerTableId,OpenMode.ForRead);
foreach (ObjectId id in lt){ var l=(LayerTableRecord)Tx.GetObject(id,OpenMode.ForRead); string n=l.Name.ToUpper(); if(n.Contains("ROAD")||n.Contains("RW")||n.Contains("RIGHT")||n.Contains("R-O-W")||n.Contains("CL")) Log(" "+l.Name); }
Result
Log
drawing: C:\Users\sanja\OneDrive\_SurveyDisco\260903 - 812 Christmas Ave, Bethlehem, GA 30620, USA\812 Christmas Ave.dwg
=== ARCS ===
arc count: 0
=== POLYLINES with bulge segments ===
[20CC8] layer=X-DRIV-CONC verts=23 len=490.0 closed=True
v0 (2206284.68,1207157.80) bulge=-0.1902
v3 (2206326.94,1207113.43) bulge=0.1014
v9 (2206381.52,1207084.38) bulge=-0.1792
v10 (2206355.57,1207096.37) bulge=-0.0753
v12 (2206321.41,1207147.33) bulge=0.2745
v21 (2206270.75,1207143.90) bulge=-0.2040
[20CCC] layer=SS-V-WALK verts=14 len=132.8 closed=False
v1 (2206284.68,1207157.80) bulge=-0.1575
v4 (2206289.26,1207109.51) bulge=-0.2579
v5 (2206284.79,1207102.78) bulge=-0.0930
v9 (2206280.16,1207108.83) bulge=0.3339
v12 (2206284.67,1207146.27) bulge=0.1872
[20CCE] layer=V-STRC-WALL verts=6 len=44.6 closed=False
v1 (2206382.13,1207034.91) bulge=0.1784
v2 (2206384.89,1207037.61) bulge=0.1974
v3 (2206385.58,1207049.50) bulge=0.1488
v4 (2206377.45,1207058.74) bulge=0.1488
[20CCF] layer=V-STRC-WALL verts=6 len=41.4 closed=False
v0 (2206370.50,1207106.55) bulge=0.1464
v1 (2206379.44,1207105.35) bulge=0.2138
v2 (2206384.58,1207107.83) bulge=0.0868
v3 (2206387.20,1207116.97) bulge=0.0917
v4 (2206386.42,1207128.66) bulge=0.0917
[20D23] layer=V-STRC-WALL verts=6 len=38.8 closed=False
v0 (2206370.91,1207107.46) bulge=0.1475
v1 (2206379.35,1207106.35) bulge=0.2113
v2 (2206383.74,1207108.38) bulge=0.0856
v3 (2206386.21,1207117.08) bulge=0.0918
v4 (2206385.45,1207128.42) bulge=0.0917
v5 (2206383.49,1207132.65) bulge=0.0917
[20D32] layer=V-STRC-WALL verts=6 len=41.4 closed=False
v1 (2206381.91,1207035.91) bulge=0.1670
v2 (2206383.99,1207038.04) bulge=0.1966
v3 (2206384.65,1207049.13) bulge=0.1482
v4 (2206376.93,1207057.89) bulge=0.1488
v5 (2206364.75,1207061.11) bulge=0.1488
[2242A] layer=BOUNDARY verts=5 len=1408.2 closed=True
v4 (2199682.40,1207298.05) bulge=0.0456
=== road-ish points ===
100 E=2206399.69 N=1207049.65 "DWY EP"
101 E=2206401.30 N=1207087.23 "DWY EP"
102 E=2206413.23 N=1207086.53 "CL"
103 E=2206424.23 N=1207086.03 "EP"
139 E=2206277.67 N=1207100.85 "SW STEP"
140 E=2206277.53 N=1207108.89 "SW STEP"
149 E=2206235.30 N=1207075.13 "CLEAN OUT"
153 E=2206218.61 N=1207119.24 "DECK COR STEP"
154 E=2206218.39 N=1207124.49 "STEP"
155 E=2206221.94 N=1207124.52 "STEP"
349 E=2206406.54 N=1206888.33 "CL"
350 E=2206409.86 N=1206994.51 "CL"
351 E=2206411.48 N=1207040.77 "CL"
352 E=2206413.49 N=1207092.56 "CL"
353 E=2206415.05 N=1207135.82 "CL"
354 E=2206417.23 N=1207207.39 "CL"
355 E=2206418.92 N=1207267.69 "CL"
356 E=2206419.79 N=1207305.16 "CL"
357 E=2206420.87 N=1207345.77 "CL"
362 E=2206410.17 N=1207386.49 "EP"
363 E=2206407.93 N=1207303.24 "EP"
400 E=2206405.96 N=1207225.44 "EP"
401 E=2206402.70 N=1207124.26 "EP"
2001 E=2206408.65 N=1206953.52 "CL"
2002 E=2206408.50 N=1206953.45 "CL"
2222 E=2206399.53 N=1207050.16 "EP"
2223 E=2206398.36 N=1207007.39 "EP"
2224 E=2206395.82 N=1206932.94 "EP"
2225 E=2206394.49 N=1206887.93 "EP"
2226 E=2206393.78 N=1206863.75 "EP"
2227 E=2206393.70 N=1206859.53 "EP"
2228 E=2206393.54 N=1206859.79 "EP"
2229 E=2206393.77 N=1206859.66 "EP"
2230 E=2206393.37 N=1206841.98 "EP"
2231 E=2206392.68 N=1206812.26 "EP"
2232 E=2206391.92 N=1206782.46 "EP"
2233 E=2206416.17 N=1206782.54 "EP"
2234 E=2206416.89 N=1206837.94 "EP"
2235 E=2206417.72 N=1206866.66 "EP"
2236 E=2206419.86 N=1206924.88 "EP"
2237 E=2206421.13 N=1206975.76 "EP"
2238 E=2206422.68 N=1207022.04 "EP"
2239 E=2206424.34 N=1207060.87 "EP"
=== road/RW layers ===
C-ROAD-ASSM
C-ROAD-ASSM-BLIN
C-ROAD-ASSM-OFFS
C-ROAD-ASSM-TEXT
C-ROAD-BRNG
C-ROAD-CNTR
C-ROAD-CORR
C-ROAD-CORR-BNDY
C-ROAD-FEAT
C-ROAD-LABL
C-ROAD-LINE-EXTN
C-ROAD-LINK
C-ROAD-LINK-TEXT
C-ROAD-MARK
C-ROAD-PROF
C-ROAD-PROF-DIAG
C-ROAD-PROF-GRID-GEOM
C-ROAD-PROF-GRID-MAJR
C-ROAD-PROF-GRID-MINR
C-ROAD-PROF-LINE-EXTN
C-ROAD-PROF-PNTS
C-ROAD-PROF-STAN-MAJR
C-ROAD-PROF-STAN-MINR
C-ROAD-PROF-TEXT
C-ROAD-PROF-TICK
C-ROAD-PROF-TITL
C-ROAD-PROF-TTLB
C-ROAD-SAMP
C-ROAD-SAMP-TEXT
C-ROAD-SECT
C-ROAD-SECT-DIAG
C-ROAD-SECT-GRID
C-ROAD-SECT-TEXT
C-ROAD-SECT-TICK
C-ROAD-SECT-TITL
C-ROAD-SECT-TTLB
C-ROAD-SHAP
C-ROAD-SHAP-PATT
C-ROAD-STAN
C-ROAD-STAN-MAJR
C-ROAD-STAN-MINR
C-ROAD-PROF-STAN-GEOM
C-ROAD-PROF-GRID
C-ROAD-SECT-TABL
C-ROAD-TABL
C-ROAD-CORR-PATT
C-ROAD-SECT-LABL
C-ESMT-ROAD
C-ROAD-CNTR-N
C-ROAD-LINE
C-ROAD-CURV
C-ROAD-SPIR
C-ROAD-TEXT
C-ROAD-PROF-LTOF
C-ROAD-PROF-RTOF
C-ROAD-PROF-PROP
C-ROAD-PROF-LINE
C-ROAD-PROF-CURV
C-ROAD-PROF-PARB
C-ROAD-PROF-ASMC
C-ROAD-SECT-N
C-ROAD-SECT-SHET
SS-V-ROAD-CURB
SS-V-ROAD-CNTR
C-ROAD-MASS-LINE-N
C-ROAD-MASS-LINE
C-ROAD-MASS-LINE-FREE
C-ROAD-MASS-LINE-OVER
C-ROAD-MASS-VIEW-TITL
C-ROAD-MASS-VIEW-TTLB
C-ROAD-MASS-VIEW-TEXT
C-ROAD-MASS-VIEW-GRID-MAJR
C-ROAD-MASS-VIEW-GRID-MINR
C-ROAD
C-ROAD-MASS-VIEW
C-ROAD-PROF-LABL
C-ROAD-PROF-PROJ
C-ROAD-SECT-PROJ
C-ROAD-INTS
C-ROAD-INTS-TEXT
C-ROAD-SELV-VIEW
C-ROAD-SELV-VIEW-TEXT
C-ROAD-SELV-VIEW-TITL
C-ROAD-SELV-VIEW-TTLB
C-ROAD-SELV-VIEW-TICK
C-ROAD-SGHT-EYE-PATH
C-ROAD-SGHT-LIMT-LINE
C-ROAD-SGHT-OBST-AREA
C-ROAD-SGHT-OBST-LINE
C-ROAD-SGHT-OBST-PATH
C-ROAD-SGHT-VIS-LINE
C-ROAD-SECT-BUFR
SS-V-ROAD-EPVM
X-ROAD
X-ROAD-ASPH
X-ROAD-CURB
SS-CL OF CREEK
CLOSURE
BLOCK_CLOSURE
SS-V-POWER-CL
ROAD_RIGHT-OF-WAYNotes
What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.
No notes yet.