3dprint: panel + case
This commit is contained in:
@@ -46,7 +46,7 @@ button_small_width = 8;
|
|||||||
button_small_height = 8;
|
button_small_height = 8;
|
||||||
|
|
||||||
render_text = true;
|
render_text = true;
|
||||||
render_button = true;
|
render_button = false;
|
||||||
|
|
||||||
row_length = 4;
|
row_length = 4;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
$fa = 1;
|
$fa = 1;
|
||||||
$fs = 0.4;
|
$fs = 0.4;
|
||||||
|
|
||||||
panel_border = 0;
|
panel_border = 5;
|
||||||
panel_width = 160 + 2*panel_border;
|
panel_width = 160 + 2*panel_border;
|
||||||
panel_height = 100 + 2*panel_border;
|
panel_height = 100 + 2*panel_border;
|
||||||
panel_thick = 1;
|
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;
|
function col_x(col) = (5.5+col*8)*2.54;
|
||||||
|
|
||||||
panel_angle = 60;
|
panel_angle = 60;
|
||||||
bottom_border = 10;
|
bottom_border = 5;
|
||||||
top_border = 10;
|
top_border = 5;
|
||||||
top_shelf = 15;
|
top_shelf = 15;
|
||||||
|
|
||||||
module panel() {
|
module panel() {
|
||||||
@@ -140,53 +140,121 @@ module panel() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
translate([0, -bottom_border/2, 0]) rotate([0, 90, 0]) screw_block();
|
translate([0, (panel_border-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([0, 100+panel_border+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([panel_width, (panel_border-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([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
|
//color("green") translate([panel_border, panel_border, -12]) cube([160, 100, 1]); // dummy PCB
|
||||||
translate([0, -bottom_border, 0]) cube([160, bottom_border, 1]);
|
translate([0, -bottom_border, 0]) cube([panel_width, bottom_border, 1]);
|
||||||
translate([0, 100, 0]) cube([160, top_border, 1]);
|
translate([0, panel_height, 0]) cube([panel_width, top_border, 1]);
|
||||||
rotate([0, -90, 0]) translate([0, 0, -160]) linear_extrude(height=160)
|
rotate([0, -90, 0]) translate([0, 0, -panel_width+panel_thick]) linear_extrude(height=panel_width-panel_thick)
|
||||||
polygon([[0, 100+top_border], [1, 100+top_border],
|
polygon([[0, panel_height+top_border], [1, panel_height+top_border],
|
||||||
[0, 100+top_border+panel_thick/tan(panel_angle)+epsilon]]);
|
[0, panel_height+top_border+panel_thick/tan(panel_angle)+epsilon]]);
|
||||||
}
|
}
|
||||||
|
|
||||||
module screw_block() {
|
module screw_block() {
|
||||||
difference() {
|
difference() {
|
||||||
cube([5, 5, 10]);
|
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]) {
|
module side(rightside = false) {
|
||||||
// panel part
|
difference() {
|
||||||
panel();
|
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
|
// case part
|
||||||
difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
translate([0, -bottom_border*cos(panel_angle), -bottom_border*sin(panel_angle)])
|
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)])
|
translate([0, -panel_thick*sin(panel_angle), -panel_thick*cos(panel_angle)])
|
||||||
cube([160, top_shelf+panel_thick*sin(panel_angle), 1]);
|
cube([panel_width, top_shelf+panel_thick*sin(panel_angle), 1]);
|
||||||
translate([0, (100+top_border)*cos(panel_angle)+top_shelf-panel_thick,
|
translate([0, (panel_height+top_border)*cos(panel_angle)+top_shelf-panel_thick,
|
||||||
-bottom_border*sin(panel_angle)+panel_thick])
|
-bottom_border*sin(panel_angle)+panel_thick])
|
||||||
//translate([0, (100+top_border)*cos(panel_angle), (100+top_border)*sin(panel_angle)])
|
cube([panel_width, 1+epsilon,
|
||||||
//rotate([-90, 0, 0])
|
(panel_height+bottom_border+top_border)*sin(panel_angle)-3*panel_thick*cos(panel_angle)]);
|
||||||
// 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)]);
|
|
||||||
}
|
}
|
||||||
rotate([panel_angle, 0, 0]) panel();
|
rotate([panel_angle, 0, 0]) {
|
||||||
}
|
translate([0, -bottom_border-epsilon, 0]) cube([panel_width, 2*panel_thick+epsilon, 1]);
|
||||||
# union() {
|
translate([0, panel_height+top_border-panel_thick, 0]) cube([panel_width, 2*panel_thick+epsilon, 1]);
|
||||||
polyhedron([[0, -bottom_border, 1],
|
}
|
||||||
[0, panel_height+top_border, 1],
|
|
||||||
[0, panel_height+top_border, 0]]);
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user