SimpleCADAPI is an OCP-native imperative CAD modeling Python package. It keeps the 1.x-style functional API while adding v2 graph recording, expression parameters, and replayable model JSON workflows.
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.
Current package name: simplecadapi (see pyproject.toml for the version).
pip install simplecadapiOptional development dependencies:
pip install "simplecadapi[dev]"Install in the current virtual environment:
uv pip install simplecadapiAdd as a project dependency in pyproject.toml:
uv add simplecadapiBuild a local wheel/sdist first if you want to install from local artifacts:
uv buildimport 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")This project provides the skill-pack CLI for generating lightweight SDK reference skills: No built-in SDK source code, focused on API and architecture descriptions.
Execute in the repository root directory:
uv run skill-pack --refresh-docs --archive --skill-name simplecadapiCommon parameters:
--output-root <dir>: Output directory (default./skills)--package-name <pkg>: Runtime installation package name (default reads fromproject.name)--package-version <ver>: Runtime installation version (default reads fromproject.version)--no-clean: Do not clean existing output directory--archive: Additionally generate<skill-name>.tar.gz
After packaging, you will get a directory similar to:
skills/simplecadapi/SKILL.mdskills/simplecadapi/references/skills/simplecadapi/references/docs/api/skills/simplecadapi/references/docs/core/
cd skills/simplecadapiKey entry points:
skills/simplecadapi/SKILL.mdskills/simplecadapi/references/SDK_OVERVIEW.mdskills/simplecadapi/references/SDK_SURFACES.mdskills/simplecadapi/references/V2_MODELING_WORKFLOWS.mdskills/simplecadapi/references/SDK_PACKAGE_SUMMARY.mdskills/simplecadapi/references/docs/api/README.mdskills/simplecadapi/references/docs/core/README.md
from simplecadapi import GraphSession, export_model_json, replay_model_json
with GraphSession() as session:
...
model_json = export_model_json(session)
rebuilt = replay_model_json(model_json)
print(len(rebuilt))For detailed operation-by-operation JSON formats and replay behavior, see:
docs/core/serialization/README.mddocs/core/operation_graph_json_spec.mdexamples/07_serialization_operation_tree.py
The project includes 4 main CLIs:
auto-docs-gen: Generatedocs/api/documentation from the public API source surfacemake-export: Update imports/exports insrc/simplecadapi/__init__.pyevolve: Extract functions from scripts for repository-managed evolve modulesskill-pack: Package thin SDK skill (documentation only)
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 --archivescripts/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-sdkIt is recommended to use .env (already added to .gitignore):
RAGFLOW_API_KEY=your_key_here
RAGFLOW_BASE_URL=http://localhost
RAGFLOW_DATASET_NAME=SimpleCADAPIRun the sync:
set -a && source .env && set +a
.venv/bin/python scripts/sync_ragflow_docs.py --create-datasetCommon 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
Local development installation (editable):
uv pip install -e ".[dev]"Run unit tests:
uv run python -m unittest test/test_all_features.pyRun examples:
uv run python examples/01_basic_modeling.py
uv run python examples/02_graph_replay.py
uv run python examples/03_expressions.py
uv run python examples/04_assembly_constraints.py
uv run python examples/05_loft_sweep_revolve.py
uv run python examples/06_parametric_gear_model.py
uv run python examples/06_parametric_gear_model.py- API functions uniformly use
snake_caseand reflect return types in function names (e.g.,*_rsolid,*_rwire). - Core types are OCP-native wrappers and are kept as stable as possible; functionality is extended by adding new functions (Open-Closed Principle).
- Support
SimpleWorkplanecontext for local coordinate modeling. - Export interfaces support single entities, multiple entities, and nested list inputs.
- API documentation:
docs/api/ - Core documentation:
docs/core/
MIT, see LICENSE.