64.2s
· 1311/380t · $0.0482
diff vs bare: +7/-6
// マグカップのパラメータ
outer_diameter = 80;
outer_radius = outer_diameter / 2;
height = 100;
wall_thickness = 4;
bottom_thickness = 6;
handle_radius = 12;
+ handle_thickness = 8;
// マグカップ本体
difference() {
// 外側の円柱
cylinder(h = height, r = outer_radius, $fn = 100);
// 内側をくり抜く
translate([0, 0, bottom_thickness])
cylinder(h = height - bottom_thickness + 1, r = outer_radius - wall_thickness, $fn = 100);
}
// 取手
- translate([outer_radius + handle_radius, 0, height / 2]) {
+ translate([outer_radius - handle_thickness/2, 0, height / 2]) {
rotate([90, 0, 0]) {
difference() {
// 外側のトーラス
rotate_extrude($fn = 100)
- translate([handle_radius * 1.5, 0, 0])
- circle(r = handle_radius, $fn = 50);
+ translate([handle_radius * 2 + handle_thickness/2, 0, 0])
+ circle(r = handle_thickness, $fn = 50);
- // 内側をくり抜く
+ // 内側をくり抜く(指が通る部分)
rotate_extrude($fn = 100)
- translate([handle_radius * 1.5, 0, 0])
- circle(r = handle_radius - wall_thickness, $fn = 50);
+ translate([handle_radius * 2 + handle_thickness/2, 0, 0])
+ circle(r = handle_thickness - wall_thickness, $fn = 50);
}
}
}
SCAD (35 lines)
// マグカップのパラメータ
outer_diameter = 80;
outer_radius = outer_diameter / 2;
height = 100;
wall_thickness = 4;
bottom_thickness = 6;
handle_radius = 12;
handle_thickness = 8;
// マグカップ本体
difference() {
// 外側の円柱
cylinder(h = height, r = outer_radius, $fn = 100);
// 内側をくり抜く
translate([0, 0, bottom_thickness])
cylinder(h = height - bottom_thickness + 1, r = outer_radius - wall_thickness, $fn = 100);
}
// 取手
translate([outer_radius - handle_thickness/2, 0, height / 2]) {
rotate([90, 0, 0]) {
difference() {
// 外側のトーラス
rotate_extrude($fn = 100)
translate([handle_radius * 2 + handle_thickness/2, 0, 0])
circle(r = handle_thickness, $fn = 50);
// 内側をくり抜く(指が通る部分)
rotate_extrude($fn = 100)
translate([handle_radius * 2 + handle_thickness/2, 0, 0])
circle(r = handle_thickness - wall_thickness, $fn = 50);
}
}
}
9.9s
· 1339/410t · $0.0508
diff vs i1: +15/-14
// マグカップのパラメータ
outer_diameter = 80;
outer_radius = outer_diameter / 2;
height = 100;
wall_thickness = 4;
bottom_thickness = 6;
handle_radius = 12;
- handle_thickness = 8;
// マグカップ本体
difference() {
// 外側の円柱
cylinder(h = height, r = outer_radius, $fn = 100);
// 内側をくり抜く
translate([0, 0, bottom_thickness])
cylinder(h = height - bottom_thickness + 1, r = outer_radius - wall_thickness, $fn = 100);
}
// 取手
- translate([outer_radius - handle_thickness/2, 0, height / 2]) {
- rotate([90, 0, 0]) {
- difference() {
- // 外側のトーラス
- rotate_extrude($fn = 100)
- translate([handle_radius * 2 + handle_thickness/2, 0, 0])
- circle(r = handle_thickness, $fn = 50);
-
- // 内側をくり抜く(指が通る部分)
- rotate_extrude($fn = 100)
- translate([handle_radius * 2 + handle_thickness/2, 0, 0])
- circle(r = handle_thickness - wall_thickness, $fn = 50);
- }
+ difference() {
+ union() {
+ // 取手本体(トーラス)
+ translate([outer_radius + handle_radius, 0, height / 2])
+ rotate([90, 0, 0])
+ rotate_extrude($fn = 100)
+ translate([handle_radius, 0, 0])
+ circle(r = handle_radius, $fn = 50);
+
+ // カップと取手の接続部分
+ translate([outer_radius - wall_thickness/2, -handle_radius, height/2 - handle_radius])
+ cube([wall_thickness + handle_radius, handle_radius * 2, handle_radius * 2]);
}
+
+ // カップ本体の形状で切り取る(きれいな接続のため)
+ cylinder(h = height, r = outer_radius - wall_thickness - 0.01, $fn = 100);
}
SCAD (36 lines)
// マグカップのパラメータ
outer_diameter = 80;
outer_radius = outer_diameter / 2;
height = 100;
wall_thickness = 4;
bottom_thickness = 6;
handle_radius = 12;
// マグカップ本体
difference() {
// 外側の円柱
cylinder(h = height, r = outer_radius, $fn = 100);
// 内側をくり抜く
translate([0, 0, bottom_thickness])
cylinder(h = height - bottom_thickness + 1, r = outer_radius - wall_thickness, $fn = 100);
}
// 取手
difference() {
union() {
// 取手本体(トーラス)
translate([outer_radius + handle_radius, 0, height / 2])
rotate([90, 0, 0])
rotate_extrude($fn = 100)
translate([handle_radius, 0, 0])
circle(r = handle_radius, $fn = 50);
// カップと取手の接続部分
translate([outer_radius - wall_thickness/2, -handle_radius, height/2 - handle_radius])
cube([wall_thickness + handle_radius, handle_radius * 2, handle_radius * 2]);
}
// カップ本体の形状で切り取る(きれいな接続のため)
cylinder(h = height, r = outer_radius - wall_thickness - 0.01, $fn = 100);
}
9.9s
· 1369/400t · $0.0505
diff vs i2: +16/-18
// マグカップのパラメータ
outer_diameter = 80;
outer_radius = outer_diameter / 2;
height = 100;
wall_thickness = 4;
bottom_thickness = 6;
- handle_radius = 12;
+ handle_thickness = 8;
+ handle_outer_radius = 20;
+ handle_inner_radius = 12;
// マグカップ本体
difference() {
// 外側の円柱
cylinder(h = height, r = outer_radius, $fn = 100);
// 内側をくり抜く
translate([0, 0, bottom_thickness])
cylinder(h = height - bottom_thickness + 1, r = outer_radius - wall_thickness, $fn = 100);
}
// 取手
- difference() {
- union() {
- // 取手本体(トーラス)
- translate([outer_radius + handle_radius, 0, height / 2])
- rotate([90, 0, 0])
- rotate_extrude($fn = 100)
- translate([handle_radius, 0, 0])
- circle(r = handle_radius, $fn = 50);
-
- // カップと取手の接続部分
- translate([outer_radius - wall_thickness/2, -handle_radius, height/2 - handle_radius])
- cube([wall_thickness + handle_radius, handle_radius * 2, handle_radius * 2]);
- }
-
- // カップ本体の形状で切り取る(きれいな接続のため)
- cylinder(h = height, r = outer_radius - wall_thickness - 0.01, $fn = 100);
- }
+ translate([outer_radius, 0, height / 2])
+ rotate([90, 0, 0])
+ difference() {
+ // 取手の外側
+ cylinder(h = handle_thickness, r = handle_outer_radius, center = true, $fn = 100);
+
+ // 取手の内側(指を通す穴)
+ cylinder(h = handle_thickness + 1, r = handle_inner_radius, center = true, $fn = 100);
+
+ // カップ本体と重なる部分を切り取る
+ translate([-handle_outer_radius - outer_radius, 0, 0])
+ cube([handle_outer_radius * 2, handle_thickness + 2, handle_outer_radius * 2 + 2], center = true);
+ }
SCAD (34 lines)
// マグカップのパラメータ
outer_diameter = 80;
outer_radius = outer_diameter / 2;
height = 100;
wall_thickness = 4;
bottom_thickness = 6;
handle_thickness = 8;
handle_outer_radius = 20;
handle_inner_radius = 12;
// マグカップ本体
difference() {
// 外側の円柱
cylinder(h = height, r = outer_radius, $fn = 100);
// 内側をくり抜く
translate([0, 0, bottom_thickness])
cylinder(h = height - bottom_thickness + 1, r = outer_radius - wall_thickness, $fn = 100);
}
// 取手
translate([outer_radius, 0, height / 2])
rotate([90, 0, 0])
difference() {
// 取手の外側
cylinder(h = handle_thickness, r = handle_outer_radius, center = true, $fn = 100);
// 取手の内側(指を通す穴)
cylinder(h = handle_thickness + 1, r = handle_inner_radius, center = true, $fn = 100);
// カップ本体と重なる部分を切り取る
translate([-handle_outer_radius - outer_radius, 0, 0])
cube([handle_outer_radius * 2, handle_thickness + 2, handle_outer_radius * 2 + 2], center = true);
}