$fn = 64; // Parametric dimensions base_radius = 50; base_thickness = 8; pillar_dist = 30; // Distance from center (total span is 60mm) front_height = 85; back_height = 65; // Calculate the tilt angle to align the cups perfectly tilt_angle = atan2(front_height - back_height, pillar_dist * 2); // Module for the U-shaped cradles module u_cup(length, width, base_height, inner_r) { total_height = base_height + inner_r; difference() { // Cup body with rounded bottom edges translate([-length/2, 0, 0]) hull() { translate([0, -width/2 + 2, 2]) rotate([0, 90, 0]) cylinder(r=2, h=length); translate([0, width/2 - 2, 2]) rotate([0, 90, 0]) cylinder(r=2, h=length); translate([0, -width/2, total_height - 1]) cube([length, width, 1]); } // Main airbrush body cutout translate([-length/2 - 1, 0, total_height]) rotate([0, 90, 0]) cylinder(r=inner_r, h=length + 2); // Top opening to create the U-shape translate([-length/2 - 1, -inner_r, total_height]) cube([length + 2, inner_r * 2, inner_r + 2]); } } // Main Assembly union() { // Stable Base cylinder(r=base_radius, h=base_thickness - 3); translate([0, 0, base_thickness - 3]) cylinder(r1=base_radius, r2=base_radius - 5, h=3); // Front Support Pillar (Taller, holds main body) translate([-pillar_dist, 0, base_thickness]) cylinder(r1=12, r2=9, h=front_height - base_thickness); // Back Support Pillar (Shorter, holds tail) translate([pillar_dist, 0, base_thickness]) cylinder(r1=12, r2=9, h=back_height - base_thickness); // Front Cradle translate([-pillar_dist, 0, front_height]) rotate([0, tilt_angle, 0]) translate([0, 0, -5]) // Sink into the pillar for a strong joint u_cup(length=20, width=26, base_height=10, inner_r=9.5); // Back Cradle translate([pillar_dist, 0, back_height]) rotate([0, tilt_angle, 0]) translate([0, 0, -5]) u_cup(length=20, width=20, base_height=10, inner_r=7.5); }