diff --git a/src/Mod/OpenSCAD/OpenSCADFeatures.py b/src/Mod/OpenSCAD/OpenSCADFeatures.py index a8cf3a5506..a3b0b306a1 100644 --- a/src/Mod/OpenSCAD/OpenSCADFeatures.py +++ b/src/Mod/OpenSCAD/OpenSCADFeatures.py @@ -431,7 +431,17 @@ class Twist: left_handed = True else: left_handed = False + auxiliary_spine = Part.makeHelix(pitch, height, radius, 0.0, left_handed) + + # OCC versions before 7.5 had a problem with using a helix as the auxilliary spine, so approximate + # it piecewise + occ_version = Part.OCC_VERSION.split(".") + if int(occ_version[0]) <= 7 and int(occ_version[1]) < 5: + num_points = int(max(3,num_revolutions * 36)) # Every ten degrees is adequate + wire = auxiliary_spine.Wires[0] + points = wire.discretize(Number=num_points) + auxiliary_spine = Part.makePolygon(points) faces = [lower_face,upper_face] for wire1,wire2 in zip(lower_face.Wires,upper_face.Wires):