Intersection corners of lines (streets of a city)

Hello everyone, I have a great concern, about how to make rounded corners where the lines intersect, something similar is the intersection corners of a road.

For this case I am using Spline with an offset of 1 meter on each side and the radios of the corners I want to set to 2 meters

corners 2

This assumes your initial centerlines are planar.

  1. Instead of offsetting the curve, use a Polycurve.ByThickeningCurveRadius node.
  2. Patch those curves into a surface with a Surface.ByPatch node.
  3. Combine the surfaces into a single surface with a Surface.ByUnion node.
  4. Pull the perimeter curves of the surface. At this point the curves where the roadways cross will be trimmed, but you won’t yet be filleted.
  5. Group the curves into curve loops (Archilab’s GroupCurves node works well, if you can’t use that you can search the forum for ‘group curves’ as there are several solutions for this), and build a polycurve of each group.
  6. Use a Polycurve.Fillet node to fillet the surfaces. You may need to utilize two of them in sequence, one with the RightSide input set to true and the other set to false.

If step 5 is too difficult, you could go another route:

  1. Same as above
  2. Same as above
  3. Same as above
  4. Thicken the surface in one direction (Surface.Thicken)
  5. Pull the edges (Topography.Edges) of the solid.
  6. Convert the edges to curves (Edge.CurveGeometry)
  7. For each curve. Pull the point at parameter 0.5, and quarry the Z value (Curve.PointAtParameter, Point.Z).
  8. Group the edges (step 5) by the Z values, and sort the groups by the unique keys (List.GroupByKey and List.SortByKey - I believe you’ll want @L3 and @L2 for the inputs to sort by key, but I may be mistaken).
  9. From the sorted groups, pull the item at index 1. These are the edges which make the vertical faces of the solid.
  10. Use a Solid.FIllet node to fillet the extruded solid (step 4) by the edges pulled in step 9.
  11. Explode the solid to get the component faces, and pull the bottom surface from the list (the surface who’s normal is 0,0,-1 will the one you want, so you can test that to filter the list of surfaces).
1 Like