3d-models/猫门.scad
2025-05-04 23:11:41 +08:00

55 lines
1.8 KiB
OpenSCAD

$fn = 20;
round_corner_r = 1;
length_long = 70;
length_short = 20;
door_thickness = 40;
width = 8; // thickness = 8
surface_width = width - round_corner_r * 2; // 6
hook_pos = 46;
hook_gap = 12;
hook_length = 12;
hook_surface_width = surface_width - round_corner_r * 2; // 4
strength_cube_width = width;
union() {
minkowski() {
union() {
cube([length_long, surface_width, surface_width]);
cube([surface_width, door_thickness + surface_width + round_corner_r * 2, surface_width]);
translate([0, surface_width + round_corner_r * 2 + door_thickness, 0])
cube([length_short, surface_width, surface_width]);
}
sphere(r = round_corner_r);
}
minkowski() {
union() {
translate([hook_pos, - hook_gap - round_corner_r, round_corner_r])
cube([hook_surface_width, hook_gap + width *0.7, hook_surface_width]);
translate([hook_pos - hook_length, - hook_gap - round_corner_r, round_corner_r])
cube([hook_length, hook_surface_width, hook_surface_width]);
translate([hook_pos + surface_width - round_corner_r * 2, -round_corner_r, round_corner_r])
linear_extrude(height=hook_surface_width)
polygon([
[0, 0],
[0, -12],
[12, 0],
]);
translate([hook_pos - hook_surface_width * 2 - round_corner_r * 2, -round_corner_r, round_corner_r])
linear_extrude(height=hook_surface_width)
polygon([
[12, -12],
[0, -12],
[12, 0],
]);
}
sphere(r = round_corner_r);
}
}