diff --git a/enclosure/COVER.scad b/enclosure/COVER.scad new file mode 100644 index 0000000..6a61777 --- /dev/null +++ b/enclosure/COVER.scad @@ -0,0 +1,277 @@ + +$fs = 0.1; + + + +use + + +cover_length = 80; +cover_width = 35; +cover_thickness = 2.1; +Resolution = 50; +module round_hull(r,w) +{ + +$fn=Resolution; +hull() +{ + circle(r); + translate([w,0,0,])circle(r); + } + + } +module drafted_pin(radius, hieght) +{ + + +c1 = radius; +h = hieght; +c2 =(h < c1)? c1 - h : 0; + +cylinder(h,c1,c2); + + + } +// s_cover(35,80,2); + module s_cover(width,length,thickness){ + + + + + union(){ difference() + { + linear_extrude(thickness)round_hull(width/2,length-width); + translate([width/4+(length-width),0,0])cube([width/2,width,10],true); + translate([-width/4,0,0])cube([width/2,width,10],true); + + + } + thickness2 = 0.5; + width2 = 29.7; + + translate([(length-width),0,0]){ + cylinder(h=thickness,r1 = width/2, r2 =width/2-(sqrt(2)*thickness)); + translate([0,0,thickness2-thickness])difference(){ + + translate([0,0,(thickness)*2+0])mirror([0,0,1])cylinder(h=thickness2,r1 = width2/2, r2 =width2/2-(sqrt(2)*thickness2)); + translate([0,0,(thickness)*2+0.1])mirror([0,0,1])cylinder(h=thickness2+0.2,r1 = width2/2-1, r2 =(width2/2-(sqrt(2)*thickness2)-1)); + translate([-50,-25,0])cube([50,50,5]); + } + + } + + } + } +module cover(width,length,thickness) + { +//width = 30; +//length = 60; +//thickness = 2; + +module joint() + { + + + rotate([90,0,0])translate([3,4,0])drafted_pin(3,2); + + } + + +Resolution = 50; + + + union(){union(){ +translate([0,width/2,0]) + s_cover(width,length,thickness); + + + rotate([90,0,0])translate([3,4,-width])cylinder(width,4,4); + + joint(); + + }mirror([0,1,0])translate([0,-width,0]) joint();} + + + } + + + + + + + + cover_unit(); +module cover_unit(){ +difference(){union(){ +union() +{ +translate([-15,-10,0]) cube([cover_length+3,cover_width+20,2.1]); +translate([-2,-10,2])cube([10,10,8]); + translate([45,17.5,3.6])rotate([0,180,-90])locking(w = 16, h = 1.5); + +} +translate([0,cover_width,0])mirror([0,1,0]){ + translate([-2,-10,2])cube([10,10,8]); + } +} + + +/* +translate([0,30,0])mirror([0,1,0])rotate([90,0,0])translate([3,4,0])drafted_pin(3+0.15,2+0.15); +rotate([90,0,0])translate([3,4,0])drafted_pin(3+0.15,2+0.15); + +*/ + +//scale([1,1,1.04])translate([0,0,-0.05]) +color("green"){cover(cover_width,cover_length,cover_thickness);} + + + +//color("red")translate([46.6,18,7])rotate([90,90,0])scale([1.05,1.05,1.05])lock_m(); + + translate([cover_length-cover_width/2-2.8,cover_width/2,2]) cube([2,6.5,3],true); + +//translate([3,15,-1])s_cover(cover_width,cover_length,cover_thickness+2); + + + // translate([cover_length-cover_width/2-6.6+0.2,cover_width/2+3,6.2-0.75]) translate([4.5,-2.5,-11.7]) + //scale([1+tollerance,1.21,1+tollerance])translate([-4.5,2.5,11.7])rotate([90,90,0])lock_m(); +translate([cover_length-cover_width/2-9.6+0.75,cover_width/2-4,2.2])cube([11-3.5,5+2.5,5]); +} + + +difference(){ +translate([0,0.3,0])color("blue"){cover(cover_width-0.6,cover_length-1,cover_thickness);} +translate([cover_length-cover_width/2-9.6+0.75,cover_width/2-2.6,-1])cube([11,5+0.6,8]); +} + + + +//width = 30-0.6; +//length = 50-0.6; +//thickness=2; + + + + +tollerance = 0.2; + + +} + + +module locking(w = 1, h = 1) +{ + points = [[0,0],[0,h],[h,h]]; + rotate_extrude(angle = 180)translate([w,0,0])mirror([1,0,0])polygon(points); + +} +module cover_unit2(){ +difference(){union(){ +union() +{ +translate([-15,-10,0]) cube([cover_length+3,cover_width+20,2.1]); +translate([-2,-10,2])cube([10,10,8]); +} +translate([0,cover_width,0])mirror([0,1,0]){ + translate([-2,-10,2])cube([10,10,8]); + } +} + + +/* +translate([0,30,0])mirror([0,1,0])rotate([90,0,0])translate([3,4,0])drafted_pin(3+0.15,2+0.15); +rotate([90,0,0])translate([3,4,0])drafted_pin(3+0.15,2+0.15); + +*/ + +//scale([1,1,1.04])translate([0,0,-0.05]) +color("green"){cover(cover_width,cover_length,cover_thickness);} + + + +//color("red")translate([46.6,18,7])rotate([90,90,0])scale([1.05,1.05,1.05])lock_m(); + + translate([cover_length-cover_width/2-2.8,cover_width/2,2]) cube([2,6.5,3],true); + +//translate([3,15,-1])s_cover(cover_width,cover_length,cover_thickness+2); + + + translate([cover_length-cover_width/2-6.6+0.2,cover_width/2+3,6.2-0.75]) translate([4.5,-2.5,-11.7]) + scale([1+tollerance,1.21,1+tollerance])translate([-4.5,2.5,11.7])rotate([90,90,0])lock_m(); + +} + + +difference(){ +translate([0,0.3,0])color("blue"){cover(cover_width-0.6,cover_length-1,cover_thickness);} +translate([cover_length-cover_width/2-9.6+0.75,cover_width/2-2.6,-1])cube([11,5+0.6,8]); +} + + + +//width = 30-0.6; +//length = 50-0.6; +//thickness=2; + + +difference(){ +color("red")translate([cover_length-cover_width/2-6.6,cover_width/2+2.7,7])rotate([90,90,0])lock_m(); + /*difference() + { + + color("green"){cover(cover_width,cover_length,cover_thickness);} + + color("green")scale(0.99){cover(cover_width,cover_length,cover_thickness);} + }*/ +translate([-0.5,0,-0.2])translate([cover_length-cover_width/2,cover_width/2,cover_thickness])rotate([0,45,0])translate([1,0,0])cube([sqrt(2)*cover_thickness,cover_width+2,sqrt(2)*cover_thickness],true); + +} + +tollerance = 0.2; +difference(){ +translate([cover_length-cover_width/2-1.8,cover_width/2-3.5,2])cube([3,7,3]); + + translate([cover_length-cover_width/2-6.6+0.2,cover_width/2+3,6.2-0.75]) translate([4.5,-2.5,-11.7]) + scale([1+tollerance,2,1+tollerance])translate([-4.5,2.5,11.7])rotate([90,90,0])lock_m(); + + + } + +} +module cover2(width,length,thickness) + { +//width = 30; +//length = 60; +//thickness = 2; +c_x = 3; +c_y = 3.2; +c_z = 0; +module joint() + { + + + rotate([90,0,0])translate([c_x,c_y,c_z])drafted_pin(1.5,1); + + } + + +Resolution = 50; + + + union(){union(){ +translate([0,width/2,0]) + s_cover(width,length,thickness); + + + rotate([90,0,0])translate([c_x,c_y,-width])cylinder(width,1.5,1.5); + + joint(); + + }mirror([0,1,0])translate([0,-width,0]) joint();} + + + } + + diff --git a/enclosure/COVER.stl b/enclosure/COVER.stl new file mode 100644 index 0000000..0331405 Binary files /dev/null and b/enclosure/COVER.stl differ diff --git a/enclosure/COVER_v2.stl b/enclosure/COVER_v2.stl new file mode 100644 index 0000000..f1e8c84 Binary files /dev/null and b/enclosure/COVER_v2.stl differ diff --git a/enclosure/COVER_v3.stl b/enclosure/COVER_v3.stl new file mode 100644 index 0000000..46593a3 Binary files /dev/null and b/enclosure/COVER_v3.stl differ diff --git a/enclosure/KRAKE_PWArev2.STL b/enclosure/KRAKE_PWArev2.STL new file mode 100644 index 0000000..741b2a3 Binary files /dev/null and b/enclosure/KRAKE_PWArev2.STL differ diff --git a/enclosure/U_Box_V105_Krake_RevB.scad b/enclosure/U_Box_V105_Krake_RevB.scad index 3b263d8..99365bb 100644 --- a/enclosure/U_Box_V105_Krake_RevB.scad +++ b/enclosure/U_Box_V105_Krake_RevB.scad @@ -16,8 +16,18 @@ // https://www.thingiverse.com/thing:5849866 include +use +use + +ACB_x = 38.77-5; +ACB_y = 42.44; +ACB_z = 40; +AC_button_x = 38.77; +AC_button_y = 44.44; + +recess_height = 9; KrakeEnclosureVersion = 0.1; // change this with each rev @@ -30,11 +40,12 @@ GPAD = 0; // [0:Off, 1:On] //////////////////////////////////////////////////////////////////// GPAD_TShell = 0; -GPAD_TShellWithVESA = 1; +GPAD_TShellWithVESA = 1; // Krake TShell +GPAD_TshellDoorRecess = 0; // turn on/off recessed area when krake Tshell is on GPAD_BShell = 0; GPAD_FPanL = 0; GPAD_BPanL = 0; -BButton = 0 ; +BButton = 0; RotaryEncoder = 0; // change to a real rotary encoder T_BShellScrew = 0; BOSSScrew = 0; @@ -56,7 +67,7 @@ Width = 138 + 13; Height = 40; Thick = 2; // Wall thickness Filet = 2; // Corner rounding -Resolution = 50; // Filet smoothness +Resolution = 10; // Filet smoothness m = 0.9; // Panel/rail tolerance PCBFeet = 1; // Enable PCB feet Vent = 1; // Enable vents @@ -776,8 +787,20 @@ module TShellWithVESA() { // #VESApunch75(stud_height_mm); } -if(GPAD_TShellWithVESA==1){ +if(GPAD_TShellWithVESA == 1){ + difference(){ TShellWithVESA(); + translate([34.5,32.5,40])rotate([180,0,90])translate([-15,-10,-1]) cube([80+2,35+19,5]); + + } + +translate([34,32,40+0.2])rotate([180,0,90])cover_unit(); + +if(GPAD_TshellDoorRecess) + { + recessed_module(); + } + } if(GPAD_TShell==1){ @@ -932,7 +955,9 @@ if(PCB_SIMPLE==1){ } } // Fin PCB } + if(PWA_GPAD==1){ + //////////////////// - PCB only visible in the preview mode - ///////////////////// translate([3*Thick+2,Thick+5,Thick+FootHeight+PCBThick/2+.1]){ @@ -947,11 +972,12 @@ if(PWA_GPAD==1){ if(PWA_KRAKE==1){ //////////////////// - PCB only visible in the preview mode - ///////////////////// - translate([3*Thick+2,Thick+5,Thick+FootHeight+PCBThick/2-.1]){ - rotate([0,0,90])translate([0,0,PCBThick-0.2]); + translate([(3*Thick)+2,Thick+5,Thick+FootHeight+PCBThick/2-.1]) + { + echo(Thick+FootHeight+PCBThick/2-.1) rotate([0,0,90])translate([-55.88,17.78,0]) color(Couleur3) - import("KRAKE_PWArev1.stl", convexity=3); + import("KRAKE_PWArev2.stl", convexity=3); //%cube ([PCBLength,PCBWidth,PCBThick]); //translate([PCBLength/2,PCBWidth/2,0]){ //color("Olive") @@ -1031,3 +1057,39 @@ if (T_BShellScrew==1){ }//fin de sides holes +module RoundBox2(Length, Width, Height,f=1){// Cube bords arrondis + $fn=Resolution; + + + translate([f,f,0]) minkowski() +{ + cube([Length-(2*f),Width-(2*f),Height-1]); + cylinder(r=f,h=1,false); +} + +}// End of RoundBox Module + + + +module recessed_module(){ +translate([0,0,9-recess_height])cover_slot(); +reccessed_bottom_f(R_height = recess_height); +translate([0,0,9-recess_height])AC_buttons_pins2(s_t = 0.5, s_w =0.5, B_height = 4.57); + +translate([0,0,9-recess_height])difference(){ + reccesed_f(); + translate([AC_button_x,AC_button_y,26.8])cylinder(r=6,h=10); + translate([AC_button_x,AC_button_y+29.67,26.8])cylinder(r=6,h=10); + translate([AC_button_x+8,AC_button_y,26.5]) + { + cube([17,35,3]); + + } + + translate([45.2,48,0])cube([20.2,4,50]); + } + } +module mp3_player(){ +translate([44,42.5,19+4.8])cube([20.7,20.7,8.6]); + } + diff --git a/enclosure/U_Box_V105_Krake_RevB2.3mf b/enclosure/U_Box_V105_Krake_RevB2.3mf new file mode 100644 index 0000000..9c16c2b Binary files /dev/null and b/enclosure/U_Box_V105_Krake_RevB2.3mf differ diff --git a/enclosure/U_Box_V105_Krake_RevB2.stl b/enclosure/U_Box_V105_Krake_RevB2.stl new file mode 100644 index 0000000..bbfe945 Binary files /dev/null and b/enclosure/U_Box_V105_Krake_RevB2.stl differ diff --git a/enclosure/U_Box_V105_Krake_RevB_Tshell_20260124.stl b/enclosure/U_Box_V105_Krake_RevB_Tshell_20260124.stl new file mode 100644 index 0000000..d5bcb7e Binary files /dev/null and b/enclosure/U_Box_V105_Krake_RevB_Tshell_20260124.stl differ diff --git a/enclosure/button_cap.scad b/enclosure/button_cap.scad new file mode 100644 index 0000000..d380834 --- /dev/null +++ b/enclosure/button_cap.scad @@ -0,0 +1,53 @@ + +//$fs = 1; + +//$fa = 0.1; + +use + +module button_cap2(h){ +$fn = 200; +union(){ +translate([0,0,-h-5])cylinder(h,4.5,4.5); +translate([0,0,-5])difference(){ + +cylinder(5+2,1.45,1.45); + +translate([0,0,-1])cylinder(12,0.7,0.7); + +} + +mirror([0,0,0])translate([-1.5,1.8,-5])cube([3,2,2.5+5]); +mirror([0,1,0])translate([-1.5,1.8,-5])cube([3,2,2.5+5]); +mirror([1,1,0])translate([-1.5,1.8,-5])cube([3,2,2.5+5]); +mirror([1,1,0])mirror([0,1,0])translate([-1.5,1.8,-5])cube([3,2,2.5+5]); + +} + +} + +module button_cap(h){ +$fn = 200; +union(){ + +difference(h){ + +cylinder(h,1.45,1.45); + +translate([0,0,-2])cylinder(h,0.7,0.7); + +} +} + +} +module button_cap_S(h,n,d,t=0.5,w = 0.5){ +button_cap(h); +for(i = [0:n]){ +rotate([0,0,d*i])translate([2.5,0,h-1]){translate([0,0,1-t])spring(2,w,t,3); + +translate([-2.5,-0.5,1-t])cube([2,1,t]); +} +}} + + +button_cap_S(40,5,60); \ No newline at end of file diff --git a/enclosure/button_cap.stl b/enclosure/button_cap.stl new file mode 100644 index 0000000..b2e8b9d Binary files /dev/null and b/enclosure/button_cap.stl differ diff --git a/enclosure/flex_cover.scad b/enclosure/flex_cover.scad new file mode 100644 index 0000000..120c1d8 --- /dev/null +++ b/enclosure/flex_cover.scad @@ -0,0 +1,42 @@ +module cover_flex(w,h,l,g) +{ +union(){ + cube([w,1,h],false); + if(l == 0) + { + cube([1,g,h]); + } + +else if(l == 1) + { + translate([w-1,0,0])cube([1,g,h]); + + } + + } + } + +g= 1.6; +n = 21; +l = 30; +t = 0.3; +h =1.5; +flexiable_cover(n,l,h,g,t); +module flexiable_cover(n,l,h,g,t) { + union(){ + + translate(v = [0,-g,0]) for (a =[1:n]){translate([0,a*g,t]){ + if(a !=n ) + cover_flex(l,h,a%2,g); + else + cover_flex(l,h,-12,g); + } + } + + cube([l,(n-0.5)*g,t],false); + translate([l/2,0,0]) rotate([-90,0,0])difference(){ + cylinder(h=1,r=4); + translate([0,2.5,0])cube([50,5,5],true); + } +} +} \ No newline at end of file diff --git a/enclosure/latch.scad b/enclosure/latch.scad new file mode 100644 index 0000000..9698665 --- /dev/null +++ b/enclosure/latch.scad @@ -0,0 +1,112 @@ + +$fn = 50; +rotate_d = 15; +tip_lenght = 6; +thikness = 5; +width = 7; +height = 7; + + +// translate([-0.5,0,1.4])#sup_triangel(); + +module sup_triangel() +{ + h = 1; +points = [[(h),0],[-(h),0],[0,h]]; +rotate([90,0,0])linear_extrude(10)polygon(points); +} +module locker() +{ + + r1 = 7; + + cylinder(8,5,5); + cylinder(3,1,r1); + translate([0,0,5])mirror([0,0,1])cylinder(2,1,r1); + translate([0,0,2])cylinder(h= 1, r = r1); + translate([0,0,8.5])cube([2,9,2],true) + + ;} + + + + + + + + + + module the_tip(){ + { difference(){ + translate([height-1,width/2+0.5,0.5]) + + rotate([90,0,90]) linear_extrude(1)minkowski(){ + square([tip_lenght-1,thikness-1],false); + + + + //translate([height-1,(width/2)+tip_lenght,thikness/2])rotate([90,0,90]) + circle(r = 0.5); + } + + + translate([height-1-0.1,width/2-0.2,-0.1])rotate([90,0,90])linear_extrude(2)square([0.5+0.2,thikness+0.2]); + } + }} + + + + module latch(h = 10, width = width, thikness = thikness){ + union(){ + + translate([0,-width/2,0])cube([h,width,thikness]); + cylinder(r =width/2,h = thikness); + } + } + + module lock_m(){ + difference(){ + union(){ + difference() + {latch(height, width); + translate([0,0,-0.1])latch(height*2,width-2.5,width+5); + rotate([0,0,rotate_d])translate([0,-1,-1])cube([20,10,10]); + translate([0,-1,-1]) cube([20,10,10]); + } + + + rotate([0,0,rotate_d])translate([3,1,0]){snap();} + + + translate([0,-4,0])the_tip(); + + rotate([0,0,rotate_d])translate([0,(width-1)/2-0.75,0])cube([height+0.5,1.25,thikness]); + } + translate([-1.9,0,8])rotate([90,0,-90])sup_triangel(); + } + } + + // lock_m(); + + translate([4.5,-2.5,-11.7]) + scale(1)translate([-4.5,2.5,11.7])rotate([90,90,0])lock_m(); + + + + module snap(w = 5,h= height, t= thikness) + { + + + difference(){ + translate([height-5.5,(w/2)+2,t/2])rotate([0,0,0])cube([7.3,4,t],true); + + translate([height-3,w-(0.5),t/2])rotate([0,0,45])cube([5,8,t*2],true); + + translate([height-8,w-(0.5),t/2])rotate([0,0,45])cube([8,5,t*2],true); + + + } + + + } + diff --git a/enclosure/recessed.scad b/enclosure/recessed.scad new file mode 100644 index 0000000..eb6bda9 --- /dev/null +++ b/enclosure/recessed.scad @@ -0,0 +1,189 @@ + ACB_x = 38.77-5; +ACB_y = 42.44; +ACB_z = 40; +AC_button_x = 38.77; +AC_button_y = 44.44; + +use + +use +use +use + + + +//translate([AC_button_x,AC_button_y,25])button_cap_S(5.175,5,60); + +translate([33,32,40])rotate([180,0,90])cover_unit(); +cover_slot(); +module cover_slot() { + +translate(v = [46.3,44,24.8]) flexiable_cover(n = 23, l = 18, h = 1, g = 1.6, t = 0.3); +gap = -10; +slot_w = 1.3; +slot_h = 3; +slot_t = 0.5; +slot_l = 50; +difference(){union(){ +translate([55.3,90,25.5]){ + +mirror(v = [1,0,0]) translate([gap,0,0]) rotate([90,0,0]) slot(w = slot_w, h = slot_h, t = slot_t, l = slot_l); +translate([gap,0,0]) rotate([90,0,0]) slot(w = slot_w, h = slot_h, t = slot_t, l = slot_l); + +} +} +translate([45.2,48,0])cube([20.2,4,50]); + +} +} +w_p = 2; +h_p = 50; +l_p = 0.5; + + +r_w = 40; +r_l = 70; +r_h = 9; +r_t = 2; + +module reccessed(w,l,h,t) +{ + +difference(){ + translate([w/2,l/2,h/2]) + difference(){ + cube([w,l,h], true); + translate([0,0,0])cube([w-t,l-t,h+t], true); + + + + } + //translate([-1,15,-11+0.4])cube([w+2,40,16],false); +} + +} + + + + + + +under_r_x = 30.5-2; +under_r_y = 28; +under_r_z = 38-r_h-r_t-0.1; + + + + + + +snap_l = r_h+4.5; +snap_h = 2; +snap_w = snap_h/2; + +module hh(){ + difference(){ + reccesed_f(); + translate([AC_button_x,AC_button_y,25])cylinder(r=6,h=10); + translate([AC_button_x,AC_button_y+29.67,25])cylinder(r=6,h=10); + + translate([AC_button_x+8,AC_button_y,26.5]) + { + cube([17,35,3]); + + } + translate([45.2,48,0])cube([20.2,4,50]); + } + AC_buttons_pins2(s_t = 0.5, s_w =0.5); + +//translate([AC_button_x+24.98,AC_button_y+34.8,28.9])rotate([0,0,180])rotate([0,180,270])cover2(17,44,2); +//reccessed_bottom_f(); + +} +difference(){ + hh(); +//cube([50,50,50]); +} +//reccesed_f(); + +difference() +{ +union(){ +reccessed_bottom_f(); +//reccesed_f(); +} + //cube([500,60,80]); + } + +module reccesed_f(){ + +translate([under_r_x+3,under_r_y,under_r_z])cube([r_w-2,r_l,r_t], false); + translate([1,0,-0.8])add_supp_snap(); +translate([100+1,0,-0.8])mirror([1,0,0])translate([1,0,0])add_supp_snap(); +} + + module reccessed_bottom_f(R_height = r_h){ + union(){ + translate([30.5,28,38-R_height])reccessed(r_w,r_l,R_height,r_t); + +rotate([0,180,0])translate([-70.5,43,-38]){translate([-0.1,0.1,0])snap(snap_h,snap_w,40-0.2,R_height+4.5,1); + translate([0.1,0.1,0])mirror([1,0,0])translate([-r_w,0,0]) snap(snap_h,snap_w,40-0.2,R_height+4.5,1); + } + //translate([0,0,15-r_h])add_supp_snap(); + //translate([100+1,0,15-r_h])mirror([1,0,0])translate([0,0,0])add_supp_snap(); + } + +} + + module add_supp_snap(){ + difference(){ + translate([30.5,38,27])supp_snap(); +translate([under_r_x-0.001,under_r_y+15,under_r_z-r_h+3])translate([2,25,5.5])scale([1.15,1.05,1.15])translate([-2,-25,-5.5])snap(snap_h,snap_w,40,snap_l,2); + translate([28.8,38,24])cube([2,50,2]); + } + } + + +module supp_snap(){ +difference(){ +hull(){ +hull(){ +rotate([0,45,0])cube([w_p,h_p,w_p]); +translate([0,0,-l_p])rotate([0,45,0])cube([w_p,h_p,w_p]);} +translate([-2,0,0])hull(){ +rotate([0,45,0])cube([w_p,h_p,w_p]); +translate([0,0,-l_p])rotate([0,45,0])cube([w_p,h_p,w_p]);} +} +translate([-3,-1,-20])cube([w_p+1,h_p+2,50],false); + +} +} + + module snap(w = 100,h, t,l,thick) + { + + translate([0,0,l])rotate([90,270,180])mirror([1,0,0])union(){ + translate([0,thick,0])linear_extrude(t)polygon(points=[[0,0],[w,0],[w/2,h]]); + cube([l,thick,t],false); + } + } + +module round_hull(r,w) +{ + +$fn=50; +hull() +{ + circle(r); + translate([w,0,0,])circle(r); + } + + } + +module AC_buttons_pins2(s_t = 0.5,s_w = 0.5, scale_s = 1, B_height = 4.57) +{ + translate([AC_button_x,AC_button_y,ACB_z-15.67+4.57-B_height])translate([0,0,5])translate([0,0,-5])button_cap_S(B_height,5,60,t=s_t,w =s_w); + + + translate([AC_button_x,AC_button_y+29.67,ACB_z-15.67+4.57-B_height])translate([0,0,5])translate([0,0,-5])button_cap_S(B_height,5,60,t = s_t, w =s_w); + } diff --git a/enclosure/slot.scad b/enclosure/slot.scad new file mode 100644 index 0000000..8a7f9da --- /dev/null +++ b/enclosure/slot.scad @@ -0,0 +1,15 @@ + + +w=3; +h =8; +t=1; +module slot(w,h,t,l) { + +points = [[0,0],[0,h/2],[w,h/2],[w,(h/2)-t],[t,((h/2)-t)-(w-t)], [t,0]]; +linear_extrude(height = l) union() { + mirror(v = [0,1,0]) polygon(points = points); + polygon(points = points); +} + +} +slot(w,h,t,10); \ No newline at end of file diff --git a/enclosure/spring.scad b/enclosure/spring.scad new file mode 100644 index 0000000..1fe16b2 --- /dev/null +++ b/enclosure/spring.scad @@ -0,0 +1,22 @@ +$fn =50; + +module simi_c(w,t,h){ +difference(){ + cylinder(h =h,r=w/2); + translate([0,0,-0.5])cylinder(h =h+1,r=w/2-t); + translate([-w/2,0+0.1,-0.5])cube([w,w/2,h+1]); + } + } +module spring(w,t,h,n) +{ + + for(i = [0:n-1]) + { +translate([(w-t)*i,0,0])mirror([0,i%2,0])simi_c(w,t,h); + + + } + } + + +spring(3,0.5,0.2,10); \ No newline at end of file