Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //--------------------------------------------------------------------------
- // UL canister stand
- //--------------------------------------------------------------------------
- $fa =3;
- $fs = 0.5;
- // BOSL library is used
- include <BOSL/constants.scad>
- use <BOSL/shapes.scad>
- use <BOSL/transforms.scad>
- //--------------------------------------------------------------------------
- // PRINTING INSTRUCTIONS
- // To be printed with 0.4 mm nozzle out of tough and resilient material.
- // I used PCTG, it is stiff without being brittle. ABS should also be fine.
- // Setting seam position to random prevents having a weak spot on the ring
- // holding the canister.
- //--------------------------------------------------------------------------
- //--------------------------------------------------------------------------
- // CUSTOMIZABLE VARIABLES
- // Canister diameter - should be equal to the actual diameter of the can,
- // so it fits tightly
- d_can=34.8;
- // Base diameter
- d_base = 90;
- // No. of ribs / holes
- n_leg = 4;
- //--------------------------------------------------------------------------
- // Other variables
- // Height of the cup holding the canister
- h = 10;
- // Cup wall thickness - 2 perimeters with 0.4 mm nozzle
- wall = 0.42*2;
- // Ribs and reinforced edge - 3 perimeters
- rib = 0.42*3;
- // Base thickness
- h_base = 1;
- // Edge thickness
- h_edge = 2;
- // Edge width;
- w_edge = 5;
- difference(){
- union(){
- // Cup holding the can
- cyl(d=d_can+wall*2, h=h, align=V_UP);
- // Base with reinforced edge
- difference(){
- cyl(d=d_base, h=h_edge, align=V_UP, chamfer=0.4);
- translate([0,0,h_base]) cyl(r=d_base/2-rib, h=100, align=V_UP);
- }
- // Ribs
- for(a=[0:n_leg]) rotate([0,0,a*360/n_leg]) {
- hull(){
- translate([d_can/2+wall,0,0]) cyl(d=rib, h=h, align=V_UP);
- translate([d_base/2-rib,0,h_base]) cyl(d=rib, h=h_edge-h_base, align=V_UP);
- }
- }
- }
- // Cup inner and central hole in the base
- translate([0,0,h_base]) cyl(d=d_can, h=100, align=V_UP, chamfer=0.8);
- cyl(d=d_can-6, h=100);
- // Holes in the base
- d_hole = d_base / 2 - d_can/2 - wall - rib - w_edge;
- hole_center = d_can / 2 + wall + d_hole / 2 + 0.5;
- hole_angle = asin((d_hole/2 + w_edge - rib) / hole_center);
- for(a=[0:n_leg]) {
- da1 = hole_angle;
- da2 = 360/n_leg - hole_angle;
- for(a2=[da1:2:da2]) rotate([0,0,a*360/n_leg + a2]) {
- translate([hole_center, 0,0]) cyl(d=d_hole, h=100);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment