vibe-openscad

tier-2-offset-handle-mug / claude-sonnet-4-20250514

2 run / 累計 19.9s / 累計 $0.0197

claude sonnet 4 2025-05-14 bare

bare (provider default effort)

run detail →
render
bare render of tier-2-offset-handle-mug
loading STL…
success 10.0s · 330/589t · $0.0098
SCAD (66 lines)
$fn = 100;

// マグカップ本体
difference() {
    // 外側の円筒
    cylinder(h = 90, d = 80);
    
    // 内側をくり抜く(上から)
    translate([0, 0, 6]) {
        cylinder(h = 85, d = 70);
    }
}

// 取手(+X軸方向)
translate([40, 0, 45]) {
    difference() {
        // 取手の外形(D字形状の外側部分)
        rotate([0, 90, 0]) {
            rotate_extrude(angle = 180) {
                translate([17.5, 0, 0]) {
                    circle(d = 8);
                }
            }
        }
        
        // 取手の内側をくり抜く
        translate([-5, -12.5, -15]) {
            cube([20, 25, 30]);
        }
    }
    
    // 取手の接続部分(上下)
    translate([0, -17.5, -15]) {
        cube([8, 8, 8]);
    }
    translate([0, -17.5, 15-8]) {
        cube([8, 8, 8]);
    }
    translate([0, 17.5-8, -15]) {
        cube([8, 8, 8]);
    }
    translate([0, 17.5-8, 15-8]) {
        cube([8, 8, 8]);
    }
}

// 取手と本体の接続を強化
translate([35, 0, 45]) {
    difference() {
        scale([1, 1, 2]) {
            rotate([0, 90, 0]) {
                cylinder(h = 10, d = 40);
            }
        }
        
        // 本体の内側部分を除去
        translate([-15, 0, 0]) {
            cylinder(h = 100, d = 70, center = true);
        }
        
        // 取手の穴を維持
        translate([5, -12.5, -15]) {
            cube([20, 25, 30]);
        }
    }
}

prompt

OpenSCAD で、向きが指定されたマグカップを作ってください。

本体:
- 外径 80mm、内径 70mm(肉厚 5mm)、高さ 90mm の円筒形マグ
- 底面の厚みは 6mm
- 内側は飲み物を入れられるよう中空

取手(handle):
- マグの **+X 軸方向の側面のみ** に付ける(他の方向には付けない)
- 取手は D 字形状(外側が半円、本体側が直線)で、本体外周にしっかり接続する
- 取手の内側の空間は高さ 30mm × 幅 25mm(指 3 本ぐらい入る)
- 取手はマグの高さ方向の中央付近に付ける
- 本体と取手は確実に union され、マニフォールド(隙間や宙吊りなし)を保つ

完成したコード全体を ```openscad ... ``` のフェンスで囲んで出力してください。コードのみで、追加の説明は不要です。

variant: thinking

off (default) success
off
10.0s · 330/589t · $0.0098
SCAD (66 lines)
$fn = 100;

// マグカップ本体
difference() {
    // 外側の円筒
    cylinder(h = 90, d = 80);
    
    // 内側をくり抜く(上から)
    translate([0, 0, 6]) {
        cylinder(h = 85, d = 70);
    }
}

// 取手(+X軸方向)
translate([40, 0, 45]) {
    difference() {
        // 取手の外形(D字形状の外側部分)
        rotate([0, 90, 0]) {
            rotate_extrude(angle = 180) {
                translate([17.5, 0, 0]) {
                    circle(d = 8);
                }
            }
        }
        
        // 取手の内側をくり抜く
        translate([-5, -12.5, -15]) {
            cube([20, 25, 30]);
        }
    }
    
    // 取手の接続部分(上下)
    translate([0, -17.5, -15]) {
        cube([8, 8, 8]);
    }
    translate([0, -17.5, 15-8]) {
        cube([8, 8, 8]);
    }
    translate([0, 17.5-8, -15]) {
        cube([8, 8, 8]);
    }
    translate([0, 17.5-8, 15-8]) {
        cube([8, 8, 8]);
    }
}

// 取手と本体の接続を強化
translate([35, 0, 45]) {
    difference() {
        scale([1, 1, 2]) {
            rotate([0, 90, 0]) {
                cylinder(h = 10, d = 40);
            }
        }
        
        // 本体の内側部分を除去
        translate([-15, 0, 0]) {
            cylinder(h = 100, d = 70, center = true);
        }
        
        // 取手の穴を維持
        translate([5, -12.5, -15]) {
            cube([20, 25, 30]);
        }
    }
}
adaptivenot run
dynamicnot run