make dumb 3030 profile
[ozzloy@gmail.com/3d-printables] / mk2-haribo-spool-holder.scad
CommitLineData
c34a06d4 1/* GNU AGPLv3 (or later at your option)
2 see bottom for more license info */
3
4/* measurements from misumi's 3030 aluminum extrusion data sheet
5 https://us.misumi-ec.com/pdf/fa/2012/p2_0545.pdf
6*/
7
8x = 30;
9y = 30;
10diagonal = sqrt(pow(30/2, 2) + pow(30/2, 2));
11opening_width = 8;
12opening_depth = 9;
13slot_major_width = 16.5;
14inner_block = 12;
15inner_hole = 6.8 / 2;
16
17major_block_corner_diameter = 4;
18major_block_corner_radius = major_block_corner_diameter / 2;
19major_block = 30 - major_block_corner_diameter;
20
21corner_block_inner = (30 - 16.5) / 2;
22wall = 2;
23
24$fn = 40;
25
26intersection(){
27 minkowski() {
28 square(x - major_block_corner_diameter, center=true);
29 circle(major_block_corner_radius); }
30
31 union(){
32 square(inner_block / 2);
33 rotate(45) translate([diagonal/2, 0]) square([diagonal, wall], center=true);
34 translate([x / 2-corner_block_inner, y / 2 - corner_block_inner]) {
35 square([corner_block_inner, corner_block_inner]); }
36 translate([opening_width / 2, y/2 - wall]) {
37 square([(x - opening_width) / 2, wall]); }
38
39 mirror([1, -1]) {
40 square(inner_block / 2);
41 rotate(45) {
42 translate([diagonal/2, 0]) {
43 square([diagonal, wall], center=true); } }
44 translate([x / 2-corner_block_inner, y / 2 - corner_block_inner]) {
45 square([corner_block_inner, corner_block_inner]); }
46 translate([opening_width / 2, y/2 - wall]) {
47 square([(x - opening_width) / 2, wall]); } }
48
49 rotate(90){
50 square(inner_block / 2);
51 rotate(45) {
52 translate([diagonal/2, 0]) {
53 square([diagonal, wall], center=true); } }
54 translate([x / 2-corner_block_inner, y / 2 - corner_block_inner]) {
55 square([corner_block_inner, corner_block_inner]); }
56 translate([opening_width / 2, y/2 - wall]) {
57 square([(x - opening_width) / 2, wall]); }
58
59 mirror([1, -1]) {
60 square(inner_block / 2);
61 rotate(45) {
62 translate([diagonal/2, 0]) {
63 square([diagonal, wall], center=true); } }
64 translate([x / 2-corner_block_inner, y / 2 - corner_block_inner]) {
65 square([corner_block_inner, corner_block_inner]); }
66 translate([opening_width / 2, y/2 - wall]) {
67 square([(x - opening_width) / 2, wall]); } } }
68
69 rotate(180){
70 square(inner_block / 2);
71 rotate(45) {
72 translate([diagonal/2, 0]) {
73 square([diagonal, wall], center=true); } }
74 translate([x / 2-corner_block_inner, y / 2 - corner_block_inner]) {
75 square([corner_block_inner, corner_block_inner]); }
76 translate([opening_width / 2, y/2 - wall]) {
77 square([(x - opening_width) / 2, wall]); }
78
79 mirror([1, -1]) {
80 square(inner_block / 2);
81 rotate(45) {
82 translate([diagonal/2, 0]) {
83 square([diagonal, wall], center=true); } }
84 translate([x / 2-corner_block_inner, y / 2 - corner_block_inner]) {
85 square([corner_block_inner, corner_block_inner]); }
86 translate([opening_width / 2, y/2 - wall]) {
87 square([(x - opening_width) / 2, wall]); } } }
88
89 rotate(270){
90 square(inner_block / 2);
91 rotate(45) {
92 translate([diagonal/2, 0]) {
93 square([diagonal, wall], center=true); } }
94 translate([x / 2-corner_block_inner, y / 2 - corner_block_inner]) {
95 square([corner_block_inner, corner_block_inner]); }
96 translate([opening_width / 2, y/2 - wall]) {
97 square([(x - opening_width) / 2, wall]); }
98
99 mirror([1, -1]) {
100 square(inner_block / 2);
101 rotate(45) {
102 translate([diagonal/2, 0]) {
103 square([diagonal, wall], center=true); } }
104 translate([x / 2-corner_block_inner, y / 2 - corner_block_inner]) {
105 square([corner_block_inner, corner_block_inner]); }
106 translate([opening_width / 2, y/2 - wall]) {
107 square([(x - opening_width) / 2, wall]); } } } } }
108
109/*
110 This file is part of 3d-printables.
111
112 3d-printables is free software: you can redistribute it and/or modify
113 it under the terms of the GNU Affero General Public License as published by
114 the Free Software Foundation, either version 3 of the License, or
115 (at your option) any later version.
116
117 3d-printables is distributed in the hope that it will be useful,
118 but WITHOUT ANY WARRANTY; without even the implied warranty of
119 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
120 GNU Affero General Public License for more details.
121
122 You should have received a copy of the GNU Affero General Public License
123 along with challenge-bot. If not, see <http://www.gnu.org/licenses/>.
124*/