abdullah wrote:Possible solutions:
a) A tool to delete one pole.
Have you looked at the Draft BSpline? The Draft Modifying toolbar includes
add point and
delete point tools. Their use is pretty user-friendly. In this case since the Draft BSpline is created from knots on the curve, you click on an existing knot to delete it, or you click somewhere along the curve to add a knot there.
Your option a) is what I would expect as an end user.
But IMHO your list is missing an option: adding a pole to an existing B-spline. I'm not sure if it would be possible to insert a pole between two existing ones? Either
- with the tool active, the user clicks on the B-spline and a pole is added in the area (trying to keep the resulting curve as close to the original as possible?), or
- the user selects two poles and a new pole is added between them. (might be more in line with the traditional Sketcher work flow)
Add/remove poles are tools commonly available in other CAD software that provide B-spline creation.
I don't see b) c) and d) as alternatives, but as additional tools that could each have their purpose. But IMO they would be lower priority than add/remove pole tools.
abdullah wrote:d) A tool that given a bspline approximates the Bspline using a "lower degree" or "lower amount of poles".
Might this tool also allow the reverse, that is raise the degree/raise amount of poles?
abdullah wrote:2. It is a nightmare to lock these beasts.
I think the nature of a sketch solver makes this unavoidable. It is the same problem I've seen in the commercial CAD software I use at work. Which is why most of the time, I don't follow my own advice where B-splines are concerned, and I leave them unconstrained.
Talking about the nameless commercial CAD program I always mention, in its Sketcher the lock constraint acts differently than in FreeCAD. Rather than adding vertical and horizontal distance constraints from a vertex to the sketch origin, it literally locks/freezes the geometry in place. If a vertex is selected, then this point is locked in place and cannot be moved; if a segment (line, arc, circle, segment of a rectangle) is selected when creating the lock constraint, then the segment itself is locked/frozen. I wonder if the latter behaviour could be added to the existing lock constraint as an alternative to locking a vertex. It could apply to any type of segment... But maybe that would be opening a whole can of worms?