Typed, headless Python tooling for CAD/BIM models and artifacts
Project description
Python CAD Tools
Python CAD Tools is an installable, typed Python package for defining shared CAD/BIM models and producing STEP, IFC4, GLB, conceptual SVG/DXF/PDF drawings, quantity schedules, validation reports, and manifests in a headless workflow.
The canonical project identities are:
- distribution:
python-cad-tools; - import namespace:
python_cad_tools; - command:
python-cad; - repository: https://github.com/brandon-benge/python-cad-tools.
Licensed under AGPL-3.0-only. Published on PyPI.
Install for development
Python 3.12 or 3.13 is required.
python3 -m venv .venv
.venv/bin/python -m pip install -e '.[dev]'
An ordinary non-editable installation exposes the same package and command:
python3 -m pip install ./dist/python_cad_tools-*.whl
python-cad --version
Create a new project
python-cad init --destination my-cad-project
cd my-cad-project
python -m venv .venv
.venv/bin/pip install python-cad-tools
.venv/bin/python-cad build
The scaffold includes model.py, config.py, pyproject.toml, README.md,
.gitignore, and generated/.gitkeep. Edit config.py for dimensions and
materials; edit model.py for design elements.
Command line
python-cad --version reports the version from installed distribution
metadata. Project operations use explicit subcommands:
python-cad init --destination my-project
python-cad validate --project-root .
python-cad build --project-root . --format step --format quantities
python-cad verify --project-root .
python-cad prepare-site --project-root . --destination _site --base-path /
python-cad serve --project-root . --port 0
python-cad clean --project-root .
The project root defaults to the current directory. Builds use project locks,
unique staging, final-byte verification, and recoverable journaled promotion.
validate writes no artifacts; verify independently reproduces the manifest
inventory, sizes, SHA-256 values, schemas, and parser checks.
prepare-site deploys the packaged model-free viewer without Node, and serve
binds to loopback by default. See
docs/viewer-delivery.md for ownership, caching,
offline, and deployment details.
Python API
Public symbols are imported from their documented modules:
from pathlib import Path
from python_cad_tools.build import BuildOptions, build_project
result = build_project(BuildOptions(project_root=Path(".")))
Project code should preserve stable semantic IDs, keep geometry parametric, and create geometry and metadata together. Generated artifacts are outputs, never design inputs.
Project-owned drawing annotations use the typed, renderer-independent boundary
documented in docs/drawing-extensions.md. One
annotation set is validated and rendered consistently to SVG, DXF, and PDF
before artifact hashes are recorded.
Verification
.venv/bin/ruff check .
.venv/bin/mypy
.venv/bin/pytest
.venv/bin/python -m build --wheel --sdist --outdir dist .
.venv/bin/python -m twine check dist/*
Packaging tests inspect wheel and sdist inventories, install the wheel
non-editably into an isolated environment outside the checkout, prove the
import resolves from that environment's site-packages, and run
python-cad --version.
Viewer TypeScript is maintainer source in viewer/; only its verified,
model-free production shell is included in the wheel. See
docs/build-semantics.md,
docs/manifests.md,
docs/project-configuration.md,
docs/public-api.md, and
docs/viewer-delivery.md for detailed reference.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file python_cad_tools-0.1.4.dev1.tar.gz.
File metadata
- Download URL: python_cad_tools-0.1.4.dev1.tar.gz
- Upload date:
- Size: 964.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a15227d5a771e280557fe1eaee1e713528e78a5fa21eea9da8df6e177500b2d1
|
|
| MD5 |
1347a2f2cd4b73356a936a79980b8159
|
|
| BLAKE2b-256 |
60f0517dc06b6331fcab311d2e050e4854cba07a0e6da59851c9c97902fdfc27
|
File details
Details for the file python_cad_tools-0.1.4.dev1-py3-none-any.whl.
File metadata
- Download URL: python_cad_tools-0.1.4.dev1-py3-none-any.whl
- Upload date:
- Size: 1.0 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e8640469cd7da0840ce22ee5989b8d44d9e5753e345ad172cc65ead50894d448
|
|
| MD5 |
6aa99bf462410b7925f6c339685739c3
|
|
| BLAKE2b-256 |
bf15dc9ec900a29d4ed5a926e2eb3b546da9ae3579b3819c1530f6ed35e4b6ab
|