Files
cad-Integration/CADAM-master/benchmarks/08-centrifugal-impeller.md
T
2026-07-22 13:48:46 +08:00

4.4 KiB

8 — Centrifugal pump impeller

Prompt

Design a centrifugal pump impeller: a 90 mm diameter back-plate with a central 12 mm bore and a raised hub, and seven backward-curved blades that sweep from the hub out to the rim, each blade curving smoothly along its path.

Fully parametric OpenSCAD built from the prompt above — adjustable dimensions and colours, exported as .SCAD and rendered to the orbiting preview with render.sh.

Centrifugal pump impeller — orbiting render

Parametric controls: 10 dimensions · 1 colour

What it demonstrates

  • Seven backward-curved blades swept along curved paths (BOSL2) in a clean radial array
  • Raised central hub with a 12 mm bore on a circular back-plate
  • Smooth turbomachinery surfaces, fused manifold to the plate

Editable parameters

Parameter Default Range / options Description
impeller_diameter 90 [50:1:150] Outer diameter of the impeller back-plate
bore_diameter 12 [4:0.5:30] Diameter of the central bore hole
backplate_thickness 3 [1:0.5:10] Thickness of the main back-plate
hub_diameter 26 [15:1:50] Outer diameter of the raised central hub
hub_height 20 [10:1:60] Total height of the hub from the bottom of the back-plate
blade_count 7 [3:1:15] Number of backward-curved blades
blade_height 12 [2:1:40] Height of the blades above the back-plate
blade_thickness 3 [1:0.5:8] Thickness of each blade
sweep_angle 75 [10:1:180] The angle (in degrees) that the blades sweep backwards
part_color "#B0C4DE" LightSteelBlue
steps 48 Curve resolution
OpenSCAD source — 08-centrifugal-impeller.scad
include <BOSL2/std.scad>

/* [Main Dimensions] */
// Outer diameter of the impeller back-plate
impeller_diameter = 90; // [50:1:150]

// Diameter of the central bore hole
bore_diameter = 12; // [4:0.5:30]

// Thickness of the main back-plate
backplate_thickness = 3; // [1:0.5:10]

/* [Hub Dimensions] */
// Outer diameter of the raised central hub
hub_diameter = 26; // [15:1:50]

// Total height of the hub from the bottom of the back-plate
hub_height = 20; // [10:1:60]

/* [Blade Parameters] */
// Number of backward-curved blades
blade_count = 7; // [3:1:15]

// Height of the blades above the back-plate
blade_height = 12; // [2:1:40]

// Thickness of each blade
blade_thickness = 3; // [1:0.5:8]

// The angle (in degrees) that the blades sweep backwards
sweep_angle = 75; // [10:1:180]

/* [Appearance] */
part_color = "#B0C4DE"; // LightSteelBlue

$fn = 64; 

module centrifugal_impeller() {
    difference() {
        union() {
            // Back-plate
            cyl(d=impeller_diameter, l=backplate_thickness, chamfer1=1, anchor=BOTTOM);

            // Raised Hub
            cyl(d=hub_diameter, l=hub_height, chamfer2=1.5, anchor=BOTTOM);

            // Blades (logarithmic spiral for constant incidence angle)
            // Inner radius overlaps the hub slightly to ensure a solid union
            blade_inner_r = (hub_diameter / 2) - 0.5; 
            // Outer radius stops slightly short of the rim so the round endcaps don't overhang
            blade_outer_r = (impeller_diameter / 2) - (blade_thickness / 2);
            
            steps = 48; // Curve resolution
            
            // Calculate the 2D path of the sweeping blade
            pts = [
                for(i = [0 : steps])
                    let(
                        t = i / steps,
                        r = blade_inner_r * pow(blade_outer_r / blade_inner_r, t),
                        a = -sweep_angle * t
                    )
                    [r * cos(a), r * sin(a)]
            ];

            // Distribute and extrude the 7 blades
            for(i = [0 : blade_count - 1]) {
                zrot(i * 360 / blade_count)
                up(backplate_thickness)
                linear_extrude(height = blade_height)
                stroke(pts, width=blade_thickness, endcaps="round");
            }
        }

        // Central Bore (subtracted at the end to ensure a clean hole through hub and blades)
        down(1)
        cyl(d=bore_diameter, l=hub_height + 2, anchor=BOTTOM);
    }
}

color(part_color)
centrifugal_impeller();