51.4s
· 1186/2428t · $0.0258
diff vs bare: +4/-2
$fn = 128;
outer_d = 80;
outer_r = outer_d / 2;
height = 100;
wall = 4;
bottom_thickness = 6;
inner_r = outer_r - wall;
handle_hole_r = 12;
handle_tube_r = 4;
handle_major_r = handle_hole_r + handle_tube_r;
- handle_center_x = outer_r + handle_major_r + handle_tube_r - 1;
+
+ handle_clearance = 6;
+ handle_center_x = outer_r + handle_clearance + handle_hole_r;
handle_center_z = height / 2;
module cup_body() {
difference() {
cylinder(h = height, r = outer_r);
translate([0, 0, bottom_thickness])
cylinder(h = height + 1, r = inner_r);
}
}
module torus(major_r, tube_r) {
rotate_extrude(convexity = 10)
translate([major_r, 0, 0])
circle(r = tube_r, $fn = 48);
}
module handle() {
union() {
translate([handle_center_x, 0, handle_center_z])
rotate([90, 0, 0])
torus(handle_major_r, handle_tube_r);
for (zpos = [
handle_center_z - handle_major_r,
handle_center_z + handle_major_r
]) {
translate([outer_r - 1, 0, zpos])
rotate([0, 90, 0])
cylinder(
- h = handle_center_x - (outer_r - 1),
+ h = handle_center_x - outer_r + 1,
r = handle_tube_r
);
}
}
}
union() {
cup_body();
handle();
}
SCAD (55 lines)
$fn = 128;
outer_d = 80;
outer_r = outer_d / 2;
height = 100;
wall = 4;
bottom_thickness = 6;
inner_r = outer_r - wall;
handle_hole_r = 12;
handle_tube_r = 4;
handle_major_r = handle_hole_r + handle_tube_r;
handle_clearance = 6;
handle_center_x = outer_r + handle_clearance + handle_hole_r;
handle_center_z = height / 2;
module cup_body() {
difference() {
cylinder(h = height, r = outer_r);
translate([0, 0, bottom_thickness])
cylinder(h = height + 1, r = inner_r);
}
}
module torus(major_r, tube_r) {
rotate_extrude(convexity = 10)
translate([major_r, 0, 0])
circle(r = tube_r, $fn = 48);
}
module handle() {
union() {
translate([handle_center_x, 0, handle_center_z])
rotate([90, 0, 0])
torus(handle_major_r, handle_tube_r);
for (zpos = [
handle_center_z - handle_major_r,
handle_center_z + handle_major_r
]) {
translate([outer_r - 1, 0, zpos])
rotate([0, 90, 0])
cylinder(
h = handle_center_x - outer_r + 1,
r = handle_tube_r
);
}
}
}
union() {
cup_body();
handle();
}
27.0s
· 1189/1392t · $0.0154
diff vs i1: +0/-0
$fn = 128;
outer_d = 80;
outer_r = outer_d / 2;
height = 100;
wall = 4;
bottom_thickness = 6;
inner_r = outer_r - wall;
handle_hole_r = 12;
handle_tube_r = 4;
handle_major_r = handle_hole_r + handle_tube_r;
handle_clearance = 6;
handle_center_x = outer_r + handle_clearance + handle_hole_r;
handle_center_z = height / 2;
module cup_body() {
difference() {
cylinder(h = height, r = outer_r);
translate([0, 0, bottom_thickness])
cylinder(h = height + 1, r = inner_r);
}
}
module torus(major_r, tube_r) {
rotate_extrude(convexity = 10)
translate([major_r, 0, 0])
circle(r = tube_r, $fn = 48);
}
module handle() {
union() {
translate([handle_center_x, 0, handle_center_z])
rotate([90, 0, 0])
torus(handle_major_r, handle_tube_r);
for (zpos = [
handle_center_z - handle_major_r,
handle_center_z + handle_major_r
]) {
translate([outer_r - 1, 0, zpos])
rotate([0, 90, 0])
cylinder(
h = handle_center_x - outer_r + 1,
r = handle_tube_r
);
}
}
}
union() {
cup_body();
handle();
}
SCAD (55 lines)
$fn = 128;
outer_d = 80;
outer_r = outer_d / 2;
height = 100;
wall = 4;
bottom_thickness = 6;
inner_r = outer_r - wall;
handle_hole_r = 12;
handle_tube_r = 4;
handle_major_r = handle_hole_r + handle_tube_r;
handle_clearance = 6;
handle_center_x = outer_r + handle_clearance + handle_hole_r;
handle_center_z = height / 2;
module cup_body() {
difference() {
cylinder(h = height, r = outer_r);
translate([0, 0, bottom_thickness])
cylinder(h = height + 1, r = inner_r);
}
}
module torus(major_r, tube_r) {
rotate_extrude(convexity = 10)
translate([major_r, 0, 0])
circle(r = tube_r, $fn = 48);
}
module handle() {
union() {
translate([handle_center_x, 0, handle_center_z])
rotate([90, 0, 0])
torus(handle_major_r, handle_tube_r);
for (zpos = [
handle_center_z - handle_major_r,
handle_center_z + handle_major_r
]) {
translate([outer_r - 1, 0, zpos])
rotate([0, 90, 0])
cylinder(
h = handle_center_x - outer_r + 1,
r = handle_tube_r
);
}
}
}
union() {
cup_body();
handle();
}
80.0s
· 1189/3489t · $0.0364
diff vs i2: +21/-20
$fn = 128;
outer_d = 80;
outer_r = outer_d / 2;
height = 100;
wall = 4;
bottom_thickness = 6;
inner_r = outer_r - wall;
handle_hole_r = 12;
handle_tube_r = 4;
- handle_major_r = handle_hole_r + handle_tube_r;
+ handle_centerline_r = handle_hole_r + handle_tube_r;
+ handle_hole_clearance = 8;
- handle_clearance = 6;
- handle_center_x = outer_r + handle_clearance + handle_hole_r;
+ handle_center_x = outer_r + handle_hole_clearance + handle_hole_r;
handle_center_z = height / 2;
module cup_body() {
difference() {
cylinder(h = height, r = outer_r);
translate([0, 0, bottom_thickness])
cylinder(h = height + 1, r = inner_r);
}
}
module torus(major_r, tube_r) {
rotate_extrude(convexity = 10)
translate([major_r, 0, 0])
circle(r = tube_r, $fn = 48);
}
- module handle() {
- union() {
- translate([handle_center_x, 0, handle_center_z])
- rotate([90, 0, 0])
- torus(handle_major_r, handle_tube_r);
+ module handle_ring() {
+ translate([handle_center_x, 0, handle_center_z])
+ rotate([90, 0, 0])
+ torus(handle_centerline_r, handle_tube_r);
+ }
- for (zpos = [
- handle_center_z - handle_major_r,
- handle_center_z + handle_major_r
- ]) {
- translate([outer_r - 1, 0, zpos])
- rotate([0, 90, 0])
- cylinder(
- h = handle_center_x - outer_r + 1,
- r = handle_tube_r
- );
- }
+ module handle_connectors() {
+ connector_start_x = outer_r - 2;
+ connector_len = handle_center_x - connector_start_x;
+
+ for (zpos = [
+ handle_center_z - handle_centerline_r,
+ handle_center_z + handle_centerline_r
+ ]) {
+ translate([connector_start_x, 0, zpos])
+ rotate([0, 90, 0])
+ cylinder(h = connector_len, r = handle_tube_r);
}
}
union() {
cup_body();
- handle();
+ handle_ring();
+ handle_connectors();
}
SCAD (56 lines)
$fn = 128;
outer_d = 80;
outer_r = outer_d / 2;
height = 100;
wall = 4;
bottom_thickness = 6;
inner_r = outer_r - wall;
handle_hole_r = 12;
handle_tube_r = 4;
handle_centerline_r = handle_hole_r + handle_tube_r;
handle_hole_clearance = 8;
handle_center_x = outer_r + handle_hole_clearance + handle_hole_r;
handle_center_z = height / 2;
module cup_body() {
difference() {
cylinder(h = height, r = outer_r);
translate([0, 0, bottom_thickness])
cylinder(h = height + 1, r = inner_r);
}
}
module torus(major_r, tube_r) {
rotate_extrude(convexity = 10)
translate([major_r, 0, 0])
circle(r = tube_r, $fn = 48);
}
module handle_ring() {
translate([handle_center_x, 0, handle_center_z])
rotate([90, 0, 0])
torus(handle_centerline_r, handle_tube_r);
}
module handle_connectors() {
connector_start_x = outer_r - 2;
connector_len = handle_center_x - connector_start_x;
for (zpos = [
handle_center_z - handle_centerline_r,
handle_center_z + handle_centerline_r
]) {
translate([connector_start_x, 0, zpos])
rotate([0, 90, 0])
cylinder(h = connector_len, r = handle_tube_r);
}
}
union() {
cup_body();
handle_ring();
handle_connectors();
}