1include <BOSL2/std.scad>
  2
  3wrist_width = 28; //mm
  4wrist_thickness = 49; //mm
  5wrist_band_thickness = 5; //mm
  6wrist_band_length = 35; //mm
  7wrist_band_rounding = 4; //mm
  8flat_width = 10; //mm
  9flat_thickness = 7; //mm
 10
 11laces_width = 5; //mm
 12laces_thickness = 10; //mm
 13laces_holes = 3; //mm
 14laces_holes_diameter = 6.5; //mm
 15laces_hole_spacing = 0; //mm
 16
 17pick_holder_radius = 50; //mm
 18pick_holder_thickness = 7; //mm
 19pick_holder_protrusion = 20; //mm
 20pick_holder_screws_padding = 1; //mm
 21pick_holder_screws_diameter = 2; //mm
 22
 23logo_depth = 1; //mm
 24logo_padding = 1.5; //mm
 25text_padding = 1; //mm
 26text_size = 2.9; //mm
 27text_depth = 1; //mm
 28text_content = "T-Shred v0.2";
 29text_font = "Iosevka:style=bold";
 30
 31a_rounding = 1.5; //mm
 32b_rounding = 1.5; //mm
 33
 34tolerances = 0.1; //mm
 35
 36fix_floating_point_small_value = 0.001; //mm
 37
 38resolution = 100;
 39
 40// Code
 41non_flat_width = wrist_width-flat_width;
 42non_flat_thickness = wrist_thickness-flat_thickness;
 43wrist_width_edge = wrist_band_thickness*2+non_flat_width;
 44wrist_thickness_edge = wrist_band_thickness*2+non_flat_thickness;
 45
 46module quarter_wrist_band(){
 47translate([flat_width/2-wrist_width_edge/2,flat_thickness/2-wrist_thickness_edge/2,0])
 48difference(){
 49translate([wrist_width_edge/2,wrist_thickness_edge/2,wrist_band_length/2])
 50difference(){
 51scale([wrist_width_edge/wrist_thickness_edge,1,1])
 52union(){
 53cyl(d=wrist_thickness_edge,length=wrist_band_length,rounding=a_rounding,$fn=resolution);
 54translate([non_flat_thickness/2,-flat_thickness/2,-wrist_band_length/2])
 55cuboid([wrist_band_thickness,flat_thickness/2,wrist_band_length],anchor=BOTTOM+LEFT+FRONT,rounding=a_rounding,edges=[RIGHT+TOP,RIGHT+BOTTOM],$fn=resolution);
 56}
 57scale([non_flat_width/non_flat_thickness,1,1])
 58union(){
 59cyl(d=non_flat_thickness,length=wrist_band_length,rounding=-a_rounding,$fn=resolution);
 60
 61translate([non_flat_thickness/2-wrist_band_thickness,-flat_thickness/2,-wrist_band_length/2])
 62cuboid([wrist_band_thickness,flat_thickness/2,wrist_band_length],anchor=BOTTOM+LEFT+FRONT);
 63}
 64}
 65cube([wrist_width_edge/2,wrist_thickness_edge,wrist_band_length]);
 66translate([0,-flat_thickness,0])
 67cube([wrist_width_edge,wrist_thickness_edge/2+flat_thickness/2,wrist_band_length]);
 68}
 69translate([0,flat_thickness/2+non_flat_thickness/2,0])
 70cuboid([flat_width/2+fix_floating_point_small_value,wrist_band_thickness,wrist_band_length],anchor=BOTTOM+LEFT+FRONT,rounding=a_rounding,edges=[FRONT+LEFT,FRONT+TOP,FRONT+BOTTOM],$fn=resolution);
 71translate([0,flat_thickness/2+non_flat_thickness/2+wrist_band_thickness,0])
 72difference(){
 73cuboid([laces_width,laces_thickness,wrist_band_length],anchor=BOTTOM+LEFT+FRONT,rounding=a_rounding,edges=[BACK],$fn=resolution);
 74length_of_holes = laces_holes*laces_holes_diameter+(laces_holes-1)*laces_hole_spacing;
 75translate ([laces_width/2,laces_thickness/2,0])
 76for ( i = [0:laces_holes-1]) {
 77translate ([0,0,wrist_band_length/2-length_of_holes/2+length_of_holes/(laces_holes-1)*i])
 78     xcyl(d=laces_holes_diameter,length=laces_width,$fn=resolution);
 79}
 80}
 81}
 82
 83module pick_holder(){
 84difference(){
 85intersection(){
 86cuboid([pick_holder_protrusion,pick_holder_thickness,wrist_band_length],anchor=BOTTOM+LEFT+FRONT,rounding=b_rounding,edges=[BACK+TOP,BACK+BOTTOM,FRONT+TOP,FRONT+BOTTOM],$fn=resolution);
 87translate([0,pick_holder_radius+pick_holder_thickness/2,wrist_band_length/2])
 88translate([pick_holder_protrusion/2,0,0])
 89difference(){
 90translate([0,-pick_holder_thickness/2,0])
 91xcyl(r=pick_holder_radius,length=pick_holder_protrusion,$fn=resolution*2);
 92xcyl(r=pick_holder_radius,length=pick_holder_protrusion,$fn=resolution*2);
 93}
 94}
 95pick_holder_screws_diameter_with_tolerance=tolerances*2+pick_holder_screws_diameter;
 96
 97for (i = [0:1]){
 98z_offset = (1-i*2)*(pick_holder_screws_diameter_with_tolerance+pick_holder_screws_diameter/2);
 99translate ([pick_holder_screws_diameter_with_tolerance+pick_holder_screws_diameter/2,pick_holder_thickness/2,i*wrist_band_length+z_offset])
100     ycyl(d=pick_holder_screws_diameter_with_tolerance,length=pick_holder_thickness,$fn=resolution);
101}
102}
103}
104
105module half_wrist_band(invert=false){
106    difference(){
107    union(){
108quarter_wrist_band();
109scale([1,-1,1])quarter_wrist_band();
110    }
111    if (invert){
112        {
113    translate([wrist_width_edge/2+flat_width/2,flat_thickness/2,logo_padding])
114    rotate([90,0,-90])
115            union(){
116                
117                rotate([180,0,90]) #translate([flat_thickness+text_padding,(flat_thickness-text_size)/2,-text_depth]) linear_extrude(text_depth) text(text_content,size=text_size,font=text_font,$fn=resolution/4);
118    scale([flat_thickness/168,flat_thickness/168,logo_depth/100])
119surface(file = "assets/dinosaur.png", center = false);
120            }
121}}
122}
123if (!invert){
124translate([wrist_width/2+wrist_band_thickness,-pick_holder_thickness/2,0])
125pick_holder();
126}
127}