diff --git a/3dprint/buttons.scad b/3dprint/buttons.scad index 511bb0d..b8ea1f1 100644 --- a/3dprint/buttons.scad +++ b/3dprint/buttons.scad @@ -46,7 +46,7 @@ button_small_width = 8; button_small_height = 8; render_text = true; -render_button = true; +render_button = false; row_length = 4; diff --git a/3dprint/panel.scad b/3dprint/panel.scad index bdf69a7..68d81e6 100644 --- a/3dprint/panel.scad +++ b/3dprint/panel.scad @@ -1,7 +1,7 @@ $fa = 1; $fs = 0.4; -panel_border = 0; +panel_border = 5; panel_width = 160 + 2*panel_border; panel_height = 100 + 2*panel_border; panel_thick = 1; @@ -76,8 +76,8 @@ module button_guide(c_x, c_y, width, height) { function col_x(col) = (5.5+col*8)*2.54; panel_angle = 60; -bottom_border = 10; -top_border = 10; +bottom_border = 5; +top_border = 5; top_shelf = 15; module panel() { @@ -140,53 +140,121 @@ module panel() { } } } - translate([0, -bottom_border/2, 0]) rotate([0, 90, 0]) screw_block(); - translate([0, panel_height+top_border/2-2.5, 0]) rotate([0, 90, 0]) screw_block(); - translate([160, -bottom_border/2, -5]) rotate([0, -90, 0]) screw_block(); - translate([160, panel_height+top_border/2-2.5, -5]) rotate([0, -90, 0]) screw_block(); + translate([0, (panel_border-bottom_border)/2, 0]) rotate([0, 90, 0]) screw_block(); + translate([0, 100+panel_border+top_border/2-2.5, 0]) rotate([0, 90, 0]) screw_block(); + translate([panel_width, (panel_border-bottom_border)/2, -5]) rotate([0, -90, 0]) screw_block(); + translate([panel_width, 100+panel_border+top_border/2-2.5, -5]) rotate([0, -90, 0]) screw_block(); - translate([0, 0, -12]) cube([160, 100, 1]); // dummy PCB - translate([0, -bottom_border, 0]) cube([160, bottom_border, 1]); - translate([0, 100, 0]) cube([160, top_border, 1]); - rotate([0, -90, 0]) translate([0, 0, -160]) linear_extrude(height=160) - polygon([[0, 100+top_border], [1, 100+top_border], - [0, 100+top_border+panel_thick/tan(panel_angle)+epsilon]]); + //color("green") translate([panel_border, panel_border, -12]) cube([160, 100, 1]); // dummy PCB + translate([0, -bottom_border, 0]) cube([panel_width, bottom_border, 1]); + translate([0, panel_height, 0]) cube([panel_width, top_border, 1]); + rotate([0, -90, 0]) translate([0, 0, -panel_width+panel_thick]) linear_extrude(height=panel_width-panel_thick) + polygon([[0, panel_height+top_border], [1, panel_height+top_border], + [0, panel_height+top_border+panel_thick/tan(panel_angle)+epsilon]]); } module screw_block() { difference() { cube([5, 5, 10]); - translate([2.5, 2.5, -epsilon]) cylinder(r=1, h=7+epsilon); + translate([2.5, 2.5, -epsilon]) cylinder(r=1, h=8+epsilon); } } +side_screw_head_diam = 5.9; +side_screw_shaft_diam = 3; +side_screw_head_height = 2.7; -rotate([panel_angle, 0, 0]) { - // panel part - panel(); +module side(rightside = false) { + difference() { + rotate([90, 0, 90]) translate([0, 0, -panel_thick+epsilon]) linear_extrude(height=panel_thick) + polygon([[-bottom_border*cos(panel_angle), -bottom_border*sin(panel_angle)], + [-bottom_border*cos(panel_angle)-panel_thick*sin(panel_angle), + -bottom_border*sin(panel_angle)+panel_thick*cos(panel_angle)], + [(panel_height+top_border)*cos(panel_angle)-panel_thick*sin(panel_angle), + (panel_height+top_border)*sin(panel_angle)+panel_thick*cos(panel_angle)], + [(panel_height+top_border)*cos(panel_angle)+top_shelf, + (panel_height+top_border)*sin(panel_angle)+panel_thick*cos(panel_angle)], + [(panel_height+top_border)*cos(panel_angle)+top_shelf, -bottom_border*sin(panel_angle)], + ]); + rotate([panel_angle, 0, 0]) { + translate([0, (panel_border-bottom_border)/2, 0]) rotate([0, 90, 0]) + if (rightside) { + translate([2.5, 2.5, -epsilon-panel_thick]) + cylinder(r1=side_screw_shaft_diam/2, r2=side_screw_head_diam/2, h=side_screw_head_height); + } else { + translate([2.5, 2.5, 2*epsilon-side_screw_head_height]) + cylinder(r2=side_screw_shaft_diam/2, r1=side_screw_head_diam/2, h=side_screw_head_height); + } + + + translate([0, 100+panel_border+top_border/2-2.5, 0]) rotate([0, 90, 0]) + if (rightside) { + translate([2.5, 2.5, -epsilon-panel_thick]) + cylinder(r1=side_screw_shaft_diam/2, r2=side_screw_head_diam/2, h=side_screw_head_height); + } else { + translate([2.5, 2.5, 2*epsilon-side_screw_head_height]) + cylinder(r2=side_screw_shaft_diam/2, r1=side_screw_head_diam/2, h=side_screw_head_height); + } + if (rightside) { + translate([-panel_thick-2*epsilon, panel_height - 27, -20]) cube([2*panel_thick, 10, 5]); + } + } + /*#translate([0, (bottom_border/2+panel_thick)*cos(panel_angle) - 2.5*sin(panel_angle), + (-bottom_border/2)*sin(panel_angle) + 2.5*cos(panel_angle)]) + rotate([0, 90, 0]) + cylinder(r=1, h=7);*/ + } } + +render_panel = false; +render_case = true; + +mount_screw_diam = 4; +mount_screw_head_diam = 6.7; +mount_screw_head_height = 2.3; + +if (render_panel) { + rotate([180, 0, 0]) panel(); +} else if (render_panel && render_case) { + rotate([panel_angle, 0, 0]) { + // panel part + panel(); + } +} + +module mount_hole() { + cylinder(r=mount_screw_diam/2, h=panel_thick*2); + translate([0, 0, panel_thick*2-epsilon]) cylinder(r1=mount_screw_diam/2, r2 = mount_screw_head_diam/2, h=mount_screw_head_height); +} + +if (render_case) { // case part difference() { union() { translate([0, -bottom_border*cos(panel_angle), -bottom_border*sin(panel_angle)]) - cube([160, top_shelf + cos(panel_angle)*(100+bottom_border+top_border), 1]); + cube([panel_width, top_shelf + cos(panel_angle)*(panel_height+bottom_border+top_border), 1]); - translate([0, (100+top_border)*cos(panel_angle), (100+top_border)*sin(panel_angle)]) + translate([0, (panel_height+top_border)*cos(panel_angle), (panel_height+top_border)*sin(panel_angle)-epsilon]) translate([0, -panel_thick*sin(panel_angle), -panel_thick*cos(panel_angle)]) - cube([160, top_shelf+panel_thick*sin(panel_angle), 1]); - translate([0, (100+top_border)*cos(panel_angle)+top_shelf-panel_thick, + cube([panel_width, top_shelf+panel_thick*sin(panel_angle), 1]); + translate([0, (panel_height+top_border)*cos(panel_angle)+top_shelf-panel_thick, -bottom_border*sin(panel_angle)+panel_thick]) - //translate([0, (100+top_border)*cos(panel_angle), (100+top_border)*sin(panel_angle)]) - //rotate([-90, 0, 0]) - // translate([0, panel_thick*cos(panel_angle), top_shelf-panel_thick]) - cube([160, 1+epsilon, - (100+bottom_border+top_border)*sin(panel_angle)-3*panel_thick*cos(panel_angle)]); + cube([panel_width, 1+epsilon, + (panel_height+bottom_border+top_border)*sin(panel_angle)-3*panel_thick*cos(panel_angle)]); } - rotate([panel_angle, 0, 0]) panel(); - } - # union() { - polyhedron([[0, -bottom_border, 1], - [0, panel_height+top_border, 1], - [0, panel_height+top_border, 0]]); + rotate([panel_angle, 0, 0]) { + translate([0, -bottom_border-epsilon, 0]) cube([panel_width, 2*panel_thick+epsilon, 1]); + translate([0, panel_height+top_border-panel_thick, 0]) cube([panel_width, 2*panel_thick+epsilon, 1]); + } + + translate([18-panel_thick, 28, -bottom_border*sin(panel_angle)-2]) { + translate([0, 0, 0]) mount_hole(); + translate([40, 0, 0]) mount_hole(); + translate([40+54, 0, 0]) mount_hole(); + translate([2*40+54, 0, 0]) mount_hole(); + } } + side(); + translate([panel_width, 0, 0]) side(true); +}