← Inbox

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.

Script file
C3D-0420.cs
Target
812 Christmas Ave.dwg · model space
Author
claude
Approved
yes · auto-auth
Timeout
120s

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

Status
success
Drawing file
C:\Users\sanja\OneDrive\_SurveyDisco\260903 - 812 Christmas Ave, Bethlehem, GA 30620, USA\812 Christmas Ave.dwg
Message
Executed C3D-0420 (0 entities touched).
Entities
Duration
429 ms
Civil 3D
25.0.0.0

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-WAY

Notes

What worked, what didn't, job-specific gotchas — flagged notes feed the recipes.

No notes yet.