[OpenSCAD] Add piecewise helix for OCCT < 7.5

Address a hang when using older versions of OCC to create a rotated
extrusion. This approximates the auxilliary spine as set of line
segments formed from the helix, rather than using the helix directly.
This commit is contained in:
Chris Hennes
2021-03-29 13:59:03 -05:00
parent 46b0043b49
commit 9540cf0bbd

View File

@@ -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):