[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:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user