vibe-openscad

tier-4-gp2y0d413k / gpt-5.5-2026-04-23

1 run / 累計 139.0s / 累計 $0.0725

openai gpt 5.5 2026-04-23 pdf-page

bare (provider default effort)

run detail →
render
bare render of tier-4-gp2y0d413k
loading STL…
success 139.0s · 2966/6875t · $0.0725
SCAD (142 lines)
$fn = 72;

// GP2Y0D413K0F outline model (unit: mm)
// Coordinate: main case center = origin, +Y = lens/front, +Z = up

eps = 0.02;

// Main dimensions read from outline drawing
case_w = 29.45;
overall_d = 13.5;
lens_case_d = 2.0;
case_d = overall_d - lens_case_d;
case_h = 13.05;

pwb_t = 1.2;
connector_w = 10.1;
connector_d = 6.3;
connector_h = 4.65;

// Lens/window reference dimensions
left_edge = -case_w / 2;
emitter_x  = left_edge + 4.5;    // * reference: light emitter lens center
detector_x = left_edge + 19.7;   // * reference: light detector lens center

lens_center_z = 0.75;
lens_case_h = 8.4;
lens_inner_h = 7.2;

emitter_case_w = 7.5;
gap_w = 4.15;
detector_case_w = 16.3;

emitter_case_x  = left_edge + emitter_case_w / 2;
detector_case_x = left_edge + emitter_case_w + gap_w + detector_case_w / 2;

front_y = case_d / 2;
lens_front_y = case_d / 2 + lens_case_d;

module rounded_box(size, r=0.25) {
    minkowski() {
        cube([size[0]-2*r, size[1]-2*r, size[2]-2*r], center=true);
        sphere(r=r, $fn=18);
    }
}

module y_cylinder(r, h, center=true) {
    rotate([90, 0, 0])
        cylinder(r=r, h=h, center=center);
}

module main_case() {
    color([0.03, 0.03, 0.03])
        rounded_box([case_w, case_d, case_h], 0.25);

    // front lower/upper face details
    color([0.015, 0.015, 0.015])
        translate([0, front_y + eps, lens_center_z])
            cube([case_w - 1.0, 0.08, lens_case_h + 0.8], center=true);
}

module lens_cases() {
    color([0.02, 0.02, 0.02]) {
        translate([emitter_case_x, front_y + lens_case_d/2, lens_center_z])
            rounded_box([emitter_case_w, lens_case_d, lens_case_h], 0.18);

        translate([detector_case_x, front_y + lens_case_d/2, lens_center_z])
            rounded_box([detector_case_w, lens_case_d, lens_case_h], 0.18);
    }
}

module lenses_and_windows() {
    // emitter circular window, left
    translate([emitter_x, lens_front_y + eps, lens_center_z]) {
        color([0.0, 0.0, 0.0])
            y_cylinder(r=3.15, h=0.18);
        color([0.08, 0.11, 0.13, 0.72])
            translate([0, 0.05, 0])
                y_cylinder(r=2.55, h=0.16);
        color([0.45, 0.55, 0.60, 0.28])
            translate([0, 0.14, 0])
                y_cylinder(r=2.10, h=0.05);
    }

    // detector rectangular window, right
    translate([detector_x, lens_front_y + eps, lens_center_z]) {
        color([0.0, 0.0, 0.0])
            cube([14.0, 0.18, 5.3], center=true);
        color([0.08, 0.11, 0.13, 0.72])
            translate([0, 0.06, 0])
                cube([12.6, 0.14, 4.35], center=true);
        color([0.45, 0.55, 0.60, 0.22])
            translate([0, 0.14, 0])
                cube([10.8, 0.05, 3.45], center=true);
    }
}

module pwb() {
    pwb_y = lens_case_d / 2;
    pwb_z = -case_h/2 - pwb_t/2;

    color([0.55, 0.36, 0.13])
        translate([0, pwb_y, pwb_z])
            cube([case_w, overall_d, pwb_t], center=true);
}

module connector() {
    conn_z = -case_h/2 - pwb_t - connector_h/2;
    conn_bottom_z = conn_z - connector_h/2;

    color([0.86, 0.82, 0.70])
        translate([0, 0, conn_z])
            rounded_box([connector_w, connector_d, connector_h], 0.18);

    // bottom opening
    color([0.03, 0.03, 0.03])
        translate([0, 0, conn_bottom_z - eps])
            cube([8.3, 4.6, 0.12], center=true);

    // three terminal contacts
    for (x = [-2.2, 0, 2.2]) {
        color([0.80, 0.72, 0.55])
            translate([x, 0, conn_bottom_z + 0.02])
                cube([0.55, 3.2, 0.16], center=true);
    }

    // simplified front latch/step
    color([0.74, 0.70, 0.60])
        translate([0, connector_d/2 + 0.05, conn_z + 0.65])
            cube([connector_w - 1.2, 0.35, 1.25], center=true);
}

module sensor() {
    union() {
        main_case();
        lens_cases();
        lenses_and_windows();
        pwb();
        connector();
    }
}

sensor();
パラメータ (15)
スライダを動かすと openscad-wasm で再レンダリング

prompt

添付の Sharp 製距離センサ GP2Y0D413K0F のデータシート 2 ページ目には、
本体の外形寸法図(Outline Dimensions)が描かれています。図を読み取り、
OpenSCAD でセンサの外形をモデリングしてください。

含めるべき部位:
- 本体ケース(Carbonic ABS、概形は直方体)
- 前面に飛び出すレンズケース(2 つの窓を持つ突起)
- 発光部レンズ(円形の窓、左側)と受光部レンズ(矩形の窓、右側)
- 下部に取り付けられる PWB(プリント基板、薄板)
- 底面の 3 ピンコネクタ(JCTC 12001W90-3P-HF、簡易表現で可)

寸法:
- 図中のミリメートル数値に従ってください
- "*" 印が付いた寸法はレンズ中心位置を示す参照寸法です
- 括弧 `( )` で囲まれた値は参考寸法
- "Unspecified tolerances shall be ± 0.3 mm" に従ってよい

座標系:
- 本体の中心が原点。+Z は上方向(コネクタが下、レンズが前面 +Y)
- 単位は mm

内部の IC や回路素子はモデリング不要、外形だけで十分です。
完成したコード全体を ```openscad ... ``` のフェンスで囲んで出力してください。
コードのみで、追加の説明は不要です。