-
Notifications
You must be signed in to change notification settings - Fork 552
Description
System information
- SolveSpace version: All
- Operating system: All
Expected behavior
It should be possible to create a fillet by using a difference operation as shown:
cube_cut.zip
Actual behavior
This file has curve control points P1 and P2 in group g004-sketch-fillet as well as the "corner" point of the fillet. When the corner point and P1 are coincident with the top cube edge (use point on line constraints) the NURBS fail. Having just one of them on the cube edge is not enough to cause the problem.
The simplest work around for creating a fillet by cutting an arc is to place the corner point further away from the cube.
Additional information
I made this sketch for easy experimentation with this issue. The curve-face tangency appears in several NURBS related issues, so this may be redundant but still a simple test case.
Since the tangent curve works with the corner point off-cube, and the corner point on-cube works if the curve is not tangent, this does not seem like a numerical issue (like finding the surface intersections) but more like a logic issue in determining which curves and surfaces to keep during the boolean operation. It is also notable that there is no failure if we switch from difference to an intersection boolean, even if the points are all colinear. Union also fails. It might also be a bug in merging the coincident surfaces. So somewhere in here:
https://github.com/solvespace/solvespace/blob/master/src/srf/boolean.cpp
https://github.com/solvespace/solvespace/blob/master/src/srf/merge.cpp
