aboutsummaryrefslogtreecommitdiff
path: root/MTBCanHolder/12ozCanHolder.scad
blob: eaebe7a170f30a75838568af7dfb9d57026bab9b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
can_height=122 + 10; // 12.cm
base_width=20; // 2cm
base_depth=5; // 1cm
bolt_head_diameter=10; //6mm for M5 bolt
dist_between_holes=64; // 2.14inch / 64mm
hole_offset=25; // 2cm from origin
bottom_lip_height=4.5; // 4.5mm 2cm (1cm + xyz)
bottom_lip_thickness=5; // 5mm
bottom_lip_base=5; // 10mm
bottom_lip_extrusion=17.5; // 10.5mm
upper_lip_base=5;
upper_lip_thickness=28; // height basically
upper_pushness_thickness=3; 
upper_pusher_base=10;
upper_can_hook_height=10;
upper_can_hook_base=5;
upper_can_hook_width=5;
upper_hook_radius=10;
upper_lip_difference=2.50;

translate([-20,120,base_depth-2]) {

rotate([64,0,20]){

color([1,0,0]) {

import("soda_can.stl");
}
}

}


// Distance from tip to base should 7.5mm
// Distance from tip to left face 6 mm

module pieSlice(a, r, h){
  // a:angle, r:radius, h:height
  rotate_extrude(angle=a) square([r,h]);
}

linear_extrude(base_depth) {
    difference() {
        difference(){
            square([base_width, can_height]);
            translate([base_width/2,hole_offset,0]){
                circle(d=bolt_head_diameter);
                translate([0,(bolt_head_diameter)+dist_between_holes,0]) {
                    circle(d=bolt_head_diameter);
                }
            }
        }
    }
}

// Upper Lip
difference(){
linear_extrude(upper_lip_thickness){
translate([0,-upper_lip_base,0]) {
    square([base_width,upper_lip_base]);
}
}

translate([-2.5,-upper_lip_difference,base_depth/1.5]) {
    linear_extrude(upper_lip_thickness-10-(base_depth/1.5)){
    square([base_width+5,upper_lip_difference]);
    }
}
}

// Upper Lip Pusher (?)
translate([0,0,(upper_lip_thickness*7/8)-upper_pushness_thickness]){
linear_extrude(upper_pushness_thickness){
translate([0,-upper_pusher_base-upper_lip_base,0]) {
    square([base_width,upper_pusher_base]);
}
}
}

// Upper Lip Hook (?)
/*
translate([0,0,(upper_lip_thickness-upper_can_hook_height)]){
linear_extrude(upper_can_hook_height){
translate([0,,0]) {
    square([base_width,upper_can_hook_base]);
}
}
}
*/

translate([base_width,0,upper_lip_thickness-10]){
rotate([0,-90,0]){
pieSlice(90+25,upper_hook_radius,base_width);
}
}


// Bottom Lip

linear_extrude((bottom_lip_extrusion) + bottom_lip_thickness) {
    translate([0,can_height,0]) {
        square([base_width,bottom_lip_base]);
    }
}

translate([0,can_height-bottom_lip_height,(bottom_lip_extrusion)]) {
    linear_extrude(bottom_lip_thickness){
    square([base_width,bottom_lip_height]);
    }
}
/*
translate([10,0,30]){
rotate([360-90,45,0]){
pieSlice(90, 30, 30);
}
}\*/