1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-05-21 10:55:33 +03:00
occt/tests/bugs/modalg_8/bug_gh501
Dmitrii Kulikov a56d85bf15
Modeling - BRepFilletAPI_MakeFillet Segfault with two curves and rim #532
Added null checks for TopoDS_Face in ChFi3d_Builder_2 and BRepAdaptor_Surface.
Added tests to check for crash.
2025-05-15 19:35:52 +01:00

97 lines
3.0 KiB
Plaintext

# This test case is to reproduce the crash during blend operation
# Given a geometry with two curves and a "rim" at the end, performing
# a fillet with a radius that is too large leads to a segfault.
dset tolerance 0.0001
# back edge
dset xEdgeBackLeft -5
vertex vEdgeBackRight 0 0 0
vertex vEdgeBackLeft xEdgeBackLeft 0 0
edge edgeBack vEdgeBackLeft vEdgeBackRight
# edge circle at the back
dset radiusCircleBack 5.56
dset angleCircleBackStart -0.755726
dset xCircleBack xEdgeBackLeft-radiusCircleBack
circle circleBack xCircleBack 0 0 radiusCircleBack
mkedge edgeCircleBack circleBack angleCircleBackStart 0
settolerance edgeCircleBack tolerance
# edge circle at the front
dset radiusCircleFrontBottom 8.95
dset angleCircleFrontBottomStart 2.385867
dset angleCircleFrontBottomEnd -2.163565
dset yCircleFrontBottom -9.95121
circle circleFrontBottom 0 yCircleFrontBottom 0 radiusCircleFrontBottom
mkedge edgeCircleFrontBottom circleFrontBottom angleCircleFrontBottomStart angleCircleFrontBottomEnd
settolerance edgeCircleFrontBottom tolerance
# edge at the front and bottom
dset yEdgeFrontBottom -17.374312
dset xEdgeFrontBottomLeft xEdgeBackLeft
vertex vEdgeFrontBottomLeft xEdgeFrontBottomLeft yEdgeFrontBottom 0
vertex vEdgeFrontBottomRight 0 yEdgeFrontBottom 0
edge edgeFrontBottom vEdgeFrontBottomLeft vEdgeFrontBottomRight
# edge at the right bottom
edge edgeRightBottom vEdgeFrontBottomRight vEdgeBackRight
# the bottom wire
wire wireBottom edgeBack edgeCircleBack edgeCircleFrontBottom edgeFrontBottom edgeRightBottom
# the bottom face
mkplane planeBottom wireBottom
# the bottom solid
dset heightBottom 10.0
prism solidBottom planeBottom 0 0 heightBottom
# the top circle
dset yCircleTop yCircleFrontBottom
dset radiusCircleTop 8.57
dset angleCircleTopStart pi/2
dset angleCircleTop 2.618290
dset angleYAxis pi-angleCircleTop
dset angleCircleTopEnd angleCircleTopStart+angleCircleTop
circle circleTop 0 yCircleTop heightBottom radiusCircleTop
mkedge edgeCircleTop circleTop angleCircleTopStart angleCircleTopEnd
settolerance edgeCircleTop tolerance
# edge at the front at the top
dset yEdgeFrontTop yEdgeFrontBottom
dset xEdgeFrontTopLeft 0-radiusCircleTop*sin(angleYAxis)
vertex vEdgeFrontTopLeft xEdgeFrontTopLeft yEdgeFrontTop heightBottom
vertex vEdgeFrontTopRight 0 yEdgeFrontTop heightBottom
edge edgeFrontTop vEdgeFrontTopLeft vEdgeFrontTopRight
settolerance edgeFrontTop tolerance
# edge at the right at the top
dset yEdgeRightTopBack yCircleTop+radiusCircleTop
dset yEdgeRightTopFront yEdgeFrontBottom
vertex vEdgeRightTopBack 0 yEdgeRightTopBack heightBottom
vertex vEdgeRightTopFront 0 yEdgeRightTopFront heightBottom
edge edgeRightTop vEdgeRightTopBack vEdgeRightTopFront
# the top wire
wire wireTop edgeCircleTop edgeFrontTop edgeRightTop
# the top face
mkplane planeTop wireTop
# the top solid
dset heightTop 10.0
prism solidTop planeTop 0 0 heightTop
bop solidBottom solidTop
bopfuse fuse
explode fuse E
# Algorithm is expected to fail with a Tcl exception.
puts "TODO ALL: Tcl Exception: tolerance ang"
puts "TODO ALL: TEST INCOMPLETE"
blend b fuse 1 fuse_14