simplecadapi 2.0.0b1__tar.gz → 2.0.0b2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/PKG-INFO +10 -3
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/README.md +9 -2
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/Const.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/Expr.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/ExpressionGraph.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/GraphSession.md +4 -0
- simplecadapi-2.0.0b2/docs/api/README.md +122 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/SemanticDelta.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/SemanticRef.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/SimpleCADError.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/Sketch.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/Var.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/and_.md +4 -0
- simplecadapi-2.0.0b2/docs/api/apply_tag.md +23 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/chamfer_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/const_function.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/cut_rsolidlist.md +9 -1
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/export_graph_json.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/export_model_json.md +5 -1
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/export_session_json.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/export_step.md +9 -6
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/export_stl.md +9 -6
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/extrude_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/fillet_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/geo.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/helical_sweep_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/import_graph_json.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/import_model_json.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/import_session_json.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/intersect_rsolidlist.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/linear_pattern_rsolidlist.md +4 -0
- simplecadapi-2.0.0b2/docs/api/list_tags.md +17 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/loft_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_angle_arc_redge.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_angle_arc_rwire.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_box_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_circle_redge.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_circle_rface.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_circle_rwire.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_cone_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_cylinder_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_face_from_wire_rface.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_helix_redge.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_helix_rwire.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_line_redge.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_n_hole_flange_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_naca_propeller_blade_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_point_rvertex.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_polyline_rwire.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_rectangle_rface.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_rectangle_rwire.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_segment_redge.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_segment_rwire.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_sphere_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_spline_redge.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_spline_rwire.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_threaded_rod_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_three_point_arc_redge.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_three_point_arc_rwire.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_wire_from_edges_rwire.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/meta.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/mirror_shape.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/not_.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/or_.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/radial_pattern_rsolidlist.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/render_screenshot_rpath.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/replay_graph.md +5 -1
- simplecadapi-2.0.0b2/docs/api/replay_model_json.md +17 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/revolve_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/rotate_shape.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/select.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/select_edges_by_tag.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/select_faces_by_tag.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/shell_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/suspend_graph_recording.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/sweep_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/tag.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/translate_shape.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/union_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/value.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/var_function.md +4 -0
- simplecadapi-2.0.0b2/docs/architecture/sdk-architecture-review.md +369 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/README.md +3 -2
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/compound.md +1 -1
- simplecadapi-2.0.0b2/docs/core/declarative_constraints.md +35 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/edge.md +21 -26
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/face.md +42 -47
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/operation_graph_json_spec.md +313 -249
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/rearchitecture_2_0.md +18 -20
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/rearchitecture_2_0_requirements.md +1 -3
- simplecadapi-2.0.0b2/docs/core/serialization/README.md +63 -0
- simplecadapi-2.0.0b2/docs/core/serialization/expressions-and-replay.md +146 -0
- simplecadapi-2.0.0b2/docs/core/serialization/features-booleans-transforms.md +471 -0
- simplecadapi-2.0.0b2/docs/core/serialization/primitives-and-profiles.md +457 -0
- simplecadapi-2.0.0b2/docs/core/serialization/scalar-fields.md +13 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/solid.md +45 -50
- simplecadapi-2.0.0b2/docs/core/tagged_mixin.md +90 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/vertex.md +24 -57
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/wire.md +34 -39
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/pyproject.toml +1 -1
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/__init__.py +4 -50
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/auto_tools/auto_docs_gen.py +38 -12
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/auto_tools/make_export.py +8 -104
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/auto_tools/skill_pack.py +111 -23
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/autotag.py +8 -8
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/core.py +74 -35
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/expr.py +1 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/freecad_translator.py +233 -181
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/graph.py +18 -12
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/operations.py +562 -425
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/ql.py +132 -11
- simplecadapi-2.0.0b2/src/simplecadapi/serializer.py +1673 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/tagging.py +22 -5
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/topology.py +30 -9
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/tracking.py +4 -0
- simplecadapi-2.0.0b1/docs/api/README.md +0 -150
- simplecadapi-2.0.0b1/docs/api/add_part_rassembly.md +0 -13
- simplecadapi-2.0.0b1/docs/api/bounds_rbbox.md +0 -23
- simplecadapi-2.0.0b1/docs/api/clear_constraints_rassembly.md +0 -13
- simplecadapi-2.0.0b1/docs/api/clone_assembly_rassembly.md +0 -13
- simplecadapi-2.0.0b1/docs/api/constrain_coincident_rassembly.md +0 -13
- simplecadapi-2.0.0b1/docs/api/constrain_concentric_rassembly.md +0 -13
- simplecadapi-2.0.0b1/docs/api/constrain_distance_rassembly.md +0 -13
- simplecadapi-2.0.0b1/docs/api/constrain_offset_rassembly.md +0 -13
- simplecadapi-2.0.0b1/docs/api/deserialize_scalar_field.md +0 -13
- simplecadapi-2.0.0b1/docs/api/eval_rarray.md +0 -35
- simplecadapi-2.0.0b1/docs/api/eval_rscalar.md +0 -35
- simplecadapi-2.0.0b1/docs/api/intersect_rscalarfield.md +0 -23
- simplecadapi-2.0.0b1/docs/api/make_assembly_rassembly.md +0 -13
- simplecadapi-2.0.0b1/docs/api/make_box_rscalarfield.md +0 -27
- simplecadapi-2.0.0b1/docs/api/make_capsule_rscalarfield.md +0 -31
- simplecadapi-2.0.0b1/docs/api/make_ellipsoid_rscalarfield.md +0 -27
- simplecadapi-2.0.0b1/docs/api/make_field_surface_rsolid.md +0 -13
- simplecadapi-2.0.0b1/docs/api/make_sphere_rscalarfield.md +0 -27
- simplecadapi-2.0.0b1/docs/api/replay_model_json.md +0 -13
- simplecadapi-2.0.0b1/docs/api/rotate_part_rassembly.md +0 -13
- simplecadapi-2.0.0b1/docs/api/rotate_rscalarfield.md +0 -31
- simplecadapi-2.0.0b1/docs/api/scale_rscalarfield.md +0 -27
- simplecadapi-2.0.0b1/docs/api/serialize_scalar_field.md +0 -13
- simplecadapi-2.0.0b1/docs/api/set_tag.md +0 -13
- simplecadapi-2.0.0b1/docs/api/smooth_subtract_rscalarfield.md +0 -31
- simplecadapi-2.0.0b1/docs/api/smooth_union_rscalarfield.md +0 -31
- simplecadapi-2.0.0b1/docs/api/solve_assembly_rresult.md +0 -13
- simplecadapi-2.0.0b1/docs/api/stack.md +0 -29
- simplecadapi-2.0.0b1/docs/api/stack_rassembly.md +0 -13
- simplecadapi-2.0.0b1/docs/api/subtract_rscalarfield.md +0 -27
- simplecadapi-2.0.0b1/docs/api/translate_part_rassembly.md +0 -13
- simplecadapi-2.0.0b1/docs/api/translate_rscalarfield.md +0 -27
- simplecadapi-2.0.0b1/docs/api/union_rscalarfield.md +0 -23
- simplecadapi-2.0.0b1/docs/core/declarative_constraints.md +0 -306
- simplecadapi-2.0.0b1/docs/core/tagged_mixin.md +0 -692
- simplecadapi-2.0.0b1/src/simplecadapi/constraints.py +0 -1470
- simplecadapi-2.0.0b1/src/simplecadapi/field.py +0 -542
- simplecadapi-2.0.0b1/src/simplecadapi/serializer.py +0 -1319
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/.gitignore +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/LICENSE +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/MANIFEST.in +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/coordinate_system.md +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/shell.md +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/simple_workplane.md +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/_vendor_warning_filters.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/auto_tools/__init__.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/auto_tools/evolution.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/errors.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/evolve.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/frame.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/__init__.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/ocp_booleans.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/ocp_builders.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/ocp_cast.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/ocp_curves.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/ocp_export.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/ocp_features.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/ocp_mesh.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/ocp_properties.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/ocp_topology.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/ocp_transforms.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/spline_fit.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/py.typed +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/sketch.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: simplecadapi
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.0b2
|
|
4
4
|
Summary: A simplified OCP-native CAD modeling Python API
|
|
5
5
|
Project-URL: Homepage, https://github.com/NiJingzhe/SimpleCADAPI
|
|
6
6
|
Project-URL: Repository, https://github.com/NiJingzhe/SimpleCADAPI
|
|
@@ -488,6 +488,14 @@ rebuilt = replay_model_json(model_json)
|
|
|
488
488
|
print(len(rebuilt))
|
|
489
489
|
```
|
|
490
490
|
|
|
491
|
+
## Serialization and Replay Docs
|
|
492
|
+
|
|
493
|
+
For detailed operation-by-operation JSON formats and replay behavior, see:
|
|
494
|
+
|
|
495
|
+
- [`docs/core/serialization/README.md`](docs/core/serialization/README.md)
|
|
496
|
+
- [`docs/core/operation_graph_json_spec.md`](docs/core/operation_graph_json_spec.md)
|
|
497
|
+
- [`examples/07_serialization_operation_tree.py`](examples/07_serialization_operation_tree.py)
|
|
498
|
+
|
|
491
499
|
## Auto Tools
|
|
492
500
|
|
|
493
501
|
The project includes 4 main CLIs:
|
|
@@ -558,10 +566,9 @@ Run examples:
|
|
|
558
566
|
uv run python examples/01_basic_modeling.py
|
|
559
567
|
uv run python examples/02_graph_replay.py
|
|
560
568
|
uv run python examples/03_expressions.py
|
|
561
|
-
uv run python examples/04_assembly_constraints.py
|
|
562
569
|
uv run python examples/05_loft_sweep_revolve.py
|
|
563
570
|
uv run python examples/06_parametric_gear_model.py
|
|
564
|
-
uv run python examples/
|
|
571
|
+
uv run python examples/07_serialization_operation_tree.py
|
|
565
572
|
```
|
|
566
573
|
|
|
567
574
|
## Core Design Constraints (Brief)
|
|
@@ -113,6 +113,14 @@ rebuilt = replay_model_json(model_json)
|
|
|
113
113
|
print(len(rebuilt))
|
|
114
114
|
```
|
|
115
115
|
|
|
116
|
+
## Serialization and Replay Docs
|
|
117
|
+
|
|
118
|
+
For detailed operation-by-operation JSON formats and replay behavior, see:
|
|
119
|
+
|
|
120
|
+
- [`docs/core/serialization/README.md`](docs/core/serialization/README.md)
|
|
121
|
+
- [`docs/core/operation_graph_json_spec.md`](docs/core/operation_graph_json_spec.md)
|
|
122
|
+
- [`examples/07_serialization_operation_tree.py`](examples/07_serialization_operation_tree.py)
|
|
123
|
+
|
|
116
124
|
## Auto Tools
|
|
117
125
|
|
|
118
126
|
The project includes 4 main CLIs:
|
|
@@ -183,10 +191,9 @@ Run examples:
|
|
|
183
191
|
uv run python examples/01_basic_modeling.py
|
|
184
192
|
uv run python examples/02_graph_replay.py
|
|
185
193
|
uv run python examples/03_expressions.py
|
|
186
|
-
uv run python examples/04_assembly_constraints.py
|
|
187
194
|
uv run python examples/05_loft_sweep_revolve.py
|
|
188
195
|
uv run python examples/06_parametric_gear_model.py
|
|
189
|
-
uv run python examples/
|
|
196
|
+
uv run python examples/07_serialization_operation_tree.py
|
|
190
197
|
```
|
|
191
198
|
|
|
192
199
|
## Core Design Constraints (Brief)
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# SimpleCAD API Index
|
|
2
|
+
|
|
3
|
+
This index includes generated docs for the public SimpleCAD API surface, including v2 graph, expression, and model JSON workflows.
|
|
4
|
+
|
|
5
|
+
## Import Surfaces
|
|
6
|
+
|
|
7
|
+
- Entries marked `top-level` are exported from `simplecadapi` and can be imported with `from simplecadapi import <name>`.
|
|
8
|
+
- Entries marked `submodule` are public through the listed submodule, such as `simplecadapi.ql`.
|
|
9
|
+
|
|
10
|
+
## Basic Creation
|
|
11
|
+
|
|
12
|
+
- [make_angle_arc_redge](make_angle_arc_redge.md) *(from operations.py)* `top-level`
|
|
13
|
+
- [make_angle_arc_rwire](make_angle_arc_rwire.md) *(from operations.py)* `top-level`
|
|
14
|
+
- [make_box_rsolid](make_box_rsolid.md) *(from operations.py)* `top-level`
|
|
15
|
+
- [make_circle_redge](make_circle_redge.md) *(from operations.py)* `top-level`
|
|
16
|
+
- [make_circle_rface](make_circle_rface.md) *(from operations.py)* `top-level`
|
|
17
|
+
- [make_circle_rwire](make_circle_rwire.md) *(from operations.py)* `top-level`
|
|
18
|
+
- [make_cone_rsolid](make_cone_rsolid.md) *(from operations.py)* `top-level`
|
|
19
|
+
- [make_cylinder_rsolid](make_cylinder_rsolid.md) *(from operations.py)* `top-level`
|
|
20
|
+
- [make_face_from_wire_rface](make_face_from_wire_rface.md) *(from operations.py)* `top-level`
|
|
21
|
+
- [make_helix_redge](make_helix_redge.md) *(from operations.py)* `top-level`
|
|
22
|
+
- [make_helix_rwire](make_helix_rwire.md) *(from operations.py)* `top-level`
|
|
23
|
+
- [make_line_redge](make_line_redge.md) *(from operations.py)* `top-level`
|
|
24
|
+
- [make_point_rvertex](make_point_rvertex.md) *(from operations.py)* `top-level`
|
|
25
|
+
- [make_polyline_rwire](make_polyline_rwire.md) *(from operations.py)* `top-level`
|
|
26
|
+
- [make_rectangle_rface](make_rectangle_rface.md) *(from operations.py)* `top-level`
|
|
27
|
+
- [make_rectangle_rwire](make_rectangle_rwire.md) *(from operations.py)* `top-level`
|
|
28
|
+
- [make_segment_redge](make_segment_redge.md) *(from operations.py)* `top-level`
|
|
29
|
+
- [make_segment_rwire](make_segment_rwire.md) *(from operations.py)* `top-level`
|
|
30
|
+
- [make_sphere_rsolid](make_sphere_rsolid.md) *(from operations.py)* `top-level`
|
|
31
|
+
- [make_spline_redge](make_spline_redge.md) *(from operations.py)* `top-level`
|
|
32
|
+
- [make_spline_rwire](make_spline_rwire.md) *(from operations.py)* `top-level`
|
|
33
|
+
- [make_three_point_arc_redge](make_three_point_arc_redge.md) *(from operations.py)* `top-level`
|
|
34
|
+
- [make_three_point_arc_rwire](make_three_point_arc_rwire.md) *(from operations.py)* `top-level`
|
|
35
|
+
- [make_wire_from_edges_rwire](make_wire_from_edges_rwire.md) *(from operations.py)* `top-level`
|
|
36
|
+
|
|
37
|
+
## Transforms
|
|
38
|
+
|
|
39
|
+
- [mirror_shape](mirror_shape.md) *(from operations.py)* `top-level`
|
|
40
|
+
- [rotate_shape](rotate_shape.md) *(from operations.py)* `top-level`
|
|
41
|
+
- [translate_shape](translate_shape.md) *(from operations.py)* `top-level`
|
|
42
|
+
|
|
43
|
+
## 3D Operations
|
|
44
|
+
|
|
45
|
+
- [extrude_rsolid](extrude_rsolid.md) *(from operations.py)* `top-level`
|
|
46
|
+
- [loft_rsolid](loft_rsolid.md) *(from operations.py)* `top-level`
|
|
47
|
+
- [revolve_rsolid](revolve_rsolid.md) *(from operations.py)* `top-level`
|
|
48
|
+
- [sweep_rsolid](sweep_rsolid.md) *(from operations.py)* `top-level`
|
|
49
|
+
|
|
50
|
+
## Tagging and Selection
|
|
51
|
+
|
|
52
|
+
- [apply_tag](apply_tag.md) *(from operations.py)* `top-level`
|
|
53
|
+
- [list_tags](list_tags.md) *(from operations.py)* `top-level`
|
|
54
|
+
- [select_edges_by_tag](select_edges_by_tag.md) *(from operations.py)* `top-level`
|
|
55
|
+
- [select_faces_by_tag](select_faces_by_tag.md) *(from operations.py)* `top-level`
|
|
56
|
+
|
|
57
|
+
## Boolean Operations
|
|
58
|
+
|
|
59
|
+
- [cut_rsolidlist](cut_rsolidlist.md) *(from operations.py)* `top-level`
|
|
60
|
+
- [intersect_rsolidlist](intersect_rsolidlist.md) *(from operations.py)* `top-level`
|
|
61
|
+
- [union_rsolid](union_rsolid.md) *(from operations.py)* `top-level`
|
|
62
|
+
|
|
63
|
+
## Export
|
|
64
|
+
|
|
65
|
+
- [export_step](export_step.md) *(from operations.py)* `top-level`
|
|
66
|
+
- [export_stl](export_stl.md) *(from operations.py)* `top-level`
|
|
67
|
+
|
|
68
|
+
## Modeling Graph and Replay
|
|
69
|
+
|
|
70
|
+
- [GraphSession](GraphSession.md) *(from graph.py)* `top-level`
|
|
71
|
+
- [export_graph_json](export_graph_json.md) *(from serializer.py)* `top-level`
|
|
72
|
+
- [export_model_json](export_model_json.md) *(from serializer.py)* `top-level`
|
|
73
|
+
- [export_session_json](export_session_json.md) *(from serializer.py)* `top-level`
|
|
74
|
+
- [import_graph_json](import_graph_json.md) *(from serializer.py)* `top-level`
|
|
75
|
+
- [import_model_json](import_model_json.md) *(from serializer.py)* `top-level`
|
|
76
|
+
- [import_session_json](import_session_json.md) *(from serializer.py)* `top-level`
|
|
77
|
+
- [replay_graph](replay_graph.md) *(from serializer.py)* `top-level`
|
|
78
|
+
- [replay_model_json](replay_model_json.md) *(from serializer.py)* `top-level`
|
|
79
|
+
- [suspend_graph_recording](suspend_graph_recording.md) *(from graph.py)* `top-level`
|
|
80
|
+
|
|
81
|
+
## Expressions and Parameters
|
|
82
|
+
|
|
83
|
+
- [Const](Const.md) *(from expr.py)* `top-level`
|
|
84
|
+
- [Expr](Expr.md) *(from expr.py)* `top-level`
|
|
85
|
+
- [ExpressionGraph](ExpressionGraph.md) *(from expr.py)* `top-level`
|
|
86
|
+
- [Var](Var.md) *(from expr.py)* `top-level`
|
|
87
|
+
- [const](const_function.md) *(from expr.py)* `top-level`
|
|
88
|
+
- [var](var_function.md) *(from expr.py)* `top-level`
|
|
89
|
+
|
|
90
|
+
## Types and Errors
|
|
91
|
+
|
|
92
|
+
- [SimpleCADError](SimpleCADError.md) *(from errors.py)* `top-level`
|
|
93
|
+
- [Sketch](Sketch.md) *(from sketch.py)* `top-level`
|
|
94
|
+
|
|
95
|
+
## Advanced Features
|
|
96
|
+
|
|
97
|
+
- [chamfer_rsolid](chamfer_rsolid.md) *(from operations.py)* `top-level`
|
|
98
|
+
- [fillet_rsolid](fillet_rsolid.md) *(from operations.py)* `top-level`
|
|
99
|
+
- [helical_sweep_rsolid](helical_sweep_rsolid.md) *(from operations.py)* `top-level`
|
|
100
|
+
- [shell_rsolid](shell_rsolid.md) *(from operations.py)* `top-level`
|
|
101
|
+
|
|
102
|
+
## Evolve
|
|
103
|
+
|
|
104
|
+
- [make_n_hole_flange_rsolid](make_n_hole_flange_rsolid.md) *(from evolve.py)* `top-level`
|
|
105
|
+
- [make_naca_propeller_blade_rsolid](make_naca_propeller_blade_rsolid.md) *(from evolve.py)* `top-level`
|
|
106
|
+
- [make_threaded_rod_rsolid](make_threaded_rod_rsolid.md) *(from evolve.py)* `top-level`
|
|
107
|
+
|
|
108
|
+
## Other
|
|
109
|
+
|
|
110
|
+
- [SemanticDelta](SemanticDelta.md) *(from topology.py)* `top-level`
|
|
111
|
+
- [SemanticRef](SemanticRef.md) *(from topology.py)* `top-level`
|
|
112
|
+
- [and_](and_.md) *(from ql.py)* `submodule:ql`
|
|
113
|
+
- [geo](geo.md) *(from ql.py)* `submodule:ql`
|
|
114
|
+
- [linear_pattern_rsolidlist](linear_pattern_rsolidlist.md) *(from operations.py)* `top-level`
|
|
115
|
+
- [meta](meta.md) *(from ql.py)* `submodule:ql`
|
|
116
|
+
- [not_](not_.md) *(from ql.py)* `submodule:ql`
|
|
117
|
+
- [or_](or_.md) *(from ql.py)* `submodule:ql`
|
|
118
|
+
- [radial_pattern_rsolidlist](radial_pattern_rsolidlist.md) *(from operations.py)* `top-level`
|
|
119
|
+
- [render_screenshot_rpath](render_screenshot_rpath.md) *(from operations.py)* `top-level`
|
|
120
|
+
- [select](select.md) *(from ql.py)* `submodule:ql`
|
|
121
|
+
- [tag](tag.md) *(from ql.py)* `submodule:ql`
|
|
122
|
+
- [value](value.md) *(from ql.py)* `submodule:ql`
|
|
@@ -8,6 +8,10 @@ class SimpleCADError(operation: str, guidance: ErrorGuidance)
|
|
|
8
8
|
|
|
9
9
|
*Source: errors.py*
|
|
10
10
|
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- top-level: `from simplecadapi import SimpleCADError`
|
|
14
|
+
|
|
11
15
|
## Description
|
|
12
16
|
|
|
13
17
|
Structured ValueError variant for LLM-oriented repair guidance.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# apply_tag
|
|
2
|
+
|
|
3
|
+
## API Definition
|
|
4
|
+
|
|
5
|
+
```python
|
|
6
|
+
def apply_tag(shape: AnyShape, tag: str) -> AnyShape
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
*Source: operations.py*
|
|
10
|
+
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- top-level: `from simplecadapi import apply_tag`
|
|
14
|
+
|
|
15
|
+
## Description
|
|
16
|
+
|
|
17
|
+
Attach a normalized tag to a shape using the standard propagation policy.
|
|
18
|
+
|
|
19
|
+
Tags must already be normalized lowercase tokens such as
|
|
20
|
+
``role.mounting_surface`` or ``group.fasteners``. Propagation is intentionally
|
|
21
|
+
not configurable from the public API; the default tag policy propagates
|
|
22
|
+
semantic role/anchor/group tags downward and keeps topology-specific tags
|
|
23
|
+
local.
|
|
@@ -8,6 +8,10 @@ def chamfer_rsolid(solid: Solid, edges: Union[Sequence[Edge], ShapeSelector], di
|
|
|
8
8
|
|
|
9
9
|
*Source: operations.py*
|
|
10
10
|
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- top-level: `from simplecadapi import chamfer_rsolid`
|
|
14
|
+
|
|
11
15
|
## Description
|
|
12
16
|
|
|
13
17
|
Apply chamfers to selected solid edges.
|
|
@@ -3,11 +3,15 @@
|
|
|
3
3
|
## API Definition
|
|
4
4
|
|
|
5
5
|
```python
|
|
6
|
-
def cut_rsolidlist(*solids: Union[Solid, Sequence[Solid]]) -> Solid
|
|
6
|
+
def cut_rsolidlist(*solids: Union[Solid, Sequence[Solid]], skip_non_intersecting: bool = True) -> Solid
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
*Source: operations.py*
|
|
10
10
|
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- top-level: `from simplecadapi import cut_rsolidlist`
|
|
14
|
+
|
|
11
15
|
## Description
|
|
12
16
|
|
|
13
17
|
Compute the boolean difference of solids.
|
|
@@ -21,6 +25,10 @@ sequences, and returns a single `Solid`.
|
|
|
21
25
|
|
|
22
26
|
- **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.
|
|
23
27
|
|
|
28
|
+
### skip_non_intersecting
|
|
29
|
+
|
|
30
|
+
- **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.
|
|
31
|
+
|
|
24
32
|
## Returns
|
|
25
33
|
|
|
26
34
|
Solid: The cut result solid.
|
|
@@ -3,11 +3,15 @@
|
|
|
3
3
|
## API Definition
|
|
4
4
|
|
|
5
5
|
```python
|
|
6
|
-
def export_model_json(session: 'GraphSession', indent: int = 2
|
|
6
|
+
def export_model_json(session: 'GraphSession', indent: int = 2) -> str
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
*Source: serializer.py*
|
|
10
10
|
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- top-level: `from simplecadapi import export_model_json`
|
|
14
|
+
|
|
11
15
|
## Description
|
|
12
16
|
|
|
13
17
|
Export the canonical 2.0 model seed JSON.
|
|
@@ -8,6 +8,10 @@ def export_session_json(session: 'GraphSession', indent: int = 2) -> str
|
|
|
8
8
|
|
|
9
9
|
*Source: serializer.py*
|
|
10
10
|
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- top-level: `from simplecadapi import export_session_json`
|
|
14
|
+
|
|
11
15
|
## Description
|
|
12
16
|
|
|
13
17
|
Export a graph session including its expression graph.
|
|
@@ -8,19 +8,23 @@ def export_step(shapes: Union[AnyShape, Sequence[AnyShape]], filename: str) -> N
|
|
|
8
8
|
|
|
9
9
|
*Source: operations.py*
|
|
10
10
|
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- top-level: `from simplecadapi import export_step`
|
|
14
|
+
|
|
11
15
|
## Description
|
|
12
16
|
|
|
13
17
|
Export shapes to STEP.
|
|
14
18
|
|
|
15
19
|
Use this function when you want to export one shape or many shapes into the
|
|
16
|
-
same STEP file. Passing `List[Solid]` is valid
|
|
17
|
-
|
|
20
|
+
same STEP file. Passing `List[Solid]` is valid for pattern outputs or
|
|
21
|
+
explicit shape collections. Boolean operations return a single `Solid`.
|
|
18
22
|
|
|
19
23
|
## Parameters
|
|
20
24
|
|
|
21
25
|
### shapes
|
|
22
26
|
|
|
23
|
-
- **Description**: A single exportable shape or any nested sequence of exportable shapes. Lists of Solid are supported directly, including
|
|
27
|
+
- **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.
|
|
24
28
|
|
|
25
29
|
### filename
|
|
26
30
|
|
|
@@ -37,11 +41,10 @@ None: Writes the provided shapes into one STEP file.
|
|
|
37
41
|
main_body = make_box_rsolid(10, 4, 4, bottom_face_center=(0, 0, 0))
|
|
38
42
|
left_cap = make_sphere_rsolid(2.0, center=(-2.0, 2.0, 2.0))
|
|
39
43
|
right_cap = make_sphere_rsolid(2.0, center=(12.0, 2.0, 2.0))
|
|
40
|
-
|
|
44
|
+
body = union_rsolid(main_body, [left_cap, right_cap])
|
|
41
45
|
```
|
|
42
46
|
|
|
43
47
|
### Example 2
|
|
44
48
|
```python
|
|
45
|
-
|
|
46
|
-
export_step(body_parts, "rounded_bar.step")
|
|
49
|
+
export_step(body, "rounded_bar.step")
|
|
47
50
|
```
|
|
@@ -8,19 +8,23 @@ def export_stl(shapes: Union[AnyShape, Sequence[AnyShape]], filename: str) -> No
|
|
|
8
8
|
|
|
9
9
|
*Source: operations.py*
|
|
10
10
|
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- top-level: `from simplecadapi import export_stl`
|
|
14
|
+
|
|
11
15
|
## Description
|
|
12
16
|
|
|
13
17
|
Export shapes to STL.
|
|
14
18
|
|
|
15
19
|
Use this function when you want to export one solid or many solids/faces into
|
|
16
|
-
the same STL file. Passing `List[Solid]` is valid
|
|
17
|
-
|
|
20
|
+
the same STL file. Passing `List[Solid]` is valid for pattern outputs or
|
|
21
|
+
explicit shape collections. Boolean operations return a single `Solid`.
|
|
18
22
|
|
|
19
23
|
## Parameters
|
|
20
24
|
|
|
21
25
|
### shapes
|
|
22
26
|
|
|
23
|
-
- **Description**: A single Solid or Face, or any nested sequence of Solid/Face. Lists of Solid are supported directly, including
|
|
27
|
+
- **Description**: A single Solid or Face, or any nested sequence of Solid/Face. Lists of Solid are supported directly, including pattern or explicitly collected multi-shape results.
|
|
24
28
|
|
|
25
29
|
### filename
|
|
26
30
|
|
|
@@ -37,11 +41,10 @@ None: Writes the provided shapes into one STL file.
|
|
|
37
41
|
main_body = make_box_rsolid(10, 4, 4, bottom_face_center=(0, 0, 0))
|
|
38
42
|
left_cap = make_sphere_rsolid(2.0, center=(-2.0, 2.0, 2.0))
|
|
39
43
|
right_cap = make_sphere_rsolid(2.0, center=(12.0, 2.0, 2.0))
|
|
40
|
-
|
|
44
|
+
body = union_rsolid(main_body, [left_cap, right_cap])
|
|
41
45
|
```
|
|
42
46
|
|
|
43
47
|
### Example 2
|
|
44
48
|
```python
|
|
45
|
-
|
|
46
|
-
export_stl(body_parts, "rounded_bar.stl")
|
|
49
|
+
export_stl(body, "rounded_bar.stl")
|
|
47
50
|
```
|
|
@@ -8,6 +8,10 @@ def extrude_rsolid(profile: Union[Wire, Face], direction: Tuple[float, float, fl
|
|
|
8
8
|
|
|
9
9
|
*Source: operations.py*
|
|
10
10
|
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- top-level: `from simplecadapi import extrude_rsolid`
|
|
14
|
+
|
|
11
15
|
## Description
|
|
12
16
|
|
|
13
17
|
Create a solid by extruding a profile.
|
|
@@ -8,6 +8,10 @@ def geo(field: str, default: Any = None) -> SerializableKey
|
|
|
8
8
|
|
|
9
9
|
*Source: ql.py*
|
|
10
10
|
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- submodule: `from simplecadapi.ql import geo` or `simplecadapi.ql.geo`
|
|
14
|
+
|
|
11
15
|
## Description
|
|
12
16
|
|
|
13
17
|
Shortcut for reading `geom.*` fields inside QL queries.
|
|
@@ -8,6 +8,10 @@ def helical_sweep_rsolid(profile: Wire, pitch: float, height: float, radius: flo
|
|
|
8
8
|
|
|
9
9
|
*Source: operations.py*
|
|
10
10
|
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- top-level: `from simplecadapi import helical_sweep_rsolid`
|
|
14
|
+
|
|
11
15
|
## Description
|
|
12
16
|
|
|
13
17
|
Create a solid by sweeping a profile along a helical path.
|
|
@@ -8,6 +8,10 @@ def import_session_json(json_str: str) -> Dict[str, Any]
|
|
|
8
8
|
|
|
9
9
|
*Source: serializer.py*
|
|
10
10
|
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- top-level: `from simplecadapi import import_session_json`
|
|
14
|
+
|
|
11
15
|
## Description
|
|
12
16
|
|
|
13
17
|
Import session payload containing graph and expression graph.
|
|
@@ -8,6 +8,10 @@ def intersect_rsolidlist(*solids: Union[Solid, Sequence[Solid]]) -> Solid
|
|
|
8
8
|
|
|
9
9
|
*Source: operations.py*
|
|
10
10
|
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- top-level: `from simplecadapi import intersect_rsolidlist`
|
|
14
|
+
|
|
11
15
|
## Description
|
|
12
16
|
|
|
13
17
|
Compute the boolean intersection of solids.
|
|
@@ -8,6 +8,10 @@ def linear_pattern_rsolidlist(shape: AnyShape, direction: Tuple[float, float, fl
|
|
|
8
8
|
|
|
9
9
|
*Source: operations.py*
|
|
10
10
|
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- top-level: `from simplecadapi import linear_pattern_rsolidlist`
|
|
14
|
+
|
|
11
15
|
## Description
|
|
12
16
|
|
|
13
17
|
Create a linear pattern of solids.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# list_tags
|
|
2
|
+
|
|
3
|
+
## API Definition
|
|
4
|
+
|
|
5
|
+
```python
|
|
6
|
+
def list_tags(shape: AnyShape) -> List[str]
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
*Source: operations.py*
|
|
10
|
+
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- top-level: `from simplecadapi import list_tags`
|
|
14
|
+
|
|
15
|
+
## Description
|
|
16
|
+
|
|
17
|
+
Return shape tags in deterministic sorted order.
|
|
@@ -8,6 +8,10 @@ def make_angle_arc_redge(center: Tuple[float, float, float], radius: ScalarLike,
|
|
|
8
8
|
|
|
9
9
|
*Source: operations.py*
|
|
10
10
|
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- top-level: `from simplecadapi import make_angle_arc_redge`
|
|
14
|
+
|
|
11
15
|
## Description
|
|
12
16
|
|
|
13
17
|
Create an arc edge from a center, radius, and angle range.
|