def helicalextrusion(wire, height, angle, double_helix = False): direction = bool(angle < 0) if double_helix: first_spine = makeHelix(height * 2. * np.pi / abs(angle), 0.5 * height, 10., 0, direction) first_solid = first_spine.makePipeShell([wire], True, True) second_solid = first_solid.mirror(fcvec([0.,0.,0.]), fcvec([0,0,1])) faces = first_solid.Faces + second_solid.Faces faces = [f for f in faces if not on_mirror_plane(f, 0., fcvec([0., 0., 1.]))] solid = makeSolid(makeShell(faces)) mat = App.Matrix() mat.move(fcvec([0, 0, 0.5 * height])) return solid.transformGeometry(mat) else: first_spine = makeHelix(height * 2 * np.pi / abs(angle), height, 10., 0, direction) first_solid = first_spine.makePipeShell([wire], True, True) return first_solid
def helicalextrusion(wire, height, angle, double_helix=False): direction = bool(angle < 0) if double_helix: first_spine = makeHelix(height * 2. * np.pi / abs(angle), 0.5 * height, 10., 0, direction) first_solid = first_spine.makePipeShell([wire], True, True) second_solid = first_solid.mirror( fcvec([0., 0., 0.]), fcvec([0, 0, 1])) faces = first_solid.Faces + second_solid.Faces faces = [f for f in faces if not on_mirror_plane( f, 0., fcvec([0., 0., 1.]))] solid = makeSolid(makeShell(faces)) mat = App.Matrix() mat.move(fcvec([0, 0, 0.5 * height])) return solid.transformGeometry(mat) else: first_spine = makeHelix(height * 2 * np.pi / abs(angle), height, 10., 0, direction) first_solid = first_spine.makePipeShell([wire], True, True) return first_solid