127 lines
4.8 KiB
OpenSCAD
127 lines
4.8 KiB
OpenSCAD
// Door measurements
|
|
width = 516;
|
|
height = 766;
|
|
thickness = 18;
|
|
|
|
// Pattern parameters
|
|
border_margin = 80;
|
|
border_width = 40;
|
|
// border_angle = 30;
|
|
border_depth = 10;
|
|
border_depth_2 = 4;
|
|
|
|
small_border_width = 4;
|
|
small_border_thickness = 2;
|
|
|
|
outside_border_width = border_width / 2;
|
|
outside_border_depth_2 = 2;
|
|
|
|
inner_depth = 2;
|
|
|
|
// Technical params
|
|
mill_diameter = 8;
|
|
|
|
module door(){
|
|
difference(){
|
|
cube(size=[width, height, thickness], center=false);
|
|
translate([border_margin, border_margin, thickness+0.01])
|
|
union(){
|
|
borders(height-2*border_margin, width-2*border_margin, border_width, border_depth, border_depth_2);
|
|
outside_borders(height-2*border_margin, width-2*border_margin, border_width, border_depth, border_depth_2);
|
|
}
|
|
translate([border_margin-outside_border_width, 0, thickness-small_border_thickness+0.01])
|
|
cube(size=[small_border_width, height, small_border_thickness], center=false);
|
|
translate([width-border_margin-small_border_width+outside_border_width, 0, thickness-small_border_thickness+0.01])
|
|
cube(size=[small_border_width, height, small_border_thickness], center=false);
|
|
|
|
translate([border_margin, border_margin, thickness-inner_depth])
|
|
cube(size=[width-2*border_margin, height-2*border_margin, 10], center=false);
|
|
// Custom small border
|
|
// translate([border_margin-border_depth_2, border_margin-border_depth_2, thickness-border_depth_2])
|
|
// cube(size=[width-2*border_margin+2*border_depth_2, height-2*border_margin+2*border_depth_2, border_depth_2+0.01], center=false);
|
|
}
|
|
}
|
|
|
|
module border(length, width, depth1, depth2, mill_dia){
|
|
points = [[0,depth2], [0,0], [width,0], [width, depth1], [width-mill_dia, depth1]];
|
|
rotate([-90,0,0])
|
|
linear_extrude(height=length){
|
|
polygon(points=points);
|
|
}
|
|
}
|
|
|
|
module outside_border(length, width, depth1, depth2) {
|
|
translate([0, length, 0])
|
|
rotate([0,0,180])
|
|
border(length, width, depth1, depth2, 0);
|
|
}
|
|
|
|
module borders(length_border, width_border, width, depth1, depth2){
|
|
union(){
|
|
translate([width_border-width, 0, 0])
|
|
border(length_border, width, depth1, depth2, mill_diameter);
|
|
translate([width, length_border, 0])
|
|
rotate([0,0,180])
|
|
border(length_border, width, depth1, depth2, mill_diameter);
|
|
translate([0, width, 0])
|
|
rotate([0,0,-90])
|
|
border(width_border, width, depth1, depth2, mill_diameter);
|
|
translate([width_border, length_border-width, 0])
|
|
rotate([0,0,90])
|
|
border(width_border, width, depth1, depth2, mill_diameter);
|
|
}
|
|
}
|
|
|
|
module outside_border_corner(length_border, width_border, width, depth1, depth2){
|
|
intersection(){
|
|
translate([-outside_border_width+0.01, length_border+outside_border_width, 0])
|
|
rotate([0,0,180])
|
|
outside_border(length_border+2*outside_border_width, outside_border_width, depth1, depth2);
|
|
translate([-outside_border_width, -outside_border_width+0.01, 0])
|
|
rotate([0,0,-90])
|
|
outside_border(width_border+2*outside_border_width, outside_border_width, depth1, depth2);
|
|
}
|
|
}
|
|
|
|
module outside_borders(length_border, width_border, width, depth1, depth2){
|
|
union(){
|
|
translate([width_border+outside_border_width-0.01, 0, 0])
|
|
outside_border(length_border, outside_border_width, depth1, outside_border_depth_2);
|
|
translate([-outside_border_width+0.01, length_border, 0])
|
|
rotate([0,0,180])
|
|
outside_border(length_border, outside_border_width, depth1, outside_border_depth_2);
|
|
translate([0, -outside_border_width+0.01, 0])
|
|
rotate([0,0,-90])
|
|
outside_border(width_border, outside_border_width, depth1, outside_border_depth_2);
|
|
translate([width_border, length_border+outside_border_width-0.01, 0])
|
|
rotate([0,0,90])
|
|
outside_border(width_border, outside_border_width, depth1, outside_border_depth_2);
|
|
|
|
// Now add the corners
|
|
outside_border_corner(length_border, width_border, width, depth1, outside_border_depth_2);
|
|
|
|
translate([width_border,0,0])
|
|
rotate([0,0,90])
|
|
outside_border_corner(length_border, width_border, width, depth1, outside_border_depth_2);
|
|
|
|
translate([width_border,length_border,0])
|
|
rotate([0,0,180])
|
|
outside_border_corner(length_border, width_border, width, depth1, outside_border_depth_2);
|
|
|
|
translate([0,length_border,0])
|
|
rotate([0,0,-90])
|
|
outside_border_corner(length_border, width_border, width, depth1, outside_border_depth_2);
|
|
}
|
|
}
|
|
|
|
color(c = [0.9, 0.9, 0.9]){
|
|
door();
|
|
}
|
|
// door();
|
|
|
|
// rotate([90,0,0])
|
|
// outside_border(500, border_width, border_depth, border_depth_2);
|
|
|
|
// outside_borders(height-2*border_margin, width-2*border_margin, border_width, border_depth, border_depth_2);
|
|
|
|
// borders(height, width, border_width, border_depth); |