vibe-openscad

tier-4-gp2y0a21yk / gemini-3-flash-preview

1 run / 累計 25.5s / 累計 $0.0034

gemini flash 3 preview pdf-page

bare (provider default effort)

run detail →
render
bare render of tier-4-gp2y0a21yk
loading STL…
success 25.5s · 1528/1174t · $0.0034
SCAD (92 lines)
// Sharp GP2Y0A21YK0F Distance Measuring Sensor
// Units: mm
// Origin: Center of the main body (29.5 x 13 x 11.5 block)
// +Z: Up (toward lenses), +Y: Forward

$fn = 32;

// Dimensions
BODY_W = 29.5;
BODY_D = 13;
BODY_H = 11.5; // Main case + flange thickness

FLANGE_W = 37; // Distance between ear arc centers
FLANGE_R = 3.75;
FLANGE_T = 1.5; // Estimated from "2-1.5" note

LENS_PROTRUSION = 2;
LENS_H = 7.2; // From front view height
EMITTER_W = 7.5;
DETECTOR_W = 16.3;
LENS_DIST = 20;
LENS_OFFSET_X = -10.25; // Calculated: -14.75 (left edge) + 4.5

CONN_W = 10.1;
CONN_OFFSET_RIGHT = 14.75;
CONN_X_MAX = (FLANGE_W/2 + FLANGE_R) - CONN_OFFSET_RIGHT; // 18.5 + 3.75 - 14.75 = 7.5
CONN_X_MIN = CONN_X_MAX - CONN_W; // 7.5 - 10.1 = -2.6

module gp2y0a21yk0f() {
    // 1. Main Case Body (centered at origin)
    color("DimGray")
    cube([BODY_W, BODY_D, BODY_H], center=true);

    // 2. Connecting Bar (Flange) with Mounting Ears
    color("DimGray")
    difference() {
        union() {
            // Main plate
            translate([0, 0, -BODY_H/2 + FLANGE_T/2])
                cube([FLANGE_W, BODY_D, FLANGE_T], center=true);
            
            // Rounded Ears
            for(x = [-FLANGE_W/2, FLANGE_W/2]) {
                translate([x, 0, -BODY_H/2 + FLANGE_T/2])
                    cylinder(h=FLANGE_T, r=FLANGE_R, center=true);
            }
        }
        
        // Mounting Holes
        for(x = [-FLANGE_W/2, FLANGE_W/2]) {
            translate([x, 0, -BODY_H/2])
                cylinder(d=3.2, h=FLANGE_T*3, center=true);
        }
        
        // Cable Cutout
        translate([(CONN_X_MIN + CONN_X_MAX)/2, -BODY_D/2, -BODY_H/2])
            cube([CONN_W, BODY_D/2, FLANGE_T*3], center=true);
    }

    // 3. Lenses (Top protrusions)
    color("Black") {
        // Light Emitter (Circular protrusion)
        translate([LENS_OFFSET_X, 0, BODY_H/2])
            hull() {
                translate([0, (7.2-EMITTER_W)/2, 0]) cylinder(d=EMITTER_W, h=LENS_PROTRUSION);
                translate([0, -(7.2-EMITTER_W)/2, 0]) cylinder(d=EMITTER_W, h=LENS_PROTRUSION);
            }

        // Light Detector (Rectangular/Oval protrusion)
        translate([LENS_OFFSET_X + LENS_DIST, 0, BODY_H/2])
            hull() {
                translate([(DETECTOR_W-7.2)/2, 0, 0]) cylinder(d=7.2, h=LENS_PROTRUSION);
                translate([-(DETECTOR_W-7.2)/2, 0, 0]) cylinder(d=7.2, h=LENS_PROTRUSION);
            }
    }

    // 4. Connector (Simplified block sticking out from bottom/side)
    color("White") {
        translate([(CONN_X_MIN + CONN_X_MAX)/2, -BODY_D/2 - 2.5, -BODY_H/2 - 1.5])
            cube([CONN_W, 5, 8], center=true);
    }

    // 5. Cable (Simplified representation)
    color("Gray") {
        translate([(CONN_X_MIN + CONN_X_MAX)/2, -BODY_D/2 - 5, -BODY_H/2 - 2])
            rotate([90, 0, 0])
                cylinder(d=3, h=20);
    }
}

// Render the model
gp2y0a21yk0f();
パラメータ (14)
スライダを動かすと openscad-wasm で再レンダリング

prompt

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

※ 同じ Sharp の GP2Y0D413K0F とは別モデルです:
- レンジ: 10〜80cm(アナログ電圧出力)
- パッケージ:
  - 本体は横長(乗っているレンズ部 + 連結バー部分の2塊で構成)
  - 連結部にケーブル取り出し穴 + 取付穴2個
  - 受光・発光のレンズが本体上部から飛び出している
- コネクタはケーブル(JST PHR-3)で出る、本体下部に直付けではない

含めるべき部位:
- レンズ部本体ケース(直方体に近い、上部にレンズ突起)
- 発光側レンズと受光側レンズ(上面に並ぶ円形 / 矩形の窓)
- 連結バー(レンズ部の下方向に伸びる薄い板状の延長部)
- 連結バーにある取付穴 2 つ + ケーブル取り出しの切欠き
- ケーブル(PCB / コネクタの代わりに丸棒で簡易表現で可)

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

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

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