Skip to content

Instantly share code, notes, and snippets.

@meunomemauricio
Created March 17, 2022 01:19
Show Gist options
  • Save meunomemauricio/aee21b97407438cb7cc15d473f34c155 to your computer and use it in GitHub Desktop.
Save meunomemauricio/aee21b97407438cb7cc15d473f34c155 to your computer and use it in GitHub Desktop.
Simple Pulley SCAD Design.
/* Simple Pulley. */
$fa = 1;
$fs = .4;
// Disk Dimensions
disk_r = 15;
disk_d = 10;
torus_center_r = disk_r + 4;
torus_tube_r = disk_d/2 + 2;
// All Dimensions in mm
// Main Body Dimensions
body_w = 10;
body_d = 20; // Max is 25, the size of the screw
body_h = 25;
body_top_r = 2.5;
body_botton_r = disk_r;
// Screw Dimensions
screw_head_d = 2.6;
screw_head_r = 6.2/2 + 0.2;
nut_d = 2.2;
nut_r = 6.2/2 + 0.2;
screw_d = body_d;
screw_r = 3.0/2 + 0.2;
// Disk Insert Dimensions
ins_w = body_botton_r * 2;
ins_h_ofs = 2/3 * body_h;
ins_r_cl = 1.5;
ins_r = disk_d/2 + ins_r_cl;
// Hook Dimensions
hook_in_r = 4.5;
hook_out_r = hook_in_r + 2.5;
hook_d = 4;
/* Main Body. */
module body() {
hull() {
translate([body_w/2, body_d/2, body_h])
rotate([90, 0, 0])
cylinder(h=body_d, r=body_top_r);
translate([-body_w/2, body_d/2, body_h])
rotate([90, 0, 0])
cylinder(h=body_d, r=body_top_r);
translate([0, body_d/2, 0])
rotate([90, 0, 0])
cylinder(h=body_d, r=body_botton_r);
}
}
/* Disk Insert. */
module disk_insert() {
hull() {
translate([-ins_w/2, 0, ins_h_ofs])
rotate([90, 0, 90])
cylinder(h=ins_w, r=ins_r);
translate([-ins_w/2, 0, -body_h])
rotate([90, 0, 90])
cylinder(h=ins_w, r=ins_r);
}
}
/* Screw Insert. */
module screw_insert() {
// Central Hole
translate([0, screw_d/2 + 1, 0])
rotate([90, 0, 0])
cylinder(r=screw_r, h=screw_d + 2);
// Screw Head
translate([0, screw_d/2 + .1, 0])
rotate([90, 0, 0])
cylinder(r=screw_head_r, h=screw_head_d);
// Hex Nut
translate([0, -(screw_d/2 - screw_head_d + .1), 0])
rotate([90, 0, 0])
cylinder(r=screw_head_r, h=screw_head_d, $fn=6);
}
/* Torus. */
module torus(center_r, tube_r) {
rotate_extrude(convexity = 5)
translate([center_r, 0, 0])
circle(r=tube_r);
}
/* Pulley Disk. */
module disk() {
difference() {
translate([0, disk_d/2, 0])
rotate([90, 0, 0])
cylinder(h=disk_d, r=disk_r);
rotate([90, 0, 0])
torus(center_r=torus_center_r, tube_r=torus_tube_r);
}
}
/* Hook. */
module hook() {
translate([0, hook_d/2, body_h + body_top_r + hook_in_r/2])
rotate([90, 0, 0])
difference() {
cylinder(h=hook_d, r=hook_out_r);
translate([0, 0, -1]) cylinder(h=hook_d + 2, r=hook_in_r); // Hole
}
}
/* Assembly. */
color([0.8,0.8,0.5]) {
difference() {
union() {
hook();
body();
}
disk_insert();
screw_insert();
}
}
color([0.3,0.8,0.8]) {
difference() {
disk();
screw_insert();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment