$fn = 128; ///////////////////////////////////////////////////////////////// // Parameters for the model in mm ///////////////////////////////////////////////////////////////// heads = 6; // no. of heads handle = 0; // length of handle width = 3.0; // width of comb for 3D printing thickness = 5.5; // thikness of comb-back spacer_height = 2.10; // hight of the spacer spacer_peak = 0.07; // hight of the peak to overcome spacer_distance = 1.40; // spacing between spacers (MIN. == spacer_peak * 2 + 0.3 !!!) spacer_length = 2.60; // length of resting-area for head ///////////////////////////////////////////////////////////////// // Calculations for the model // Don't change them ///////////////////////////////////////////////////////////////// spacers = ceil(heads / 2); height = handle + (spacer_height + spacer_distance) * spacers + 0.5; ///////////////////////////////////////////////////////////////// // Fixed Parameters // Don't change them ///////////////////////////////////////////////////////////////// phase = 1.2; ///////////////////////////////////////////////////////////////// // Spacer model 2D for CNC ///////////////////////////////////////////////////////////////// module Spacer2D(){ square([spacer_length - 0.1, spacer_height]); hull(){ translate([spacer_length - 0.1, 0]) square([0.1, spacer_height]); translate([spacer_length + 0.6, -spacer_peak]) square([0.1, spacer_height + spacer_peak * 2]); translate([spacer_length + 2.4, (spacer_height) / 2 - 0.1]) square([0.1, 0.2]); } } ///////////////////////////////////////////////////////////////// // Comb model 2D for CNC ///////////////////////////////////////////////////////////////// module Comb2D(){ difference(){ translate([-thickness, 0]) square([thickness, height]); lb = sqrt(phase * phase / 2);// - phase/2 * phase/2); #translate([-thickness - phase/2, 0]) rotate([0, 0, -45]) square([lb, lb]); translate([-thickness - phase/2, height]) rotate([0, 0, -45]) square([lb, lb]); translate([-phase/2, height]) rotate([0, 0, -45]) square([lb, lb]); } // Add spacers in position for(i = [0 : 1 : spacers - 1]){ z_pos = i * (spacer_height + spacer_distance) + 0.5; translate([0, z_pos]) Spacer2D(); } } ///////////////////////////////////////////////////////////////// // Comb model 3D for printing ///////////////////////////////////////////////////////////////// module Comb3D(){ linear_extrude(width) Comb2D(); } ///////////////////////////////////////////////////////////////// // Display model ///////////////////////////////////////////////////////////////// Comb2D(); //Comb3D();