2 GNU AGPLv3 (or later at your option)
3 see bottom for more license info.
4 please do not remove this notice.
7 /*****************************************************/
14 /*****************************************************/
19 twenty_sevens_place();
21 /*****************************************************/
28 // use this while editing so previewing is faster:
30 // use this for generating STL so model is more accurate:
33 // how big each ones place side is in millimeters
36 // modify this to your aesthetic taste
37 corner_radius
= side_length
/ 6;
39 connector_thickness
= side_length
/ 4;
44 offset(-r
) { offset(r
) { children(); } } }
46 module
round_inside_corners(r
) {
47 fillet(r
) children(); }
49 module
round_outside_corners(r
) {
50 fillet(-r
) children(); }
52 module
connector_tab(connector_thickness
) {
53 rotate([0, -90, -90]) {
54 translate([corner_radius
/ 2, 0, 0]) {
55 linear_extrude(height
= connector_thickness
) {
57 circle(corner_radius
, $fn
= 3);
58 translate([-corner_radius
, -corner_radius
]) {
59 square([corner_radius
, 2 * corner_radius
]); } }
60 round_outside_corners(corner_radius
/ 3) {
61 circle(corner_radius
, $fn
= 3); } } } } }
65 linear_extrude(height
= side_length
) {
66 round_outside_corners(corner_radius
) {
67 square(side_length
); } }
68 translate([side_length
/ 2, -fudge
, -fudge
]) {
69 connector_tab(connector_thickness
); }
70 translate([side_length
/ 2,
71 side_length
- connector_thickness
+ fudge
,
73 connector_tab(connector_thickness
); } }
74 translate([side_length
/ 2,
76 side_length
- 2 * fudge
]) {
77 connector_tab(connector_thickness
- 2 * fudge
); }
78 translate([side_length
/ 2,
79 side_length
- connector_thickness
+ 2 * fudge
,
80 side_length
- 2 * fudge
]) {
81 connector_tab(connector_thickness
- 2 * fudge
); } }
83 /*****************************************************/
86 for(ones_index
= [0 : (10 - 1)]) {
87 translate([ones_index
* side_length
, 0, 0]) {
90 module
hundreds_place() {
91 for(tens_index
= [0 : (10 - 1)]) {
92 translate([0, tens_index
* side_length
, 0]) {
95 module
thousands_place() {
96 for(hundreds_index
= [0 : (10 - 1)]) {
97 translate([0, 0, hundreds_index
* side_length
]) {
98 hundreds_place(); } } }
101 /*****************************************************/
103 module
twos_place() {
104 for(ones_index
= [0 : (2 - 1)]) {
105 translate([ones_index
* side_length
, 0, 0]) {
108 module
fours_place() {
109 for(twos_index
= [0 : (2 - 1)]) {
110 translate([0, twos_index
* side_length
, 0]) {
113 module
eights_place() {
114 for(fours_index
= [0 : (2 - 1)]) {
115 translate([0, 0, fours_index
* side_length
]) {
118 /*****************************************************/
120 module
threes_place() {
121 for(ones_index
= [0 : (3 - 1)]) {
122 translate([ones_index
* side_length
, 0, 0]) {
125 module
nines_place() {
126 for(threes_index
= [0 : (3 - 1)]) {
127 translate([0, threes_index
* side_length
, 0]) {
128 threes_place(); } } }
130 module
twenty_sevens_place() {
131 for(nines_index
= [0 : (3 - 1)]) {
132 translate([0, 0, nines_index
* side_length
]) {
135 //connector_tab(connector_thickness);