diff --git a/猫门.scad b/猫门.scad new file mode 100644 index 0000000..20fd091 --- /dev/null +++ b/猫门.scad @@ -0,0 +1,54 @@ +$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); + } +} +