Welcome to the Onshape forum! Ask questions and join in the discussions about everything Onshape.
First time visiting? Here are some places to start:- Looking for a certain topic? Check out the categories filter or use Search (upper right).
- Need support? Ask a question to our Community Support category.
- Please submit support tickets for bugs but you can request improvements in the Product Feedback category.
- Be respectful, on topic and if you see a problem, Flag it.
If you would like to contact our Community Manager personally, feel free to send a private message or an email.
Curvature handles on spline points
There is the Curvature constraint since OS 1.98 (20190618 - https://forum.onshape.com/discussion/11865/improvements-to-onshape-june-18th-2019/p1). I hoped to get a wish fulfilled, namely: curvature handles on other than end points of a spline. What I like to do is changing the tangency of any point of existing splines.
I tried to add the new curvature constraint to a third spline point between the end points. As expected that did not work. Then I splitted the spline on that point and added the curvature constraint over there. That did not work either.
So the question is now: how to add curvature handles to any spline point of an existing spline to tweak that spline?Best Answers
-
NeilCooke Moderator, Onshape Employees Posts: 5,714@tim_hess427 @Henk_de_V agreed it would at least be nice to be able to split a spline in order to get two splines end to end with handles. Currently, you need some amount of forethought if that is what you want. In my experience, to get truly smooth curves you should not have any internal spline points at all, which would lean you towards creating multiple splines end to end in order to get the shape you want. When you create a spline in systems like SolidWorks, what they are doing in the background is in fact creating multiple end to end splines so that you can get handles on the "internal points". Please create an IR. Perhaps Mr. Spline himself (@paul_chastell) might want to chime in to give a more technically correct answer.
Senior Director, Technical Services, EMEAI5 -
paul_chastell Onshape Employees Posts: 126Not quite Neil @NeilCooke but I believe the results are equivalent to doing that. OK, hold onto your hat and I hope I don't hit some character limit.
What we provide in the Onshape sketcher are interpolated splines where the user can see points on the spline and can see tangent handles at the ends. Underlying that spline is a B-spline which has control points and knots and all that good stuff. The control points are invisible to the users. What Onshape does is add enough, but only just enough, such that if you constrain all the visible points/handles the spline is fully defined with no 'slop'. That's why if I make a three point spline and constrain its end points, the handle end points and the middle point it turns black, it is fully defined.
If I now want to change the slope at the middle point, well I can't, not without removing some of those other constraints, like the tangencies at the ends. If I emulate a handle by adding a line and constraining it to the middle point and adding tangency then you can see the line is fully defined also. If I then make the line horizontal the sketch goes over-defined.
What other CAD systems (I believe) do when you add handles internally is add extra control points to increase the freedom of the spline, rather than join two separate splines together, although you can achieve the same results both ways. That's certainly what Onshape will do when it adds internal handles, which it will at some point. In the case above I can add a spline point, to introduce more freedom and now the tangency is controllable, although adding a point adds 2 degrees-of-freedom and the tangency removes 1 so we have one spare degree of freedom, i.e. that new point can move (along a curve). If we added handles the result would be somewhat different (better).
In truth, if I wanted to control the shape of the spline I wouldn't even add the tangency specifically at that point. Adding tangency between the line and spline NOT at the point gives Onshape more freedom.
I can even apply a similar approach to internal points using circles and curvature, rather than lines and tangency. Like this example. Curvature soaks up more degrees of freedom than tangency and I wouldn't use these as fake drag handles but they could be used to constrain curvature if that is an important design parameter. We have more to do with splines in the sketch and you will see more from Onshape in the future.
The two points I am trying to make with all these words are 1) you can control the internal shape of splines but you may well need to add extra points to give the spline the freedom to satisfy all the requirements, 2) we will provide internal handles at some point to make splines more easily controllable.Paul Chastell
TVP, Onshape R&D9
Answers
HWM-Water Ltd
@NeilCooke,
The problem is that I have existing splines which are defined by the points of a line plan of a boat. https://cad.onshape.com/documents/65f43343a31e4fdbdd4b0a16/w/7abae95f0e3b34d1da4650cb/e/1d9fe5a32a43bc2bda5e6de7
Your solution assumes that during sketching you know where the splines have to be curvature constrained, but as you can see that does not work for me because the imperfections only appear as the whole ship hull is ready. To get a proper hull I need the curvature handles only at some specific spline points.
Also because of the (earlier) absence of them I paused the modelling of the boat design. By using the new curvature constraint with your work-around I can continue now but I need to replace the improper spline by two or more separate splines and see how that works out, which is awkward. Always having curvature handles at spline points (e.g. FS360) or afterward adding (and removing) them at specific points would be much more comfortable, flexible and efficient.
What we provide in the Onshape sketcher are interpolated splines where the user can see points on the spline and can see tangent handles at the ends. Underlying that spline is a B-spline which has control points and knots and all that good stuff. The control points are invisible to the users. What Onshape does is add enough, but only just enough, such that if you constrain all the visible points/handles the spline is fully defined with no 'slop'. That's why if I make a three point spline and constrain its end points, the handle end points and the middle point it turns black, it is fully defined.
If I now want to change the slope at the middle point, well I can't, not without removing some of those other constraints, like the tangencies at the ends. If I emulate a handle by adding a line and constraining it to the middle point and adding tangency then you can see the line is fully defined also. If I then make the line horizontal the sketch goes over-defined.
What other CAD systems (I believe) do when you add handles internally is add extra control points to increase the freedom of the spline, rather than join two separate splines together, although you can achieve the same results both ways. That's certainly what Onshape will do when it adds internal handles, which it will at some point. In the case above I can add a spline point, to introduce more freedom and now the tangency is controllable, although adding a point adds 2 degrees-of-freedom and the tangency removes 1 so we have one spare degree of freedom, i.e. that new point can move (along a curve). If we added handles the result would be somewhat different (better).
In truth, if I wanted to control the shape of the spline I wouldn't even add the tangency specifically at that point. Adding tangency between the line and spline NOT at the point gives Onshape more freedom.
I can even apply a similar approach to internal points using circles and curvature, rather than lines and tangency. Like this example. Curvature soaks up more degrees of freedom than tangency and I wouldn't use these as fake drag handles but they could be used to constrain curvature if that is an important design parameter. We have more to do with splines in the sketch and you will see more from Onshape in the future.
The two points I am trying to make with all these words are 1) you can control the internal shape of splines but you may well need to add extra points to give the spline the freedom to satisfy all the requirements, 2) we will provide internal handles at some point to make splines more easily controllable.
TVP, Onshape R&D
As long as the internal handles are not provided I can use or the coupled two point splines idea of @NeilCooke or (for existing splines) your control system with extra entities .
But of course I'm looking forward the moment the internal handles will become available.
@NeilCooke - When creating an IR for that I found an existing one:
https://forum.onshape.com/discussion/9096/handles-on-all-spline-points
TVP, Onshape R&D
I'm not sure why, but the OS team doesn't seem very focused on improving the curve abilities of the product - the real world is mostly curves. Many curved items in this world simply are not parametrically defined, and any attempt to do so imposes severe limitations on the further development of the product after the initial definition. Same thing applies to meshed surfaces.
The new match curvature constraint is a big move forward in developing and manipulating spline shapes, but it needs to go further, and thanks to Paul above for the suggested techniques which do help. But it needs to go further and be streamlined.
I have tried at length to draw smooth flowing boat hulls on OS, but have given up for now. I really hope they get this stuff implemented in a useful way in the foreseeable future, because OS deserves to be successful. IMO It is such a well thought out product, apart from this area. I have total respect for the brains behind the product. I expect in the fullness of time they will provide something which will yet again leave us all smiling as to the elegance, simplicity and ability of the solution.
Remarkable such a common experience.