Skip to main content

A simplified CAD modeling Python API based on CADQuery

Project description

SimpleCADAPI

SimpleCADAPI is an imperative CAD modeling Python package based on CADQuery. Its goal is to encapsulate common modeling operations into a clear, composable, testable functional API, and to support distributing "documentation + scripts + runtime installation" workflows via Skills.

README Scope

This README only covers package-level capabilities, installation methods, publishing/packaging workflows, and Skills usage instructions. Experimental scripts and temporary modeling examples are not included as formal documentation.

Package Installation (Python Package Managers)

Current package name: simplecadapi, version: 2.0.9 (see pyproject.toml).

Method A: Install from package repository with pip

pip install simplecadapi

Optional development dependencies:

pip install "simplecadapi[dev]"

Method B: Install with uv

Install in the current virtual environment:

uv pip install simplecadapi

Add as a project dependency in pyproject.toml:

uv add simplecadapi

Method C: Install from local build artifacts

The repository already contains example build artifacts (dist/):

pip install dist/simplecadapi-2.0.9-py3-none-any.whl

If you need to rebuild:

uv build

Quick Verification of Installation

import simplecadapi as scad

box = scad.make_box_rsolid(10.0, 20.0, 30.0)
scad.export_stl(box, "example_box.stl")
scad.export_step(box, "example_box.step")

How to Package and Use Skills

This project provides the skill-pack CLI for generating lightweight skill packages (thin mode): No built-in SDK source code, runtime installs simplecadapi from the package repository.

1) Packaging Command

Execute in the repository root directory:

uv run skill-pack --refresh-docs --archive --skill-name simplecad-self-evolve

Common parameters:

  • --output-root <dir>: Output directory (default ./skills)
  • --package-name <pkg>: Runtime installation package name (default reads from project.name)
  • --package-version <ver>: Runtime installation version (default reads from project.version)
  • --no-clean: Do not clean existing output directory
  • --archive: Additionally generate <skill-name>.tar.gz

2) Packaging Result Structure

After packaging, you will get a directory similar to:

  • skills/simplecad-self-evolve/SKILL.md
  • skills/simplecad-self-evolve/scripts/
  • skills/simplecad-self-evolve/references/
  • skills/simplecad-self-evolve/cases/simplecad_self_evolve_cases/

3) Install and Verify Runtime in the Skill Directory

cd skills/simplecad-self-evolve
PYTHON_BIN=.venv/bin/python scripts/install.sh
PYTHON_BIN=.venv/bin/python scripts/with_skill.sh --check

4) Run Your Program with the Wrapper Script

PYTHON_BIN=.venv/bin/python scripts/with_skill.sh -- .venv/bin/python your_script.py

5) Activate skill-local Case Module Path

eval "$(scripts/with_skill.sh --print-env)"

After activation, you can directly import:

from simplecad_self_evolve_cases.evolve import make_involute_spur_gear_rsolid

6) Add New Functions to the Skill-local evolve Module

scripts/add_new_case.sh path/to/new_case.py

7) Jupyter and Structure Validation

scripts/jupyter_with_skill.sh lab
scripts/validate_skill.sh

Auto Tools

The project includes 4 main CLIs:

  • auto-docs-gen: Generate docs/api/ documentation from API source code
  • make-export: Update imports/exports in src/simplecadapi/__init__.py
  • evolve: Extract functions from scripts and append to the evolve module
  • skill-pack: Package thin skill (documentation + scripts + cases)

Examples:

uv run make-export --dry-run
uv run auto-docs-gen
uv run evolve path/to/your_case.py
uv run skill-pack --refresh-docs --archive

RAGFlow Documentation Sync

scripts/sync_ragflow_docs.py is used to incrementally sync Markdown files under docs/ to the specified RAGFlow dataset, chunked by H2 headings; the document's chunk_method is set to manual.

Prepare the environment:

.venv/bin/python -m pip install ragflow-sdk

It is recommended to use .env (already added to .gitignore):

RAGFLOW_API_KEY=your_key_here
RAGFLOW_BASE_URL=http://localhost
RAGFLOW_DATASET_NAME=SimpleCADAPI

Run the sync:

set -a && source .env && set +a
.venv/bin/python scripts/sync_ragflow_docs.py --create-dataset

Common parameters:

  • --dataset-id / RAGFLOW_DATASET_ID: Directly specify the dataset ID (avoid name conflicts)
  • --delete-removed: Delete documents that have been removed locally
  • --dry-run: Only preview changes without executing writes
  • --progress-interval N: Print progress every N documents

Development and Testing

Local development installation (editable):

uv pip install -e ".[dev]"

Run unit tests:

uv run python -m unittest test/test_all_features.py

Run examples:

uv run python examples.py

Core Design Constraints (Brief)

  • API functions uniformly use snake_case and reflect return types in function names (e.g., *_rsolid, *_rwire).
  • Core types are kept as stable as possible; functionality is extended by adding new functions (Open-Closed Principle).
  • Support SimpleWorkplane context for local coordinate modeling.
  • Export interfaces support single entities, multiple entities, and nested list inputs.

Documentation Entry Points

  • API documentation: docs/api/
  • Core documentation: docs/core/

License

MIT, see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

simplecadapi-2.0.9.tar.gz (490.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

simplecadapi-2.0.9-py3-none-any.whl (210.9 kB view details)

Uploaded Python 3

File details

Details for the file simplecadapi-2.0.9.tar.gz.

File metadata

  • Download URL: simplecadapi-2.0.9.tar.gz
  • Upload date:
  • Size: 490.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.19

File hashes

Hashes for simplecadapi-2.0.9.tar.gz
Algorithm Hash digest
SHA256 015aa9b07e818f78bc600278d9569c86a66ce183407d6f55c6526cdab28f841a
MD5 0fb522af62107b8108ebb79249f5c004
BLAKE2b-256 049b400e3889547514cf5ae7be580aec9396faf46ca28ac7bfc076821dd10ef7

See more details on using hashes here.

File details

Details for the file simplecadapi-2.0.9-py3-none-any.whl.

File metadata

  • Download URL: simplecadapi-2.0.9-py3-none-any.whl
  • Upload date:
  • Size: 210.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.19

File hashes

Hashes for simplecadapi-2.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 2679a45cb0e230e7dbc25bcd4d5f3e6fffb852e790cdf8ebd3cb336eba8ebec4
MD5 0d03c4a9d3e0e7f0b7a78a8efee7762b
BLAKE2b-256 a36e61af246bad84fcb2eeda7e3fe65ceb10ffdbe75968d567c7d3980d93fe09

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page