Files
bamboogenerator/README.md
2025-07-18 13:05:43 +01:00

2.2 KiB
Raw Permalink Blame History

bamboogenerator

Python scripts for generating 3D printable models using the trimesh library. The repository contains a consolidated parametric_cad package with example scripts that produce STL files.

Folder layout

  • parametric_cad/ library with primitives, mechanisms, STL export utilities and example scripts.

Installation

Install the required Python packages and configure OpenSCAD using the installer script in the repository root. From the desired project directory run:

python install_requirements.py

This installs all Python dependencies and attempts to set up trimesh for OpenSCAD rendering.

Running the examples

Set PYTHONPATH to the project directory and execute one of the scripts from parametric_cad/examples/, for example:

export PYTHONPATH=.
python parametric_cad/examples/spur_gear_example.py

You can also run all examples at once using the cross-platform run_examples.py script.

Generated STL files are written to output/<example>_output/.

Combining Primitives

Functions combine and safe_difference from parametric_cad/core.py help manipulate meshes.

  • combine(objects) returns the union of the provided meshes or primitives by concatenating their geometry.
  • safe_difference(mesh, other) subtracts one mesh (or list of meshes) from another and gracefully falls back to the original mesh if the boolean operation fails.

Example:

from parametric_cad.primitives import Box, Cylinder
from parametric_cad.core import combine, safe_difference

boxes = [Box(1, 1, 1).at(x, 0, 0) for x in range(3)]
unioned = combine(boxes)
result = safe_difference(unioned, Cylinder(0.5, 1).mesh())

Overhang Scaffolding

generate_scaffolding creates simple cylindrical supports beneath downward facing surfaces that exceed a chosen overhang angle. The supports are meant to be easy to remove after printing.

from parametric_cad import generate_scaffolding, Box, combine

base = Box(20, 20, 10)
ledge = Box(10, 10, 5).at(15, 5, 10)
model = combine([base, ledge])
supports = generate_scaffolding(model)

License

This project is licensed under the MIT License.