#!/usr/bin/env python3 # type: ignore #************************************************************************** # Copyright (C) 2025, Paul Lutus * # * # This program is free software; you can redistribute it and/or modify * # it under the terms of the GNU General Public License as published by * # the Free Software Foundation; either version 2 of the License, or * # (at your option) any later version. * # * # This program is distributed in the hope that it will be useful, * # but WITHOUT ANY WARRANTY; without even the implied warranty of * # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * # GNU General Public License for more details. * # * # You should have received a copy of the GNU General Public License * # along with this program; if not, write to the * # Free Software Foundation, Inc., * # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * #************************************************************************** import cadquery as cq import math, sys # classic interpolation algorithm def ntrp(x, xa, xb, ya, yb): return (x - xa) * (yb - ya) / (xb - xa) + ya def save_part(data, name): path = f"{name}.stl" cq.exporters.export(data, path) print(f'Saved "{path}"') def build_container(W, H, D, ax, scale, corner_radius, wall_thickness, cover=False): box = ( cq.Workplane("XY") .rect(W * scale, H * scale / 2) .extrude(D * scale) .translate((0, -H * scale / 4, 0)) ) box = box.faces("