/ src / archimedean_spiral_extrude.scad
archimedean_spiral_extrude.scad
 1  /**
 2  * archimedean_spiral_extrude.scad
 3  *
 4  * @copyright Justin Lin, 2017
 5  * @license https://opensource.org/licenses/lgpl-3.0.html
 6  *
 7  * @see https://openhome.cc/eGossip/OpenSCAD/lib3x-archimedean_spiral_extrude.html
 8  *
 9  **/
10  
11  use <archimedean_spiral.scad>
12  use <cross_sections.scad>
13  use <sweep.scad>
14  
15  module archimedean_spiral_extrude(shape_pts, arm_distance, init_angle, point_distance, num_of_points, 
16                                    rt_dir = "CT_CLK", twist = 0, scale = 1.0, triangles = "SOLID") {
17      points_angles = archimedean_spiral(
18          arm_distance = arm_distance,  
19          init_angle = init_angle, 
20          point_distance = point_distance,
21          num_of_points = num_of_points,
22          rt_dir = rt_dir
23      ); 
24  
25      clk_a = rt_dir == "CT_CLK" ? 0 : 180; 
26  
27      points = [for(pa = points_angles) pa[0]];
28      angles = [
29          for(pa = points_angles) 
30               [90, 0, pa[1] + clk_a]
31      ];
32  
33      sections = cross_sections(shape_pts, points, angles, twist, scale);
34  
35      sweep(
36          sections,
37          triangles = triangles
38      );
39  
40      // testing hook
41      test_archimedean_spiral_extrude(sections); 
42  }   
43  
44  // override it to test
45  module test_archimedean_spiral_extrude(sections) {
46  
47  }