← Back to Models
Fat Pigeon Coaster Engraving

Fat Pigeon Coaster Engraving

by neat-sketcher-c445 ·

a 7cm coaster, happy to print my first object

Interactive Preview & Customizer

3D preview with browser-based OpenSCAD rendering on parameter changes.

Loading previewLoading preview...

Diameter of the coaster (mm)

step 1

Total height of the coaster (mm)

step 0.5

Depth of the pigeon and text engraving (mm)

step 0.1

Quality of curves

Size of the text

step 1

Spacing between slip-resistant bumps

step 0.1

Diameter of each bump

step 0.1

X-offset for pigeon position (3mm to the right)

step 0.1
WASM compiler loads on first parameter change.
Download

Prompt Assets

Prompt image

Prompt reference image

Prompt

i want a coaster, 7cm diamater,6mm height, engrave 2mm。
there is a fat pigeon in the middle. text"2026" below the pigeon.

OpenSCAD Code

/* [Global] */
// Diameter of the coaster (mm)
coaster_diameter = 70; // [50:1:120]
// Total height of the coaster (mm)
coaster_height = 6; // [2:0.5:15]
// Depth of the pigeon and text engraving (mm)
engrave_depth = 2.0; // [0.1:0.1:5]
// Quality of curves
quality = 64; // [32, 64, 128]

/* [Details] */
// Size of the text
text_height = 8; // [5:1:15]
// Spacing between slip-resistant bumps
bump_gap = 2.5; // [1:0.1:5]
// Diameter of each bump
bump_diameter = 0.8; // [0.2:0.1:2]
// X-offset for pigeon position (3mm to the right)
pigeon_x_offset = 3.0; // [-10:0.1:10]

/* [Hidden] */
$fn = quality;
epsilon = 0.05;

module pigeon_2d() {
    // Fat body
    translate([-2, 2]) circle(d=28);
    // Head
    translate([12, 10]) circle(d=14);
    // Tail
    translate([-20, 4]) rotate(20) square([12, 8], center=true);
    // Beak
    translate([18, 10]) polygon([[0,2], [4,0], [0,-2]]);
    // Wing highlight
    translate([-2, 2]) scale([1.2, 0.7]) circle(d=18);
}

union() {
    difference() {
        // Main Coaster Body
        cylinder(d = coaster_diameter, h = coaster_height);

        // Engraved Pigeon - Offset by 3mm to the right
        translate([pigeon_x_offset, 0, coaster_height - engrave_depth])
            linear_extrude(engrave_depth + epsilon)
                pigeon_2d();

        // Engraved Year
        translate([0, -18, coaster_height - engrave_depth])
            linear_extrude(engrave_depth + epsilon)
                text("2026", size = text_height, halign = "center", valign = "center", font = "Liberation Sans:style=Bold");
    }

    // Slip-resistant bottom bumps
    for (x = [-coaster_diameter/2 : bump_gap : coaster_diameter/2]) {
        for (y = [-coaster_diameter/2 : bump_gap : coaster_diameter/2]) {
            // Only place bumps within the circle radius with a small margin
            if (sqrt(x*x + y*y) < (coaster_diameter/2 - 1.5)) {
                translate([x, y, 0])
                    cylinder(d = bump_diameter, h = 0.5);
            }
        }
    }
}

Download Model

Choose the model version and file format.

Model version