USER FORUM
(you are viewing a thread; or go back to list of threads)
Instability of lathe surfaces (by Vasil)
Hi, Jonathan!
SolveSpace is one of the best 2D/3D modeling software I've ever seen (simplicity and easy to use is very impressive).
Everything works great except surfaces made by lathe operation. Almost every more or less complex boolean operation with lathe surfaces leads to geometry errors or even segfault of the program.
Triangulation often fails with problems of solving jacobian when number of triangles in surface is higher than several dozens (when N of triangles more than one or two hundreds, solver almost always cannot converge)
Is it possible to make booleans on lathe surfaces more robust? As one possible solution - to use some mature library as NURBS geometry kernel, like SINTEF (http://www.sintef.no).
With best regards,
Vasil
SolveSpace is one of the best 2D/3D modeling software I've ever seen (simplicity and easy to use is very impressive).
Everything works great except surfaces made by lathe operation. Almost every more or less complex boolean operation with lathe surfaces leads to geometry errors or even segfault of the program.
Triangulation often fails with problems of solving jacobian when number of triangles in surface is higher than several dozens (when N of triangles more than one or two hundreds, solver almost always cannot converge)
Is it possible to make booleans on lathe surfaces more robust? As one possible solution - to use some mature library as NURBS geometry kernel, like SINTEF (http://www.sintef.no).
With best regards,
Vasil
(no subject) (by Jonathan Westhues)
I'm not sure what you mean by the third paragraph. A Jacobian matrix of the constraint equations with respect to the parameters is computed inside the constraint solver, but that has nothing to do with the NURBS Booleans. Those are what typically fail with complicated surface intersections. Those are also upstream of the triangulation.
Does the SINTEF library compute Booleans on brep? I've only looked at it briefly; I saw routines to compute surface intersections and stuff, but none to actually use that to union or difference the volumes.
In any case, the performance of those NURBS Booleans with complicated surfaces is definitely one of the major limitations of the program as it stands. As a workaround, you can switch to triangle meshes (by checking "force NURBS surfaces to triangle mesh"), though that of course loses the ability to export STEP files later.
Does the SINTEF library compute Booleans on brep? I've only looked at it briefly; I saw routines to compute surface intersections and stuff, but none to actually use that to union or difference the volumes.
In any case, the performance of those NURBS Booleans with complicated surfaces is definitely one of the major limitations of the program as it stands. As a workaround, you can switch to triangle meshes (by checking "force NURBS surfaces to triangle mesh"), though that of course loses the ability to export STEP files later.
(no subject) (by Vasil)
I was wrong in third paragraph, that problem was from bug in fltkutils.cpp AllocTemporary function. I've just fixed it and everything is ok now.
About surfaces from revolution: just tried to increase number of rev surfaces in MakeFromRevolutionOf and get huge increase in robustness (especially in intersection of lathe and extrusion surfaces).
About surfaces from revolution: just tried to increase number of rev surfaces in MakeFromRevolutionOf and get huge increase in robustness (especially in intersection of lathe and extrusion surfaces).
Post a reply to this comment: