72 lines
1.9 KiB
OpenSCAD
72 lines
1.9 KiB
OpenSCAD
thickness = 18;
|
|
|
|
height = 1980;
|
|
width = 600;
|
|
|
|
step = 30;
|
|
|
|
points_panel_1_top = [120, 110, 100, 90, 75, 60, 50 ,30, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20];
|
|
points_panel_1_side = [120, 110, 100, 90, 75, 60, 50 ,30, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20];
|
|
|
|
|
|
module top_diff(width, points, step){
|
|
max_iter = floor(width/step);
|
|
mymax = max(points);
|
|
echo(max_iter);
|
|
poly = [
|
|
for(i = [0:max_iter]) [(i)*step, points[i]-mymax],
|
|
[width, 0.01],
|
|
[0, 0.01]
|
|
];
|
|
|
|
polygon(poly);
|
|
}
|
|
|
|
module side_diff(width, points, step){
|
|
max_iter = len(points)-1;
|
|
height = step*max_iter;
|
|
mymax = max(points);
|
|
echo(max_iter);
|
|
poly = [
|
|
for(i = [0:max_iter]) [width-points[i],-(i)*step],
|
|
[width + 0.01, -height],
|
|
[width + 0.01, 0]
|
|
];
|
|
|
|
polygon(poly);
|
|
}
|
|
|
|
module door_top(width, height, thickness, points, step){
|
|
difference(){
|
|
translate([0, -height, 0])
|
|
cube(size=[width, height, thickness], center=false);
|
|
|
|
translate([0,0,-0.005])
|
|
linear_extrude(thickness+0.01)
|
|
top_diff(width, points, step);
|
|
}
|
|
}
|
|
|
|
module door_side(width, height, thickness, points, step){
|
|
difference(){
|
|
translate([0, -height, 0])
|
|
cube(size=[width, height, thickness], center=false);
|
|
|
|
translate([0,0,-0.005])
|
|
linear_extrude(thickness+0.01)
|
|
side_diff(width, points, step);
|
|
}
|
|
}
|
|
|
|
module door_complete(width, height, thickness, points_top, points_side, step){
|
|
intersection(){
|
|
door_top(width, height, thickness, points_top, step);
|
|
door_side(width, height, thickness, points_side, step);
|
|
}
|
|
}
|
|
|
|
// top_diff(width, points_panel_1_top, step);
|
|
// door_top(width, height, thickness, points_panel_1_top, step);
|
|
// side_diff(width, points_panel_1_side, step);
|
|
// door_side(width, height, thickness, points_panel_1_side, step);
|
|
door_complete(width, height, thickness, points_panel_1_top, points_panel_1_side, step); |