Parametric CAD generators for synthetic cast-iron casting datasets.
The generator creates the representative category models described in
docs/categories/. Outputs use catalog IDs such as brake_discs-001 and
threaded_pipe_fittings-001.
CadQuery currently supports Python 3.10-3.12 best. From a compatible environment:
python -m pip install -r requirements.txtGenerate all STEP files, GLB meshes, section images, metadata, and generated/index.json:
.venv/bin/python src/categories/generate.pyBrake-disc-only wrapper:
.venv/bin/python src/categories/brake_discs/generate_brake_discs_assets.pyThreaded-pipe-fitting-only wrapper:
.venv/bin/python src/categories/threaded_pipe_fittings/generate_threaded_pipe_fittings_assets.pyGenerate only STEP files plus metadata/index:
.venv/bin/python src/categories/generate.py --only-stepsGenerate only category brake_discs:
.venv/bin/python src/categories/generate.py --only-category brake_discsGenerate only category threaded_pipe_fittings:
.venv/bin/python src/categories/generate.py --only-category threaded_pipe_fittingsGenerate only one model:
.venv/bin/python src/categories/generate.py --only-model brake_discs-003Generate only STEP for one model:
.venv/bin/python src/categories/generate.py --only-steps --only-model brake_discs-003Skip index rebuilding during generation:
.venv/bin/python src/categories/generate.py --only-model brake_discs-003 --no-indexRebuild generated/index.json from all metadata files:
.venv/bin/python src/categories/reindex.pyThis also writes generated/index.csv for spreadsheet import.
The uploader ships the flat browser asset layout to an S3-compatible bucket:
index.json
index.csv
metadata/brake_discs-001.json
mesh/brake_discs-001.glb
sections/brake_discs-001-x.png
step/brake_discs-001.step
It reads bucket credentials from .env. Required keys:
ACCESS_KEY = ...
SECRET_KEY = ...
ENDPOINT = ...
BUCKET = ...
Preview the upload plan without sending files:
.venv/bin/python -m uploader.upload_generated --dry-runUpload the generated assets. Objects are uploaded with public-read ACL by default,
and the uploader configures bucket CORS for the static browser:
.venv/bin/python -m uploader.upload_generatedFor the current CESNET-style tenant bucket, the remote browser bucket URL has this shape:
https://s3.cl4.du.cesnet.cz/<TENANT>:<BUCKET>
Run the browser against uploaded S3 files through the local same-origin proxy:
.venv/bin/python browser/run.py --host 0.0.0.0 --port 9011 --bucket-url https://s3.cl4.du.cesnet.cz/<TENANT>:<BUCKET>See uploader/README.md and browser/README.md for more details.