@microelly2: I took a look at the sketchlib templates that you've developed. It's off to a good start!
Really, I think the geometry is well-constrained and isn't overly complex.
As for templates to develop, I really see only a few key templates as necessary:
1. A simple curve (with two tangents)
2. A 2-center curve (two simple curves in series, in the same direction)
3. A 3-center curve (three simple curves in series with an over-arching pair of tangents which span all three curves)
4. A spiral curve (A special 3-center curve with two tangent sections on either side)
5. Possibly a tangent template? It's just a line, but it may facilitate other cleanup work to wrap it in a template...
6. Default alignment layouts for special designs like interchanges / roundabouts (see https://en.wikipedia.org/wiki/Interchange_(road)
Referring to the screenshot, I just wanted to put down a few notes about what it would take to make this a viable horizontal design tool (and, by extension, the vertical design tool as well). Referring to the screenshot:
1. The parallel and equal-length constraints should be hidden. Equal-length tangents are assumed by default, except in cases of compound (2 / 3-center curves).
2. Blocking constraints should be applied to all tangents by default. Dragging a tangent line should release the block constraint on it and it's adjacent tangents. Dragging a tangent PI (point of intersection) should release the block constraints on the adjacent tangents. Releasing either one should re-apply the block constraints. To that end, I've managed to get dragging to work in the 3D view, but not inside Sketcher...
3. Need to add radius control tangent - basically a line added on the tangent layer that's orthogonal to the curve tangents and extends from the endpoint of the curve to it's center point.
4. Need to default to a kilometer / mile scale with resolution down to the nearest hundredth of a foot (centimeter) or thousandth of a foot (millimeter).
5. Need to implement stationing.
Anyway, not much of this is critical for a proof-of-concept release, but they do represent how close we are to something potentially useful (IMO).
I should probably do some work on the github milestones and issues to target the features for a proof-of-concept release...
I'm going to look into your approach and try to understand it better. I'd like to be able to contribute to the templates as well...