first commit

This commit is contained in:
2026-07-22 13:48:46 +08:00
commit c87751c3dc
2820 changed files with 726976 additions and 0 deletions
+17
View File
@@ -0,0 +1,17 @@
# Assembly
## Class Definition
```python
class Assembly(assembly_id: str, name: Optional[str] = None, components: Tuple[Component, ...] = (), connectors: Tuple[Connector, ...] = (), constraints: Tuple[Constraint, ...] = (), grounded_component_ids: Tuple[str, ...] = ())
```
*Source: product.py*
## Import Surface
- top-level: `from simplecadapi import Assembly`
## Description
Product structure containing placed Part or subassembly components.
@@ -0,0 +1,21 @@
# BSplineFitResult
## Class Definition
```python
class BSplineFitResult(degree: int, control_points: Tuple[PointTuple, ...], knots: Tuple[float, ...], sample_parameters: Tuple[float, ...], max_error: float, rms_error: float, tolerance: float, fairing: float, iterations: int, converged: bool)
```
*Source: math.py*
## Import Surface
- top-level: `from simplecadapi import BSplineFitResult`
## Description
Result from fitting a cubic B-spline to sampled curve points.
The result stores a complete, normalized B-spline definition suitable for
passing into the exact B-spline edge/wire APIs: cubic degree, control
points, and a full clamped knot vector.
+17
View File
@@ -0,0 +1,17 @@
# Component
## Class Definition
```python
class Component(component_id: str, item: AssemblyItem, placement: Placement, name: Optional[str] = None)
```
*Source: product.py*
## Import Surface
- top-level: `from simplecadapi import Component`
## Description
Assembly-local instance of a Part or subassembly.
+22
View File
@@ -0,0 +1,22 @@
# Connector
## Class Definition
```python
class Connector(connector_id: str, geometry_ref: Optional[GeometryRef] = None, name: Optional[str] = None, anchor: Optional[ConnectorAnchor] = None)
```
*Source: product.py*
## Import Surface
- top-level: `from simplecadapi import Connector`
## Description
Semantic datum frame anchored by geometry, placement, or forwarding.
Geometry connectors derive placement from a selected BREP sub-shape.
Placement connectors store an explicit local datum frame. Forwarded
connectors expose a component connector as an assembly-level public
interface.
@@ -0,0 +1,19 @@
# ConnectorAnchor
## Class Definition
```python
class ConnectorAnchor(anchor_kind: str, geometry_ref: Optional[GeometryRef] = None, placement: Optional[Placement] = None, source_component_id: Optional[str] = None, source_connector_id: Optional[str] = None, offset: Optional[Placement] = None)
```
*Source: product.py*
## Import Surface
- top-level: `from simplecadapi import ConnectorAnchor`
## Description
Serializable source for a connector datum frame.
Supported `anchor_kind` values are `geometry`, `placement`, and `forwarded`.
@@ -0,0 +1,17 @@
# ConnectorRef
## Class Definition
```python
class ConnectorRef(component_id: str, connector_id: str)
```
*Source: product.py*
## Import Surface
- top-level: `from simplecadapi import ConnectorRef`
## Description
Reference to a connector through a component instance.
+17
View File
@@ -0,0 +1,17 @@
# Const
## Class Definition
```python
class Const(value: float, expr_id: str = field(default_factory=lambda : _make_expr_id('const')))
```
*Source: expr.py*
## Import Surface
- top-level: `from simplecadapi import Const`
## Description
Immutable constant node used in the v2 expression graph.
@@ -0,0 +1,17 @@
# Constraint
## Class Definition
```python
class Constraint(constraint_id: str, constraint_kind: ConstraintKind, connector_a: ConnectorRef, connector_b: ConnectorRef, drive_distance: Optional[float] = None, distance_limit: Optional[ScalarLimit] = None, drive_angle_degrees: Optional[float] = None, angle_limit: Optional[ScalarLimit] = None, pitch_radius_a: Optional[float] = None, pitch_radius_b: Optional[float] = None, pulley_radius_a: Optional[float] = None, pulley_radius_b: Optional[float] = None, pitch_radius: Optional[float] = None, phase_offset: Optional[float] = None, name: Optional[str] = None)
```
*Source: product.py*
## Import Surface
- top-level: `from simplecadapi import Constraint`
## Description
Connector-to-connector assembly constraint.
@@ -0,0 +1,17 @@
# ConstraintReport
## Class Definition
```python
class ConstraintReport(solved: bool, grounded_component_ids: Tuple[str, ...], solved_component_ids: Tuple[str, ...], unsolved_component_ids: Tuple[str, ...], residuals: Tuple[ConstraintResidual, ...])
```
*Source: product.py*
## Import Surface
- top-level: `from simplecadapi import ConstraintReport`
## Description
Assembly constraint inspection report.
@@ -0,0 +1,17 @@
# ConstraintResidual
## Class Definition
```python
class ConstraintResidual(constraint_id: str, translation_error: float, angular_error_degrees: float, within_tolerance: bool)
```
*Source: product.py*
## Import Surface
- top-level: `from simplecadapi import ConstraintResidual`
## Description
Residual for a single assembly constraint.
+17
View File
@@ -0,0 +1,17 @@
# Expr
## Class Definition
```python
class Expr(op: str, args: Tuple[ScalarExpr, ...], expr_id: str = field(default_factory=lambda : _make_expr_id('expr')))
```
*Source: expr.py*
## Import Surface
- top-level: `from simplecadapi import Expr`
## Description
Derived scalar expression node built from one or more operands.
@@ -0,0 +1,17 @@
# ExpressionGraph
## Class Definition
```python
class ExpressionGraph()
```
*Source: expr.py*
## Import Surface
- top-level: `from simplecadapi import ExpressionGraph`
## Description
A lightweight registry of expression DAG nodes.
@@ -0,0 +1,30 @@
# FreeCADScriptTranslator
## Class Definition
```python
class FreeCADScriptTranslator(document_name: str = 'SimpleCADModel')
```
*Source: translator/freecad_translator/script_translator.py*
## Import Surface
- translator backend: `from simplecadapi.translator.freecad_translator import FreeCADScriptTranslator`
## Description
Compile a SimpleCAD model payload into a FreeCAD Python script.
Current design goals:
- Translate only from the canonical low-level `graph` IR
- Preserve node metadata and graph lineage as FreeCAD custom properties
- Preserve `expression_graph` as explicit translator metadata
- Preserve exported assembly constraints as document metadata objects
- Keep assembly metadata from the full model payload alongside the IR-driven
geometry translation
The generated script focuses on `Part`-workbench-style objects and shape
construction, which is a better first target for the current canonical graph
than a full `Sketcher/PartDesign` mapping.
@@ -0,0 +1,22 @@
# GeometryRef
## Class Definition
```python
class GeometryRef(kind: str, source_node_id: Optional[str], geo_selector: Dict[str, Any], flip: bool = False)
```
*Source: product.py*
## Import Surface
- top-level: `from simplecadapi import GeometryRef`
## Description
Serializable reference to a sub-shape selected via QL.
Wraps the geo_selector fingerprint + source graph node id so the
exact sub-element (Face/Edge/Vertex) can be re-resolved at translation
time or during constraint solving. When flip is True, the derived
placement Z axis is negated.
@@ -0,0 +1,31 @@
# GraphSession
## Class Definition
```python
class GraphSession(graph_id: Optional[str] = None)
```
*Source: graph.py*
## Import Surface
- top-level: `from simplecadapi import GraphSession`
## Description
Context manager that records CAD operations into a DAG.
with GraphSession() as session:
n1 = record_operation(
"make_line_redge", {"start": (0, 0, 0), "end": (1, 0, 0)}
)
n2 = record_operation(
"make_line_redge", {"start": (1, 0, 0), "end": (1, 1, 0)}
)
record_operation(
"make_wire_from_edges_rwire", {"edge_count": 2}, inputs=[n1, n2]
)
# Access the graph after the session
print(session.graph.topological_order())
+17
View File
@@ -0,0 +1,17 @@
# Material
## Class Definition
```python
class Material(material_id: str, name: Optional[str] = None, density: Optional[float] = None, density_unit: Optional[str] = None, color: Optional[Vec3] = None)
```
*Source: product.py*
## Import Surface
- top-level: `from simplecadapi import Material`
## Description
Material definition assigned to a Part through `assign_material_rpart`.
+17
View File
@@ -0,0 +1,17 @@
# Part
## Class Definition
```python
class Part(part_id: str, body: Solid, name: Optional[str] = None, material: Optional[Material] = None, connectors: Tuple[Connector, ...] = ())
```
*Source: product.py*
## Import Surface
- top-level: `from simplecadapi import Part`
## Description
Single-body product item wrapping exactly one Solid.
+17
View File
@@ -0,0 +1,17 @@
# Placement
## Class Definition
```python
class Placement(origin: Vec3, x_axis: Vec3 = (1.0, 0.0, 0.0), y_axis: Vec3 = (0.0, 1.0, 0.0), z_axis: Vec3 = (0.0, 0.0, 1.0))
```
*Source: product.py*
## Import Surface
- top-level: `from simplecadapi import Placement`
## Description
Right-handed placement mapping child-local coordinates to parent coordinates.
+217
View File
@@ -0,0 +1,217 @@
# SimpleCAD API Index
This index includes generated docs for the public SimpleCAD API surface, including geometry operations, graph/model JSON workflows, expressions, QL, and export helpers.
## Import Surfaces
- Entries marked `top-level` are exported from `simplecadapi` and can be imported with `from simplecadapi import <name>`.
- Entries marked `submodule` are public through the listed submodule, such as `simplecadapi.ql`.
- Entries marked `translator backend` are public only through `simplecadapi.translator.<backend>`.
## Basic Creation
- [make_2d_cut_rface](make_2d_cut_rface.md) *(from operations.py)* `top-level`
- [make_2d_intersect_rface](make_2d_intersect_rface.md) *(from operations.py)* `top-level`
- [make_2d_union_rface](make_2d_union_rface.md) *(from operations.py)* `top-level`
- [make_angle_arc_redge](make_angle_arc_redge.md) *(from operations.py)* `top-level`
- [make_angle_arc_rwire](make_angle_arc_rwire.md) *(from operations.py)* `top-level`
- [make_assembly_rassembly](make_assembly_rassembly.md) *(from operations.py)* `top-level`
- [make_box_rsolid](make_box_rsolid.md) *(from operations.py)* `top-level`
- [make_circle_redge](make_circle_redge.md) *(from operations.py)* `top-level`
- [make_circle_rface](make_circle_rface.md) *(from operations.py)* `top-level`
- [make_circle_rwire](make_circle_rwire.md) *(from operations.py)* `top-level`
- [make_compound_from_assembly_rcompound](make_compound_from_assembly_rcompound.md) *(from operations.py)* `top-level`
- [make_cone_rsolid](make_cone_rsolid.md) *(from operations.py)* `top-level`
- [make_connector_ref_rconnectorref](make_connector_ref_rconnectorref.md) *(from operations.py)* `top-level`
- [make_cylinder_rsolid](make_cylinder_rsolid.md) *(from operations.py)* `top-level`
- [make_edge_connector_rconnector](make_edge_connector_rconnector.md) *(from operations.py)* `top-level`
- [make_face_connector_rconnector](make_face_connector_rconnector.md) *(from operations.py)* `top-level`
- [make_face_from_sketch_rface](make_face_from_sketch_rface.md) *(from operations.py)* `top-level`
- [make_face_from_wire_rface](make_face_from_wire_rface.md) *(from operations.py)* `top-level`
- [make_face_from_wires_rface](make_face_from_wires_rface.md) *(from operations.py)* `top-level`
- [make_helix_redge](make_helix_redge.md) *(from operations.py)* `top-level`
- [make_helix_rwire](make_helix_rwire.md) *(from operations.py)* `top-level`
- [make_line_redge](make_line_redge.md) *(from operations.py)* `top-level`
- [make_material_rmaterial](make_material_rmaterial.md) *(from operations.py)* `top-level`
- [make_part_rpart](make_part_rpart.md) *(from operations.py)* `top-level`
- [make_placement_connector_rconnector](make_placement_connector_rconnector.md) *(from operations.py)* `top-level`
- [make_placement_rplacement](make_placement_rplacement.md) *(from operations.py)* `top-level`
- [make_point_rvertex](make_point_rvertex.md) *(from operations.py)* `top-level`
- [make_polyline_rwire](make_polyline_rwire.md) *(from operations.py)* `top-level`
- [make_rectangle_rface](make_rectangle_rface.md) *(from operations.py)* `top-level`
- [make_rectangle_rwire](make_rectangle_rwire.md) *(from operations.py)* `top-level`
- [make_scalar_limit_rscalarlimit](make_scalar_limit_rscalarlimit.md) *(from operations.py)* `top-level`
- [make_segment_redge](make_segment_redge.md) *(from operations.py)* `top-level`
- [make_segment_rwire](make_segment_rwire.md) *(from operations.py)* `top-level`
- [make_sketch_rsketch](make_sketch_rsketch.md) *(from operations.py)* `top-level`
- [make_sphere_rsolid](make_sphere_rsolid.md) *(from operations.py)* `top-level`
- [make_spline_redge](make_spline_redge.md) *(from operations.py)* `top-level`
- [make_spline_rwire](make_spline_rwire.md) *(from operations.py)* `top-level`
- [make_three_point_arc_redge](make_three_point_arc_redge.md) *(from operations.py)* `top-level`
- [make_three_point_arc_rwire](make_three_point_arc_rwire.md) *(from operations.py)* `top-level`
- [make_vertex_connector_rconnector](make_vertex_connector_rconnector.md) *(from operations.py)* `top-level`
- [make_wire_from_edges_rwire](make_wire_from_edges_rwire.md) *(from operations.py)* `top-level`
- [make_wire_from_sketch_rwire](make_wire_from_sketch_rwire.md) *(from operations.py)* `top-level`
## Transforms
- [mirror_shape](mirror_shape.md) *(from operations.py)* `top-level`
- [rotate_shape](rotate_shape.md) *(from operations.py)* `top-level`
- [translate_shape](translate_shape.md) *(from operations.py)* `top-level`
## 3D Operations
- [extrude_rsolid](extrude_rsolid.md) *(from operations.py)* `top-level`
- [loft_rsolid](loft_rsolid.md) *(from operations.py)* `top-level`
- [revolve_rsolid](revolve_rsolid.md) *(from operations.py)* `top-level`
- [sweep_rsolid](sweep_rsolid.md) *(from operations.py)* `top-level`
## Tagging and Selection
- [apply_tag](apply_tag.md) *(from operations.py)* `top-level`
- [list_tags](list_tags.md) *(from operations.py)* `top-level`
- [select_edges_by_tag](select_edges_by_tag.md) *(from operations.py)* `top-level`
- [select_faces_by_tag](select_faces_by_tag.md) *(from operations.py)* `top-level`
## Boolean Operations
- [cut_rsolid](cut_rsolid.md) *(from operations.py)* `top-level`
- [intersect_rsolid](intersect_rsolid.md) *(from operations.py)* `top-level`
- [union_rsolid](union_rsolid.md) *(from operations.py)* `top-level`
## Export
- [export_step](export_step.md) *(from operations.py)* `top-level`
- [export_stl](export_stl.md) *(from operations.py)* `top-level`
## FreeCAD Translation
- [FreeCADScriptTranslator](FreeCADScriptTranslator.md) *(from translator/freecad_translator/script_translator.py)* `translator backend`
- [translate_model_json_to_fcstd](translate_model_json_to_fcstd.md) *(from translator/freecad_translator/api.py)* `translator backend`
- [translate_model_json_to_freecad_script](translate_model_json_to_freecad_script.md) *(from translator/freecad_translator/api.py)* `translator backend`
## Math Helpers
- [BSplineFitResult](BSplineFitResult.md) *(from math.py)* `top-level`
- [fit_cubic_bspline_control_points](fit_cubic_bspline_control_points.md) *(from math.py)* `top-level`
## Modeling Graph and Replay
- [GraphSession](GraphSession.md) *(from graph.py)* `top-level`
- [export_graph_json](export_graph_json.md) *(from serializer.py)* `top-level`
- [export_model_json](export_model_json.md) *(from serializer.py)* `top-level`
- [export_session_json](export_session_json.md) *(from serializer.py)* `top-level`
- [import_graph_json](import_graph_json.md) *(from serializer.py)* `top-level`
- [import_model_json](import_model_json.md) *(from serializer.py)* `top-level`
- [import_session_json](import_session_json.md) *(from serializer.py)* `top-level`
- [replay_graph](replay_graph.md) *(from serializer.py)* `top-level`
- [replay_model_json](replay_model_json.md) *(from serializer.py)* `top-level`
- [suspend_graph_recording](suspend_graph_recording.md) *(from graph.py)* `top-level`
## Expressions and Parameters
- [Const](Const.md) *(from expr.py)* `top-level`
- [Expr](Expr.md) *(from expr.py)* `top-level`
- [ExpressionGraph](ExpressionGraph.md) *(from expr.py)* `top-level`
- [Var](Var.md) *(from expr.py)* `top-level`
- [const](const_function.md) *(from expr.py)* `top-level`
- [var](var_function.md) *(from expr.py)* `top-level`
## Types and Errors
- [SimpleCADError](SimpleCADError.md) *(from errors.py)* `top-level`
- [Sketch](Sketch.md) *(from sketch.py)* `top-level`
- [SketchConstraint](SketchConstraint.md) *(from sketch.py)* `top-level`
- [SketchConstraintDiagnostic](SketchConstraintDiagnostic.md) *(from sketch.py)* `top-level`
- [SketchRef](SketchRef.md) *(from sketch.py)* `top-level`
- [SketchSolveResult](SketchSolveResult.md) *(from sketch.py)* `top-level`
## Advanced Features
- [chamfer_rsolid](chamfer_rsolid.md) *(from operations.py)* `top-level`
- [fillet_rsolid](fillet_rsolid.md) *(from operations.py)* `top-level`
- [helical_sweep_rsolid](helical_sweep_rsolid.md) *(from operations.py)* `top-level`
- [shell_rsolid](shell_rsolid.md) *(from operations.py)* `top-level`
## Evolve
- [make_n_hole_flange_rsolid](make_n_hole_flange_rsolid.md) *(from evolve.py)* `top-level`
- [make_naca_propeller_blade_rsolid](make_naca_propeller_blade_rsolid.md) *(from evolve.py)* `top-level`
- [make_threaded_rod_rsolid](make_threaded_rod_rsolid.md) *(from evolve.py)* `top-level`
## Other
- [Assembly](Assembly.md) *(from product.py)* `top-level`
- [Component](Component.md) *(from product.py)* `top-level`
- [Connector](Connector.md) *(from product.py)* `top-level`
- [ConnectorAnchor](ConnectorAnchor.md) *(from product.py)* `top-level`
- [ConnectorRef](ConnectorRef.md) *(from product.py)* `top-level`
- [Constraint](Constraint.md) *(from product.py)* `top-level`
- [ConstraintReport](ConstraintReport.md) *(from product.py)* `top-level`
- [ConstraintResidual](ConstraintResidual.md) *(from product.py)* `top-level`
- [GeometryRef](GeometryRef.md) *(from product.py)* `top-level`
- [Material](Material.md) *(from product.py)* `top-level`
- [Part](Part.md) *(from product.py)* `top-level`
- [Placement](Placement.md) *(from product.py)* `top-level`
- [ScalarLimit](ScalarLimit.md) *(from product.py)* `top-level`
- [SemanticDelta](SemanticDelta.md) *(from topology.py)* `top-level`
- [SemanticRef](SemanticRef.md) *(from topology.py)* `top-level`
- [add_arc_rsketch](add_arc_rsketch.md) *(from operations.py)* `top-level`
- [add_belt_constraint_rassembly](add_belt_constraint_rassembly.md) *(from operations.py)* `top-level`
- [add_bspline_rsketch](add_bspline_rsketch.md) *(from operations.py)* `top-level`
- [add_circle_rsketch](add_circle_rsketch.md) *(from operations.py)* `top-level`
- [add_component_rassembly](add_component_rassembly.md) *(from operations.py)* `top-level`
- [add_connector_rassembly](add_connector_rassembly.md) *(from operations.py)* `top-level`
- [add_connector_rpart](add_connector_rpart.md) *(from operations.py)* `top-level`
- [add_fixed_constraint_rassembly](add_fixed_constraint_rassembly.md) *(from operations.py)* `top-level`
- [add_gear_constraint_rassembly](add_gear_constraint_rassembly.md) *(from operations.py)* `top-level`
- [add_line_rsketch](add_line_rsketch.md) *(from operations.py)* `top-level`
- [add_point_rsketch](add_point_rsketch.md) *(from operations.py)* `top-level`
- [add_prismatic_constraint_rassembly](add_prismatic_constraint_rassembly.md) *(from operations.py)* `top-level`
- [add_rack_pinion_constraint_rassembly](add_rack_pinion_constraint_rassembly.md) *(from operations.py)* `top-level`
- [add_revolute_constraint_rassembly](add_revolute_constraint_rassembly.md) *(from operations.py)* `top-level`
- [and_](and_.md) *(from ql.py)* `submodule:ql`
- [assign_material_rpart](assign_material_rpart.md) *(from operations.py)* `top-level`
- [constrain_angle_rsketch](constrain_angle_rsketch.md) *(from operations.py)* `top-level`
- [constrain_coincident_rsketch](constrain_coincident_rsketch.md) *(from operations.py)* `top-level`
- [constrain_collinear_rsketch](constrain_collinear_rsketch.md) *(from operations.py)* `top-level`
- [constrain_concentric_rsketch](constrain_concentric_rsketch.md) *(from operations.py)* `top-level`
- [constrain_connect_rsketch](constrain_connect_rsketch.md) *(from operations.py)* `top-level`
- [constrain_diameter_rsketch](constrain_diameter_rsketch.md) *(from operations.py)* `top-level`
- [constrain_distance_rsketch](constrain_distance_rsketch.md) *(from operations.py)* `top-level`
- [constrain_distance_x_rsketch](constrain_distance_x_rsketch.md) *(from operations.py)* `top-level`
- [constrain_distance_y_rsketch](constrain_distance_y_rsketch.md) *(from operations.py)* `top-level`
- [constrain_equal_length_rsketch](constrain_equal_length_rsketch.md) *(from operations.py)* `top-level`
- [constrain_equal_radius_rsketch](constrain_equal_radius_rsketch.md) *(from operations.py)* `top-level`
- [constrain_fix_rsketch](constrain_fix_rsketch.md) *(from operations.py)* `top-level`
- [constrain_horizontal_rsketch](constrain_horizontal_rsketch.md) *(from operations.py)* `top-level`
- [constrain_length_rsketch](constrain_length_rsketch.md) *(from operations.py)* `top-level`
- [constrain_midpoint_rsketch](constrain_midpoint_rsketch.md) *(from operations.py)* `top-level`
- [constrain_parallel_rsketch](constrain_parallel_rsketch.md) *(from operations.py)* `top-level`
- [constrain_perpendicular_rsketch](constrain_perpendicular_rsketch.md) *(from operations.py)* `top-level`
- [constrain_point_on_rsketch](constrain_point_on_rsketch.md) *(from operations.py)* `top-level`
- [constrain_radius_rsketch](constrain_radius_rsketch.md) *(from operations.py)* `top-level`
- [constrain_symmetric_rsketch](constrain_symmetric_rsketch.md) *(from operations.py)* `top-level`
- [constrain_tangent_rsketch](constrain_tangent_rsketch.md) *(from operations.py)* `top-level`
- [constrain_vertical_rsketch](constrain_vertical_rsketch.md) *(from operations.py)* `top-level`
- [forward_connector_rassembly](forward_connector_rassembly.md) *(from operations.py)* `top-level`
- [geo](geo.md) *(from ql.py)* `submodule:ql`
- [get_sketch_entity_rsketchref](get_sketch_entity_rsketchref.md) *(from operations.py)* `top-level`
- [get_sketch_point_rsketchref](get_sketch_point_rsketchref.md) *(from operations.py)* `top-level`
- [ground_component_rassembly](ground_component_rassembly.md) *(from operations.py)* `top-level`
- [identity_placement_rplacement](identity_placement_rplacement.md) *(from operations.py)* `top-level`
- [inspect_assembly_constraints_rconstraintreport](inspect_assembly_constraints_rconstraintreport.md) *(from operations.py)* `top-level`
- [inspect_sketch_rsketchresult](inspect_sketch_rsketchresult.md) *(from operations.py)* `top-level`
- [linear_pattern_rsolidlist](linear_pattern_rsolidlist.md) *(from operations.py)* `top-level`
- [measure_constraint_residual_rconstraintresidual](measure_constraint_residual_rconstraintresidual.md) *(from operations.py)* `top-level`
- [meta](meta.md) *(from ql.py)* `submodule:ql`
- [not_](not_.md) *(from ql.py)* `submodule:ql`
- [or_](or_.md) *(from ql.py)* `submodule:ql`
- [place_component_rassembly](place_component_rassembly.md) *(from operations.py)* `top-level`
- [radial_pattern_rsolidlist](radial_pattern_rsolidlist.md) *(from operations.py)* `top-level`
- [render_screenshot_rpath](render_screenshot_rpath.md) *(from operations.py)* `top-level`
- [select](select.md) *(from ql.py)* `submodule:ql`
- [solve_assembly_constraints_rassembly](solve_assembly_constraints_rassembly.md) *(from operations.py)* `top-level`
- [tag](tag.md) *(from ql.py)* `submodule:ql`
- [unground_component_rassembly](unground_component_rassembly.md) *(from operations.py)* `top-level`
- [value](value.md) *(from ql.py)* `submodule:ql`
@@ -0,0 +1,17 @@
# ScalarLimit
## Class Definition
```python
class ScalarLimit(lower_value: float, upper_value: float)
```
*Source: product.py*
## Import Surface
- top-level: `from simplecadapi import ScalarLimit`
## Description
Closed scalar range for a constraint drive coordinate.
@@ -0,0 +1,17 @@
# SemanticDelta
## Class Definition
```python
class SemanticDelta(created: Tuple[SemanticRef, ...] = (), modified: Tuple[SemanticRef, ...] = (), deleted: Tuple[SemanticRef, ...] = (), metadata: Dict[str, Any] = field(default_factory=dict))
```
*Source: topology.py*
## Import Surface
- top-level: `from simplecadapi import SemanticDelta`
## Description
Semantic entity change set attached to a single recorded operation.
@@ -0,0 +1,17 @@
# SemanticRef
## Class Definition
```python
class SemanticRef(graph_id: str, node_id: str, entity_type: str, entity_id: str)
```
*Source: topology.py*
## Import Surface
- top-level: `from simplecadapi import SemanticRef`
## Description
Stable reference to a semantic model entity in the recorded graph.
@@ -0,0 +1,17 @@
# SimpleCADError
## Class Definition
```python
class SimpleCADError(operation: str, guidance: ErrorGuidance)
```
*Source: errors.py*
## Import Surface
- top-level: `from simplecadapi import SimpleCADError`
## Description
Structured ValueError variant for LLM-oriented repair guidance.
+24
View File
@@ -0,0 +1,24 @@
# Sketch
## Class Definition
```python
class Sketch(curves: Iterable[Edge | Wire] | None = None, *, name: Optional[str] = None, plane: Any = 'XY', sketch_id: Optional[str] = None)
```
*Source: sketch.py*
## Import Surface
- top-level: `from simplecadapi import Sketch`
## Description
Declarative constrained sketch container.
Use `make_sketch_rsketch(...)`, `add_point_rsketch(...)`,
`add_line_rsketch(...)`, `add_circle_rsketch(...)`, and
`constrain_*_rsketch(...)` as the canonical API for building sketch
profiles. Public sketch construction APIs are functional and return an
updated `Sketch` document. The legacy `curves` constructor remains only for
reading already-built wire/edge containers.
@@ -0,0 +1,17 @@
# SketchConstraint
## Class Definition
```python
class SketchConstraint(constraint_id: str, kind: str, targets: Tuple[Dict[str, Any], ...], value: Any = None, driving: bool = True, metadata: Dict[str, Any] = field(default_factory=dict))
```
*Source: sketch.py*
## Import Surface
- top-level: `from simplecadapi import SketchConstraint`
## Description
Serializable constraint inside a declarative sketch.
@@ -0,0 +1,17 @@
# SketchConstraintDiagnostic
## Class Definition
```python
class SketchConstraintDiagnostic(constraint_id: Optional[str], severity: str, code: str, message: str, residual: Optional[float] = None)
```
*Source: sketch.py*
## Import Surface
- top-level: `from simplecadapi import SketchConstraintDiagnostic`
## Description
Diagnostic emitted by the sketch solver.
+17
View File
@@ -0,0 +1,17 @@
# SketchRef
## Class Definition
```python
class SketchRef(sketch_id: str, entity_id: str, *, kind: str, subentity: str = 'geometry')
```
*Source: sketch.py*
## Import Surface
- top-level: `from simplecadapi import SketchRef`
## Description
Stable reference to a sketch entity or subentity.
@@ -0,0 +1,17 @@
# SketchSolveResult
## Class Definition
```python
class SketchSolveResult(sketch_id: str, status: str, dof: int, residual_norm: float, iterations: int, solved_points: Dict[str, Tuple[float, float]], solved_scalars: Dict[str, float], diagnostics: Tuple[SketchConstraintDiagnostic, ...] = ())
```
*Source: sketch.py*
## Import Surface
- top-level: `from simplecadapi import SketchSolveResult`
## Description
Result of solving a declarative sketch.
+17
View File
@@ -0,0 +1,17 @@
# Var
## Class Definition
```python
class Var(name: str, default: float, comment: str | None = None, expr_id: str = field(default_factory=lambda : _make_expr_id('var')))
```
*Source: expr.py*
## Import Surface
- top-level: `from simplecadapi import Var`
## Description
Named scalar parameter with a default fallback value.
@@ -0,0 +1,17 @@
# add_arc_rsketch
## API Definition
```python
def add_arc_rsketch(sketch: Sketch, entity_id: str, start: Union[SketchRef, str], end: Union[SketchRef, str], center: Union[SketchRef, str], *, construction: bool = False) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import add_arc_rsketch`
## Description
Add an arc entity to a sketch.
@@ -0,0 +1,17 @@
# add_belt_constraint_rassembly
## API Definition
```python
def add_belt_constraint_rassembly(assembly: Assembly, constraint_id: str, connector_a: ConnectorRef, connector_b: ConnectorRef, pulley_radius_a: float, pulley_radius_b: float, phase_offset: Optional[float] = None, name: Optional[str] = None) -> Assembly
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import add_belt_constraint_rassembly`
## Description
Couple two revolute axes as belt-linked pulleys with same-direction rotation.
@@ -0,0 +1,20 @@
# add_bspline_rsketch
## API Definition
```python
def add_bspline_rsketch(sketch: Sketch, entity_id: str, start: Union[SketchRef, str], end: Union[SketchRef, str], control_points: Sequence[Sequence[float]], degree: int = 3, knots: Optional[Sequence[float]] = None, multiplicities: Optional[Sequence[int]] = None, weights: Optional[Sequence[float]] = None, periodic: bool = False, *, construction: bool = False) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import add_bspline_rsketch`
## Description
Add a B-spline curve entity to a sketch.
The start/end point refs link the B-spline into a closed profile
loop. Control points are stored as literal 2-D coordinates.
@@ -0,0 +1,17 @@
# add_circle_rsketch
## API Definition
```python
def add_circle_rsketch(sketch: Sketch, entity_id: str, center: Union[SketchRef, str], radius: ScalarLike, *, construction: bool = False) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import add_circle_rsketch`
## Description
Add a named circle entity and return an updated sketch document.
@@ -0,0 +1,17 @@
# add_component_rassembly
## API Definition
```python
def add_component_rassembly(assembly: Assembly, item: Union[Part, Assembly], component_id: str, placement: Placement, name: Optional[str] = None) -> Assembly
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import add_component_rassembly`
## Description
Add a placed Part or subassembly component instance to an Assembly.
@@ -0,0 +1,17 @@
# add_connector_rassembly
## API Definition
```python
def add_connector_rassembly(assembly: Assembly, connector: Connector) -> Assembly
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import add_connector_rassembly`
## Description
Attach a connector datum frame to an Assembly definition.
@@ -0,0 +1,17 @@
# add_connector_rpart
## API Definition
```python
def add_connector_rpart(part: Part, connector: Connector) -> Part
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import add_connector_rpart`
## Description
Attach a connector datum frame to a Part definition.
@@ -0,0 +1,17 @@
# add_fixed_constraint_rassembly
## API Definition
```python
def add_fixed_constraint_rassembly(assembly: Assembly, constraint_id: str, connector_a: ConnectorRef, connector_b: ConnectorRef, name: Optional[str] = None) -> Assembly
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import add_fixed_constraint_rassembly`
## Description
Constrain two component connectors to the same frame.
@@ -0,0 +1,17 @@
# add_gear_constraint_rassembly
## API Definition
```python
def add_gear_constraint_rassembly(assembly: Assembly, constraint_id: str, connector_a: ConnectorRef, connector_b: ConnectorRef, pitch_radius_a: float, pitch_radius_b: float, phase_offset: Optional[float] = None, name: Optional[str] = None) -> Assembly
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import add_gear_constraint_rassembly`
## Description
Couple two revolute axes as meshing gears with inverse rotation.
@@ -0,0 +1,17 @@
# add_line_rsketch
## API Definition
```python
def add_line_rsketch(sketch: Sketch, entity_id: str, start: Union[SketchRef, str], end: Union[SketchRef, str], *, construction: bool = False) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import add_line_rsketch`
## Description
Add a named line entity and return an updated sketch document.
@@ -0,0 +1,17 @@
# add_point_rsketch
## API Definition
```python
def add_point_rsketch(sketch: Sketch, point_id: str, x: ScalarLike, y: ScalarLike) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import add_point_rsketch`
## Description
Add a named point entity and return an updated sketch document.
@@ -0,0 +1,17 @@
# add_prismatic_constraint_rassembly
## API Definition
```python
def add_prismatic_constraint_rassembly(assembly: Assembly, constraint_id: str, connector_a: ConnectorRef, connector_b: ConnectorRef, drive_distance: Optional[float] = None, distance_limit: Optional[ScalarLimit] = None, name: Optional[str] = None) -> Assembly
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import add_prismatic_constraint_rassembly`
## Description
Constrain two connectors as a prismatic slider pair.
@@ -0,0 +1,17 @@
# add_rack_pinion_constraint_rassembly
## API Definition
```python
def add_rack_pinion_constraint_rassembly(assembly: Assembly, constraint_id: str, rack_connector: ConnectorRef, pinion_connector: ConnectorRef, pitch_radius: float, phase_offset: Optional[float] = None, name: Optional[str] = None) -> Assembly
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import add_rack_pinion_constraint_rassembly`
## Description
Couple a prismatic rack axis to a revolute pinion axis.
@@ -0,0 +1,17 @@
# add_revolute_constraint_rassembly
## API Definition
```python
def add_revolute_constraint_rassembly(assembly: Assembly, constraint_id: str, connector_a: ConnectorRef, connector_b: ConnectorRef, drive_angle_degrees: Optional[float] = None, angle_limit: Optional[ScalarLimit] = None, name: Optional[str] = None) -> Assembly
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import add_revolute_constraint_rassembly`
## Description
Constrain two connectors as a revolute axis pair.
+17
View File
@@ -0,0 +1,17 @@
# and_
## API Definition
```python
def and_(*predicates: Predicate) -> Predicate
```
*Source: ql.py*
## Import Surface
- submodule: `from simplecadapi.ql import and_` or `simplecadapi.ql.and_`
## Description
Combine predicates so all of them must match.
+23
View File
@@ -0,0 +1,23 @@
# apply_tag
## API Definition
```python
def apply_tag(shape: AnyShape, tag: str) -> AnyShape
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import apply_tag`
## Description
Attach a normalized tag to a shape using the standard propagation policy.
Tags must already be normalized lowercase tokens such as
``role.mounting_surface`` or ``group.fasteners``. Propagation is intentionally
not configurable from the public API; the default tag policy propagates
semantic role/anchor/group tags downward and keeps topology-specific tags
local.
@@ -0,0 +1,17 @@
# assign_material_rpart
## API Definition
```python
def assign_material_rpart(part: Part, material: Material) -> Part
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import assign_material_rpart`
## Description
Assign a Material to a Part and return the updated Part.
@@ -0,0 +1,17 @@
# chamfer_rsolid
## API Definition
```python
def chamfer_rsolid(solid: Solid, edges: Union[Sequence[Edge], ShapeSelector], distance: ScalarLike) -> Solid
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import chamfer_rsolid`
## Description
Apply chamfers to selected solid edges.
@@ -0,0 +1,17 @@
# const
## API Definition
```python
def const(value: int | float) -> Const
```
*Source: expr.py*
## Import Surface
- top-level: `from simplecadapi import const`
## Description
Create a constant scalar node for parameterized modeling.
@@ -0,0 +1,17 @@
# constrain_angle_rsketch
## API Definition
```python
def constrain_angle_rsketch(sketch: Sketch, a: Union[SketchRef, str], b: Union[SketchRef, str], value: ScalarLike, *, constraint_id: Optional[str] = None, driving: bool = True) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_angle_rsketch`
## Description
Add a driving angle constraint between two sketch lines.
@@ -0,0 +1,17 @@
# constrain_coincident_rsketch
## API Definition
```python
def constrain_coincident_rsketch(sketch: Sketch, a: Union[SketchRef, str], b: Union[SketchRef, str], *, constraint_id: Optional[str] = None) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_coincident_rsketch`
## Description
Constrain two sketch points to be coincident.
@@ -0,0 +1,17 @@
# constrain_collinear_rsketch
## API Definition
```python
def constrain_collinear_rsketch(sketch: Sketch, a: Union[SketchRef, str], b: Union[SketchRef, str], *, constraint_id: Optional[str] = None) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_collinear_rsketch`
## Description
Constrain two sketch lines to lie on the same infinite line.
@@ -0,0 +1,17 @@
# constrain_concentric_rsketch
## API Definition
```python
def constrain_concentric_rsketch(sketch: Sketch, a: Union[SketchRef, str], b: Union[SketchRef, str], *, constraint_id: Optional[str] = None) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_concentric_rsketch`
## Description
Constrain two sketch circles to share a center.
@@ -0,0 +1,17 @@
# constrain_connect_rsketch
## API Definition
```python
def constrain_connect_rsketch(sketch: Sketch, a: Union[SketchRef, str], b: Union[SketchRef, str], *, constraint_id: Optional[str] = None) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_connect_rsketch`
## Description
Alias for `constrain_coincident_rsketch` using connection wording.
@@ -0,0 +1,17 @@
# constrain_diameter_rsketch
## API Definition
```python
def constrain_diameter_rsketch(sketch: Sketch, circle: Union[SketchRef, str], value: ScalarLike, *, constraint_id: Optional[str] = None, driving: bool = True) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_diameter_rsketch`
## Description
Add a driving circle diameter constraint.
@@ -0,0 +1,17 @@
# constrain_distance_rsketch
## API Definition
```python
def constrain_distance_rsketch(sketch: Sketch, a: Union[SketchRef, str], b: Union[SketchRef, str], value: ScalarLike, *, constraint_id: Optional[str] = None, driving: bool = True) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_distance_rsketch`
## Description
Add a driving point-to-point distance constraint.
@@ -0,0 +1,17 @@
# constrain_distance_x_rsketch
## API Definition
```python
def constrain_distance_x_rsketch(sketch: Sketch, a: Union[SketchRef, str], b: Union[SketchRef, str], value: ScalarLike, *, constraint_id: Optional[str] = None, driving: bool = True) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_distance_x_rsketch`
## Description
Add a driving horizontal distance constraint.
@@ -0,0 +1,17 @@
# constrain_distance_y_rsketch
## API Definition
```python
def constrain_distance_y_rsketch(sketch: Sketch, a: Union[SketchRef, str], b: Union[SketchRef, str], value: ScalarLike, *, constraint_id: Optional[str] = None, driving: bool = True) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_distance_y_rsketch`
## Description
Add a driving vertical distance constraint.
@@ -0,0 +1,17 @@
# constrain_equal_length_rsketch
## API Definition
```python
def constrain_equal_length_rsketch(sketch: Sketch, a: Union[SketchRef, str], b: Union[SketchRef, str], *, constraint_id: Optional[str] = None) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_equal_length_rsketch`
## Description
Constrain two sketch lines to have equal length.
@@ -0,0 +1,17 @@
# constrain_equal_radius_rsketch
## API Definition
```python
def constrain_equal_radius_rsketch(sketch: Sketch, a: Union[SketchRef, str], b: Union[SketchRef, str], *, constraint_id: Optional[str] = None) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_equal_radius_rsketch`
## Description
Constrain two sketch circles to have equal radius.
@@ -0,0 +1,17 @@
# constrain_fix_rsketch
## API Definition
```python
def constrain_fix_rsketch(sketch: Sketch, target: Union[SketchRef, str], *, constraint_id: Optional[str] = None) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_fix_rsketch`
## Description
Fix a sketch point or entity to its initial coordinates.
@@ -0,0 +1,17 @@
# constrain_horizontal_rsketch
## API Definition
```python
def constrain_horizontal_rsketch(sketch: Sketch, line: Union[SketchRef, str], *, constraint_id: Optional[str] = None) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_horizontal_rsketch`
## Description
Constrain a sketch line to be horizontal.
@@ -0,0 +1,17 @@
# constrain_length_rsketch
## API Definition
```python
def constrain_length_rsketch(sketch: Sketch, line: Union[SketchRef, str], value: ScalarLike, *, constraint_id: Optional[str] = None, driving: bool = True) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_length_rsketch`
## Description
Add a driving line length constraint.
@@ -0,0 +1,17 @@
# constrain_midpoint_rsketch
## API Definition
```python
def constrain_midpoint_rsketch(sketch: Sketch, point: Union[SketchRef, str], line: Union[SketchRef, str], *, constraint_id: Optional[str] = None) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_midpoint_rsketch`
## Description
Constrain a sketch point to the midpoint of a line.
@@ -0,0 +1,17 @@
# constrain_parallel_rsketch
## API Definition
```python
def constrain_parallel_rsketch(sketch: Sketch, a: Union[SketchRef, str], b: Union[SketchRef, str], *, constraint_id: Optional[str] = None) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_parallel_rsketch`
## Description
Constrain two sketch lines to be parallel.
@@ -0,0 +1,17 @@
# constrain_perpendicular_rsketch
## API Definition
```python
def constrain_perpendicular_rsketch(sketch: Sketch, a: Union[SketchRef, str], b: Union[SketchRef, str], *, constraint_id: Optional[str] = None) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_perpendicular_rsketch`
## Description
Constrain two sketch lines to be perpendicular.
@@ -0,0 +1,17 @@
# constrain_point_on_rsketch
## API Definition
```python
def constrain_point_on_rsketch(sketch: Sketch, point: Union[SketchRef, str], entity: Union[SketchRef, str], *, constraint_id: Optional[str] = None) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_point_on_rsketch`
## Description
Constrain a sketch point to lie on a line or circle.
@@ -0,0 +1,17 @@
# constrain_radius_rsketch
## API Definition
```python
def constrain_radius_rsketch(sketch: Sketch, circle: Union[SketchRef, str], value: ScalarLike, *, constraint_id: Optional[str] = None, driving: bool = True) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_radius_rsketch`
## Description
Add a driving circle radius constraint.
@@ -0,0 +1,17 @@
# constrain_symmetric_rsketch
## API Definition
```python
def constrain_symmetric_rsketch(sketch: Sketch, a: Union[SketchRef, str], b: Union[SketchRef, str], axis: Union[SketchRef, str], *, constraint_id: Optional[str] = None) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_symmetric_rsketch`
## Description
Constrain two sketch points to be symmetric about a line axis.
@@ -0,0 +1,17 @@
# constrain_tangent_rsketch
## API Definition
```python
def constrain_tangent_rsketch(sketch: Sketch, a: Union[SketchRef, str], b: Union[SketchRef, str], *, constraint_id: Optional[str] = None) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_tangent_rsketch`
## Description
Constrain supported sketch curves to be tangent.
@@ -0,0 +1,17 @@
# constrain_vertical_rsketch
## API Definition
```python
def constrain_vertical_rsketch(sketch: Sketch, line: Union[SketchRef, str], *, constraint_id: Optional[str] = None) -> Sketch
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import constrain_vertical_rsketch`
## Description
Constrain a sketch line to be vertical.
@@ -0,0 +1,34 @@
# cut_rsolid
## API Definition
```python
def cut_rsolid(*solids: Union[Solid, Sequence[Solid]], skip_non_intersecting: bool = True) -> Solid
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import cut_rsolid`
## Description
Compute the boolean difference of solids.
Accepts a base solid followed by one or more tool solids, including nested
sequences, and returns a single `Solid`.
## Parameters
### solids
- **Description**: One or more Solid objects or sequences of Solid. Nested sequences are flattened before processing; the first solid is the base, the rest are subtracted in order.
### skip_non_intersecting
- **Description**: When True, tools with no meaningful intersection are ignored for interactive convenience. Graph replay records this flag and should use False for strict diagnostic workflows.
## Returns
Solid: The cut result solid.
@@ -0,0 +1,31 @@
# export_graph_json
## API Definition
```python
def export_graph_json(graph: OperationGraph, indent: int = 2) -> str
```
*Source: serializer.py*
## Import Surface
- top-level: `from simplecadapi import export_graph_json`
## Description
Export an OperationGraph to a JSON string.
## Parameters
### graph
- **Description**: The graph to export.
### indent
- **Description**: JSON indentation level.
## Returns
JSON string representation.
@@ -0,0 +1,22 @@
# export_model_json
## API Definition
```python
def export_model_json(session: 'GraphSession', indent: int = 2) -> str
```
*Source: serializer.py*
## Import Surface
- top-level: `from simplecadapi import export_model_json`
## Description
Export the canonical 2.0 model seed JSON.
Current Phase 1 scope uses the active session as the container of:
- operation graph
- expression graph
- capabilities/schema metadata
@@ -0,0 +1,17 @@
# export_session_json
## API Definition
```python
def export_session_json(session: 'GraphSession', indent: int = 2) -> str
```
*Source: serializer.py*
## Import Surface
- top-level: `from simplecadapi import export_session_json`
## Description
Export a graph session including its expression graph.
@@ -0,0 +1,50 @@
# export_step
## API Definition
```python
def export_step(shapes: Union[AnyShape, Sequence[AnyShape]], filename: str) -> None
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import export_step`
## Description
Export shapes to STEP.
Use this function when you want to export one shape or many shapes into the
same STEP file. Passing `List[Solid]` is valid for pattern outputs or
explicit shape collections. Boolean operations return a single `Solid`.
## Parameters
### shapes
- **Description**: A single exportable shape or any nested sequence of exportable shapes. Lists of Solid are supported directly, including pattern or explicitly collected multi-shape results.
### filename
- **Description**: Output STEP file path.
## Returns
None: Writes the provided shapes into one STEP file.
## Examples
### Example 1
```python
main_body = make_box_rsolid(10, 4, 4, bottom_face_center=(0, 0, 0))
left_cap = make_sphere_rsolid(2.0, center=(-2.0, 2.0, 2.0))
right_cap = make_sphere_rsolid(2.0, center=(12.0, 2.0, 2.0))
body = union_rsolid(main_body, [left_cap, right_cap])
```
### Example 2
```python
export_step(body, "rounded_bar.step")
```
@@ -0,0 +1,50 @@
# export_stl
## API Definition
```python
def export_stl(shapes: Union[AnyShape, Sequence[AnyShape]], filename: str) -> None
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import export_stl`
## Description
Export shapes to STL.
Use this function when you want to export one compound, solid, or face into
the same STL file. Passing `List[Solid]` is valid for pattern outputs or
explicit shape collections. Boolean operations return a single `Solid`.
## Parameters
### shapes
- **Description**: A single Compound, Solid, or Face, or any nested sequence of those. Lists of Solid are supported directly, including pattern or explicitly collected multi-shape results.
### filename
- **Description**: Output STL file path.
## Returns
None: Writes the provided shapes into one STL file.
## Examples
### Example 1
```python
main_body = make_box_rsolid(10, 4, 4, bottom_face_center=(0, 0, 0))
left_cap = make_sphere_rsolid(2.0, center=(-2.0, 2.0, 2.0))
right_cap = make_sphere_rsolid(2.0, center=(12.0, 2.0, 2.0))
body = union_rsolid(main_body, [left_cap, right_cap])
```
### Example 2
```python
export_stl(body, "rounded_bar.stl")
```
@@ -0,0 +1,17 @@
# extrude_rsolid
## API Definition
```python
def extrude_rsolid(profile: Union[Wire, Face], direction: Tuple[float, float, float], distance: ScalarLike) -> Solid
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import extrude_rsolid`
## Description
Create a solid by extruding a profile.
@@ -0,0 +1,17 @@
# fillet_rsolid
## API Definition
```python
def fillet_rsolid(solid: Solid, edges: Union[Sequence[Edge], ShapeSelector], radius: ScalarLike) -> Solid
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import fillet_rsolid`
## Description
Apply fillets to selected solid edges.
@@ -0,0 +1,79 @@
# fit_cubic_bspline_control_points
## API Definition
```python
def fit_cubic_bspline_control_points(sample_points: Sequence[Sequence[float]], *, tolerance: float = 0.001, max_control_points: Optional[int] = None, fairing: float = 1e-06, duplicate_tolerance: float = 1e-12, knot_tolerance: float = 1e-09, raise_on_failure: bool = True) -> BSplineFitResult
```
*Source: math.py*
## Import Surface
- top-level: `from simplecadapi import fit_cubic_bspline_control_points`
## Description
Fit a minimal cubic B-spline control polygon to sampled curve points.
Uses chord-length parameterization, cubic clamped B-spline least squares,
second-difference fairing regularization, and adaptive simple knot insertion
until the maximum sample error is within `tolerance`. Only simple interior
knots are inserted, so a cubic result remains C2-continuous at every interior
knot.
## Parameters
### sample_points
- **Description**: Ordered 2D or 3D points sampled along the intended curve. Consecutive duplicate points within `duplicate_tolerance` are ignored.
### tolerance
- **Description**: Maximum allowed Euclidean fitting error at the input samples.
### max_control_points
- **Description**: Upper bound for fitted control points. Defaults to the cleaned sample count, with a cubic minimum of four controls.
### fairing
- **Description**: Non-negative second-difference regularization weight. Larger values prefer smoother control polygons while still respecting the error tolerance when possible.
### duplicate_tolerance
- **Description**: Distance threshold for removing consecutive duplicate sample points before chord-length parameterization.
### knot_tolerance
- **Description**: Normalized parameter spacing threshold used to avoid duplicate or near-boundary interior knots.
### raise_on_failure
- **Description**: Raise `ValueError` when the tolerance cannot be reached within `max_control_points`. If false, return the best non-converged result instead.
## Returns
`BSplineFitResult` containing cubic degree, control points, a full clamped
knot vector, knot multiplicities, sample parameters, and fitting error.
## Raises
- **ValueError**: If inputs are invalid, or if the tolerance cannot be met and `raise_on_failure=True`.
## Examples
### Example 1
```python
```python
from simplecadapi.math import fit_cubic_bspline_control_points
```
### Example 2
```python
samples = [(0.0, 0.0, 0.0), (1.0, 0.4, 0.0), (2.0, 0.0, 0.0)]
fit = fit_cubic_bspline_control_points(samples, tolerance=0.01)
print(fit.control_points)
print(fit.knots, fit.multiplicities)
```
```
@@ -0,0 +1,22 @@
# forward_connector_rassembly
## API Definition
```python
def forward_connector_rassembly(assembly: Assembly, connector_id: str, source_component_id: str, source_connector_id: str, name: Optional[str] = None, offset: Optional[Placement] = None) -> Assembly
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import forward_connector_rassembly`
## Description
Expose an internal component connector as an assembly-level connector.
The forwarded connector resolves to `source_component.placement *
source_connector.placement`, followed by the optional `offset` placement.
Parent assemblies can constrain to the subassembly's public connector
without depending on its private component structure.
+17
View File
@@ -0,0 +1,17 @@
# geo
## API Definition
```python
def geo(field: str, default: Any = None) -> SerializableKey
```
*Source: ql.py*
## Import Surface
- submodule: `from simplecadapi.ql import geo` or `simplecadapi.ql.geo`
## Description
Shortcut for reading `geom.*` fields inside QL queries.
@@ -0,0 +1,17 @@
# get_sketch_entity_rsketchref
## API Definition
```python
def get_sketch_entity_rsketchref(sketch: Sketch, entity_id: str) -> SketchRef
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import get_sketch_entity_rsketchref`
## Description
Return a stable ref for a named sketch entity.
@@ -0,0 +1,17 @@
# get_sketch_point_rsketchref
## API Definition
```python
def get_sketch_point_rsketchref(sketch: Sketch, point_path: str) -> SketchRef
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import get_sketch_point_rsketchref`
## Description
Return a stable ref for a sketch point or endpoint path.
@@ -0,0 +1,17 @@
# ground_component_rassembly
## API Definition
```python
def ground_component_rassembly(assembly: Assembly, component_id: str) -> Assembly
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import ground_component_rassembly`
## Description
Ground a component at its current authored placement.
@@ -0,0 +1,17 @@
# helical_sweep_rsolid
## API Definition
```python
def helical_sweep_rsolid(profile: Wire, pitch: float, height: float, radius: float, center: Tuple[float, float, float] = (0, 0, 0), dir: Tuple[float, float, float] = (0, 0, 1)) -> Solid
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import helical_sweep_rsolid`
## Description
Create a solid by sweeping a profile along a helical path.
@@ -0,0 +1,17 @@
# identity_placement_rplacement
## API Definition
```python
def identity_placement_rplacement() -> Placement
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import identity_placement_rplacement`
## Description
Create an identity placement.
@@ -0,0 +1,27 @@
# import_graph_json
## API Definition
```python
def import_graph_json(json_str: str) -> OperationGraph
```
*Source: serializer.py*
## Import Surface
- top-level: `from simplecadapi import import_graph_json`
## Description
Import an OperationGraph from a JSON string.
## Parameters
### json_str
- **Description**: JSON string to parse.
## Returns
Reconstructed OperationGraph.
@@ -0,0 +1,17 @@
# import_model_json
## API Definition
```python
def import_model_json(json_str: str) -> Dict[str, Any]
```
*Source: serializer.py*
## Import Surface
- top-level: `from simplecadapi import import_model_json`
## Description
Import canonical 2.0 model seed JSON.
@@ -0,0 +1,17 @@
# import_session_json
## API Definition
```python
def import_session_json(json_str: str) -> Dict[str, Any]
```
*Source: serializer.py*
## Import Surface
- top-level: `from simplecadapi import import_session_json`
## Description
Import session payload containing graph and expression graph.
@@ -0,0 +1,17 @@
# inspect_assembly_constraints_rconstraintreport
## API Definition
```python
def inspect_assembly_constraints_rconstraintreport(assembly: Assembly) -> ConstraintReport
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import inspect_assembly_constraints_rconstraintreport`
## Description
Inspect all assembly constraint residuals without mutating the assembly.
@@ -0,0 +1,17 @@
# inspect_sketch_rsketchresult
## API Definition
```python
def inspect_sketch_rsketchresult(sketch: Sketch, *, require_fully_constrained: bool = False, strict: bool = True, tolerance: float = 1e-07, max_iterations: int = 80) -> SketchSolveResult
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import inspect_sketch_rsketchresult`
## Description
Inspect sketch constraints by running the solver without recording graph nodes.
@@ -0,0 +1,31 @@
# intersect_rsolid
## API Definition
```python
def intersect_rsolid(*solids: Union[Solid, Sequence[Solid]]) -> Solid
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import intersect_rsolid`
## Description
Compute the boolean intersection of solids.
Accepts one or more solids, including nested sequences, and returns a single
`Solid`. If the inputs do not overlap meaningfully, the API raises a clear
error instead of returning an empty list.
## Parameters
### solids
- **Description**: One or more Solid objects or sequences of Solid. Nested sequences are flattened before processing.
## Returns
Solid: The overlap region as a single solid.
@@ -0,0 +1,17 @@
# linear_pattern_rsolidlist
## API Definition
```python
def linear_pattern_rsolidlist(shape: AnyShape, direction: Tuple[float, float, float], count: int, spacing: float) -> List[Solid]
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import linear_pattern_rsolidlist`
## Description
Create a linear pattern of solids.
+17
View File
@@ -0,0 +1,17 @@
# list_tags
## API Definition
```python
def list_tags(shape: AnyShape) -> List[str]
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import list_tags`
## Description
Return shape tags in deterministic sorted order.
@@ -0,0 +1,17 @@
# loft_rsolid
## API Definition
```python
def loft_rsolid(profiles: List[Wire], ruled: bool = False) -> Solid
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import loft_rsolid`
## Description
Create a solid by lofting multiple profiles.
@@ -0,0 +1,36 @@
# make_2d_cut_rface
## API Definition
```python
def make_2d_cut_rface(body: Face, tool: Face) -> Face
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import make_2d_cut_rface`
## Description
Subtract one 2D face from another (2D boolean difference).
## Parameters
### body
- **Type**: `Face`
- **Description**: The face to subtract from.
### tool
- **Type**: `Face`
- **Description**: The face to subtract (the cutter).
## Returns
-------
Face
The resulting face after subtraction. The result may contain
inner wires (holes) if the tool was fully inside the body.
@@ -0,0 +1,35 @@
# make_2d_intersect_rface
## API Definition
```python
def make_2d_intersect_rface(face_a: Face, face_b: Face) -> Face
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import make_2d_intersect_rface`
## Description
Compute the boolean intersection of two 2D faces.
## Parameters
### face_a
- **Type**: `Face`
- **Description**: First face.
### face_b
- **Type**: `Face`
- **Description**: Second face.
## Returns
-------
Face
The overlapping region of the two faces.
@@ -0,0 +1,36 @@
# make_2d_union_rface
## API Definition
```python
def make_2d_union_rface(face_a: Face, face_b: Face) -> Face
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import make_2d_union_rface`
## Description
Compute the boolean union of two 2D faces.
## Parameters
### face_a
- **Type**: `Face`
- **Description**: First face.
### face_b
- **Type**: `Face`
- **Description**: Second face.
## Returns
-------
Face
The merged face. Both inputs must overlap or touch so that the
result is a single connected face.
@@ -0,0 +1,17 @@
# make_angle_arc_redge
## API Definition
```python
def make_angle_arc_redge(center: Tuple[float, float, float], radius: ScalarLike, start_angle: ScalarLike, end_angle: ScalarLike, normal: Tuple[float, float, float] = (0, 0, 1)) -> Edge
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import make_angle_arc_redge`
## Description
Create an arc edge from a center, radius, and angle range.
@@ -0,0 +1,17 @@
# make_angle_arc_rwire
## API Definition
```python
def make_angle_arc_rwire(center: Tuple[float, float, float], radius: float, start_angle: float, end_angle: float, normal: Tuple[float, float, float] = (0, 0, 1)) -> Wire
```
*Source: operations.py*
## Import Surface
- top-level: `from simplecadapi import make_angle_arc_rwire`
## Description
Create a wire containing an arc defined by a center, radius, and angle range.

Some files were not shown because too many files have changed in this diff Show More