simplecadapi 2.0.0b1__tar.gz → 2.0.0b3__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.0b3}/PKG-INFO +113 -150
- simplecadapi-2.0.0b3/README.md +169 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/Const.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/Expr.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/ExpressionGraph.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/GraphSession.md +4 -0
- simplecadapi-2.0.0b3/docs/api/README.md +127 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/SemanticDelta.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/SemanticRef.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/SimpleCADError.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/Sketch.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/Var.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/and_.md +4 -0
- simplecadapi-2.0.0b3/docs/api/apply_tag.md +23 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/chamfer_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/const_function.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/cut_rsolidlist.md +9 -1
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/export_graph_json.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/export_model_json.md +5 -1
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/export_session_json.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/export_step.md +9 -6
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/export_stl.md +9 -6
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/extrude_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/fillet_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/geo.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/helical_sweep_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/import_graph_json.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/import_model_json.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/import_session_json.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/intersect_rsolidlist.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/linear_pattern_rsolidlist.md +4 -0
- simplecadapi-2.0.0b3/docs/api/list_tags.md +17 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/loft_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_angle_arc_redge.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_angle_arc_rwire.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_box_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_circle_redge.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_circle_rface.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_circle_rwire.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_cone_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_cylinder_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_face_from_wire_rface.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_helix_redge.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_helix_rwire.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_line_redge.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_n_hole_flange_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_naca_propeller_blade_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_point_rvertex.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_polyline_rwire.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_rectangle_rface.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_rectangle_rwire.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_segment_redge.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_segment_rwire.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_sphere_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_spline_redge.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_spline_rwire.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_threaded_rod_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_three_point_arc_redge.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_three_point_arc_rwire.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_wire_from_edges_rwire.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/meta.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/mirror_shape.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/not_.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/or_.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/radial_pattern_rsolidlist.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/render_screenshot_rpath.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/replay_graph.md +5 -1
- simplecadapi-2.0.0b3/docs/api/replay_model_json.md +17 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/revolve_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/rotate_shape.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/select.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/select_edges_by_tag.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/select_faces_by_tag.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/shell_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/suspend_graph_recording.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/sweep_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/tag.md +4 -0
- simplecadapi-2.0.0b3/docs/api/translate_model_json_to_fcstd.md +17 -0
- simplecadapi-2.0.0b3/docs/api/translate_model_json_to_freecad_script.md +17 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/translate_shape.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/union_rsolid.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/value.md +4 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/var_function.md +4 -0
- simplecadapi-2.0.0b3/docs/architecture/sdk-architecture-review.md +369 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/README.md +6 -7
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/compound.md +1 -1
- simplecadapi-2.0.0b3/docs/core/declarative_constraints.md +35 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/edge.md +21 -26
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/face.md +42 -47
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/operation_graph_json_spec.md +320 -257
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/rearchitecture_2_0.md +18 -20
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/rearchitecture_2_0_requirements.md +1 -3
- simplecadapi-2.0.0b3/docs/core/serialization/README.md +62 -0
- simplecadapi-2.0.0b3/docs/core/serialization/expressions-and-replay.md +145 -0
- simplecadapi-2.0.0b3/docs/core/serialization/features-booleans-transforms.md +468 -0
- simplecadapi-2.0.0b3/docs/core/serialization/primitives-and-profiles.md +457 -0
- simplecadapi-2.0.0b3/docs/core/serialization/scalar-fields.md +13 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/solid.md +79 -50
- simplecadapi-2.0.0b3/docs/core/tagged_mixin.md +90 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/vertex.md +24 -57
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/wire.md +35 -40
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/pyproject.toml +1 -1
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/__init__.py +4 -50
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/auto_tools/auto_docs_gen.py +46 -14
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/auto_tools/make_export.py +8 -104
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/auto_tools/skill_pack.py +114 -23
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/autotag.py +8 -8
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/core.py +169 -51
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/expr.py +1 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/freecad_translator.py +234 -181
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/graph.py +18 -12
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/operations.py +614 -446
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/ql.py +132 -11
- simplecadapi-2.0.0b3/src/simplecadapi/serializer.py +1664 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/tagging.py +22 -5
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/topology.py +30 -9
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/tracking.py +4 -0
- simplecadapi-2.0.0b1/README.md +0 -206
- 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.0b3}/.gitignore +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/LICENSE +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/MANIFEST.in +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/coordinate_system.md +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/shell.md +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/simple_workplane.md +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/_vendor_warning_filters.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/auto_tools/__init__.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/auto_tools/evolution.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/errors.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/evolve.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/frame.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/__init__.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/ocp_booleans.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/ocp_builders.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/ocp_cast.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/ocp_curves.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/ocp_export.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/ocp_features.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/ocp_mesh.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/ocp_properties.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/ocp_topology.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/ocp_transforms.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/spline_fit.py +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/py.typed +0 -0
- {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/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.0b3
|
|
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
|
|
@@ -375,207 +375,170 @@ Description-Content-Type: text/markdown
|
|
|
375
375
|
|
|
376
376
|
# SimpleCADAPI
|
|
377
377
|
|
|
378
|
-
SimpleCADAPI is an OCP-native
|
|
378
|
+
SimpleCADAPI is an OCP-native Python SDK for building CAD models with clear,
|
|
379
|
+
functional operations and replayable model graphs. It wraps OpenCascade geometry
|
|
380
|
+
in a compact public API for creating solids, applying features, tagging semantic
|
|
381
|
+
intent, querying topology, exporting manufacturing files, and translating recorded
|
|
382
|
+
models into FreeCAD workflows.
|
|
379
383
|
|
|
380
|
-
|
|
384
|
+
Current beta: `simplecadapi==2.0.0b3`.
|
|
381
385
|
|
|
382
|
-
|
|
383
|
-
Experimental scripts and temporary modeling examples are not included as formal documentation.
|
|
386
|
+
## What It Provides
|
|
384
387
|
|
|
385
|
-
|
|
388
|
+
- OCP-native shape types: `Vertex`, `Edge`, `Wire`, `Face`, and `Solid`.
|
|
389
|
+
- Functional modeling operations for primitives, profiles, extrude, revolve,
|
|
390
|
+
loft, sweep, booleans, transforms, patterns, fillets, chamfers, and shells.
|
|
391
|
+
- Replayable modeling with `GraphSession`, `export_model_json(...)`,
|
|
392
|
+
`import_model_json(...)`, and `replay_model_json(...)`.
|
|
393
|
+
- Expression parameters with `var(...)`, arithmetic expressions, and serialized
|
|
394
|
+
expression graphs.
|
|
395
|
+
- QL selectors for geometry grounding, topology queries, and stable feature
|
|
396
|
+
selections.
|
|
397
|
+
- Semantic tags through `apply_tag(shape, tag)` and `list_tags(shape)`.
|
|
398
|
+
- STEP/STL export and FreeCAD translation helpers for script or `.FCStd` output.
|
|
386
399
|
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
### Method A: Install from package repository with pip
|
|
400
|
+
## Install
|
|
390
401
|
|
|
391
402
|
```bash
|
|
392
403
|
pip install simplecadapi
|
|
393
404
|
```
|
|
394
405
|
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
```bash
|
|
398
|
-
pip install "simplecadapi[dev]"
|
|
399
|
-
```
|
|
400
|
-
|
|
401
|
-
### Method B: Install with uv
|
|
402
|
-
|
|
403
|
-
Install in the current virtual environment:
|
|
404
|
-
|
|
405
|
-
```bash
|
|
406
|
-
uv pip install simplecadapi
|
|
407
|
-
```
|
|
408
|
-
|
|
409
|
-
Add as a project dependency in `pyproject.toml`:
|
|
406
|
+
With `uv`:
|
|
410
407
|
|
|
411
408
|
```bash
|
|
412
409
|
uv add simplecadapi
|
|
413
410
|
```
|
|
414
411
|
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
Build a local wheel/sdist first if you want to install from local artifacts:
|
|
412
|
+
For local development from this repository:
|
|
418
413
|
|
|
419
414
|
```bash
|
|
420
|
-
uv
|
|
415
|
+
uv sync --group dev
|
|
421
416
|
```
|
|
422
417
|
|
|
423
|
-
## Quick
|
|
418
|
+
## Quick Start
|
|
424
419
|
|
|
425
420
|
```python
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
box = scad.make_box_rsolid(10.0, 20.0, 30.0)
|
|
429
|
-
scad.export_stl(box, "example_box.stl")
|
|
430
|
-
scad.export_step(box, "example_box.step")
|
|
431
|
-
```
|
|
432
|
-
|
|
433
|
-
## How to Package SDK Skills
|
|
421
|
+
from pathlib import Path
|
|
434
422
|
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
### 1) Packaging Command
|
|
438
|
-
|
|
439
|
-
Execute in the repository root directory:
|
|
440
|
-
|
|
441
|
-
```bash
|
|
442
|
-
uv run skill-pack --refresh-docs --archive --skill-name simplecadapi
|
|
443
|
-
```
|
|
444
|
-
|
|
445
|
-
Common parameters:
|
|
446
|
-
|
|
447
|
-
- `--output-root <dir>`: Output directory (default `./skills`)
|
|
448
|
-
- `--package-name <pkg>`: Runtime installation package name (default reads from `project.name`)
|
|
449
|
-
- `--package-version <ver>`: Runtime installation version (default reads from `project.version`)
|
|
450
|
-
- `--no-clean`: Do not clean existing output directory
|
|
451
|
-
- `--archive`: Additionally generate `<skill-name>.tar.gz`
|
|
423
|
+
import simplecadapi as scad
|
|
452
424
|
|
|
453
|
-
|
|
425
|
+
out = Path("out")
|
|
426
|
+
out.mkdir(exist_ok=True)
|
|
454
427
|
|
|
455
|
-
|
|
428
|
+
base = scad.make_box_rsolid(60.0, 36.0, 8.0, bottom_face_center=(0.0, 0.0, 0.0))
|
|
429
|
+
hole = scad.make_cylinder_rsolid(5.0, 14.0, bottom_face_center=(0.0, 0.0, -3.0))
|
|
430
|
+
slot = scad.make_box_rsolid(18.0, 8.0, 14.0, bottom_face_center=(14.0, 0.0, -3.0))
|
|
456
431
|
|
|
457
|
-
|
|
458
|
-
-
|
|
459
|
-
|
|
460
|
-
|
|
432
|
+
part = scad.cut_rsolidlist(base, hole, slot)
|
|
433
|
+
boss = scad.make_cylinder_rsolid(8.0, 7.0, bottom_face_center=(-18.0, 0.0, 8.0))
|
|
434
|
+
part = scad.union_rsolid(part, boss)
|
|
435
|
+
part = scad.apply_tag(part, "role.demo.bracket")
|
|
461
436
|
|
|
462
|
-
|
|
437
|
+
print("volume", round(part.get_volume(), 3))
|
|
438
|
+
print("faces", len(part.get_faces()))
|
|
439
|
+
print("tags", scad.list_tags(part))
|
|
463
440
|
|
|
464
|
-
|
|
465
|
-
|
|
441
|
+
scad.export_step(part, str(out / "bracket.step"))
|
|
442
|
+
scad.export_stl(part, str(out / "bracket.stl"))
|
|
466
443
|
```
|
|
467
444
|
|
|
468
|
-
|
|
445
|
+
## Replayable Modeling
|
|
469
446
|
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
- `skills/simplecadapi/references/SDK_SURFACES.md`
|
|
473
|
-
- `skills/simplecadapi/references/V2_MODELING_WORKFLOWS.md`
|
|
474
|
-
- `skills/simplecadapi/references/SDK_PACKAGE_SUMMARY.md`
|
|
475
|
-
- `skills/simplecadapi/references/docs/api/README.md`
|
|
476
|
-
- `skills/simplecadapi/references/docs/core/README.md`
|
|
477
|
-
|
|
478
|
-
### 4) Preferred v2 replay workflow
|
|
447
|
+
Use `GraphSession` when a model should be inspectable, serializable, replayable,
|
|
448
|
+
or translated into another CAD environment.
|
|
479
449
|
|
|
480
450
|
```python
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
uv run make-export --dry-run
|
|
504
|
-
uv run auto-docs-gen
|
|
505
|
-
uv run evolve path/to/your_case.py
|
|
506
|
-
uv run skill-pack --refresh-docs --archive
|
|
507
|
-
```
|
|
508
|
-
|
|
509
|
-
## RAGFlow Documentation Sync
|
|
510
|
-
|
|
511
|
-
`scripts/sync_ragflow_docs.py` is used to incrementally sync Markdown files under `docs/` to the specified RAGFlow dataset, chunked by H2 headings; the document's `chunk_method` is set to `manual`.
|
|
512
|
-
|
|
513
|
-
Prepare the environment:
|
|
514
|
-
|
|
515
|
-
```bash
|
|
516
|
-
.venv/bin/python -m pip install ragflow-sdk
|
|
517
|
-
```
|
|
518
|
-
|
|
519
|
-
It is recommended to use `.env` (already added to `.gitignore`):
|
|
520
|
-
|
|
521
|
-
```bash
|
|
522
|
-
RAGFLOW_API_KEY=your_key_here
|
|
523
|
-
RAGFLOW_BASE_URL=http://localhost
|
|
524
|
-
RAGFLOW_DATASET_NAME=SimpleCADAPI
|
|
451
|
+
import simplecadapi as scad
|
|
452
|
+
from simplecadapi import ql as Q
|
|
453
|
+
|
|
454
|
+
with scad.GraphSession() as session:
|
|
455
|
+
body = scad.make_box_rsolid(40.0, 24.0, 10.0, bottom_face_center=(0.0, 0.0, 0.0))
|
|
456
|
+
cutter = scad.make_cylinder_rsolid(4.0, 16.0, bottom_face_center=(0.0, 0.0, -3.0))
|
|
457
|
+
drilled = scad.cut_rsolidlist(body, cutter)
|
|
458
|
+
|
|
459
|
+
bottom_circle = (
|
|
460
|
+
Q.edges()
|
|
461
|
+
.where(Q.curve_type("circle"))
|
|
462
|
+
.order_by(Q.center_axis("z"))
|
|
463
|
+
.take(1)
|
|
464
|
+
.exactly(1)
|
|
465
|
+
)
|
|
466
|
+
final = scad.chamfer_rsolid(drilled, bottom_circle, 0.6)
|
|
467
|
+
|
|
468
|
+
model_json = scad.export_model_json(session)
|
|
469
|
+
rebuilt = scad.replay_model_json(model_json)
|
|
470
|
+
|
|
471
|
+
print("recorded_nodes", session.graph.node_count)
|
|
472
|
+
print("replayed_outputs", len(rebuilt))
|
|
525
473
|
```
|
|
526
474
|
|
|
527
|
-
|
|
475
|
+
## Modeling Mental Model
|
|
476
|
+
|
|
477
|
+
- Start from design intent: reference axes, critical profiles, and the features
|
|
478
|
+
that produce the final solid.
|
|
479
|
+
- Build from lower-dimensional geometry to higher-dimensional geometry: profile
|
|
480
|
+
wires/faces first, then solid features such as extrude, revolve, loft, and
|
|
481
|
+
sweep.
|
|
482
|
+
- Keep operations functional. Create new values with public functions such as
|
|
483
|
+
`make_rectangle_rface(...)`, `extrude_rsolid(...)`, `cut_rsolidlist(...)`, and
|
|
484
|
+
`fillet_rsolid(...)`.
|
|
485
|
+
- Use tags for semantic intent and selection anchors, for example
|
|
486
|
+
`role.mounting.surface`, `anchor.datum.primary`, or `group.fasteners`.
|
|
487
|
+
- Store numeric and geometric facts in metadata or graph payloads, not in tags.
|
|
488
|
+
- Use QL to ground selections by geometry facts rather than relying on topology
|
|
489
|
+
iteration order.
|
|
490
|
+
- When an indexed topology pick is intentional, pass the index to the plural
|
|
491
|
+
child-geometry getter, such as `get_edges(index)`, `get_faces(index)`,
|
|
492
|
+
`get_wires(index)`, or `get_vertices(index)`, so replayable graph workflows
|
|
493
|
+
preserve the pick as a geo select node.
|
|
494
|
+
- Use model JSON as the interchange boundary for replay, tests, and FreeCAD
|
|
495
|
+
translation.
|
|
496
|
+
|
|
497
|
+
## FreeCAD Translation
|
|
498
|
+
|
|
499
|
+
Recorded model JSON can be translated into a FreeCAD Python script:
|
|
528
500
|
|
|
529
|
-
```
|
|
530
|
-
|
|
531
|
-
.venv/bin/python scripts/sync_ragflow_docs.py --create-dataset
|
|
501
|
+
```python
|
|
502
|
+
script = scad.translate_model_json_to_freecad_script(model_json)
|
|
532
503
|
```
|
|
533
504
|
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
- `--dataset-id` / `RAGFLOW_DATASET_ID`: Directly specify the dataset ID (avoid name conflicts)
|
|
537
|
-
- `--delete-removed`: Delete documents that have been removed locally
|
|
538
|
-
- `--dry-run`: Only preview changes without executing writes
|
|
539
|
-
- `--progress-interval N`: Print progress every N documents
|
|
505
|
+
If FreeCAD or FreeCADCmd is available, the same model JSON can be written as an
|
|
506
|
+
`.FCStd` file:
|
|
540
507
|
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
Local development installation (editable):
|
|
544
|
-
|
|
545
|
-
```bash
|
|
546
|
-
uv pip install -e ".[dev]"
|
|
508
|
+
```python
|
|
509
|
+
scad.translate_model_json_to_fcstd(model_json, "bracket.FCStd")
|
|
547
510
|
```
|
|
548
511
|
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
```bash
|
|
552
|
-
uv run python -m unittest test/test_all_features.py
|
|
553
|
-
```
|
|
512
|
+
## Examples
|
|
554
513
|
|
|
555
|
-
Run examples:
|
|
514
|
+
Run examples from the source checkout:
|
|
556
515
|
|
|
557
516
|
```bash
|
|
558
517
|
uv run python examples/01_basic_modeling.py
|
|
559
518
|
uv run python examples/02_graph_replay.py
|
|
560
519
|
uv run python examples/03_expressions.py
|
|
561
|
-
uv run python examples/04_assembly_constraints.py
|
|
562
520
|
uv run python examples/05_loft_sweep_revolve.py
|
|
563
521
|
uv run python examples/06_parametric_gear_model.py
|
|
564
|
-
uv run python examples/
|
|
522
|
+
uv run python examples/07_serialization_operation_tree.py
|
|
565
523
|
```
|
|
566
524
|
|
|
567
|
-
##
|
|
525
|
+
## Documentation
|
|
568
526
|
|
|
569
|
-
- API
|
|
570
|
-
- Core
|
|
571
|
-
-
|
|
572
|
-
|
|
527
|
+
- Public API reference: [`docs/api/`](docs/api/)
|
|
528
|
+
- Core type and modeling notes: [`docs/core/`](docs/core/)
|
|
529
|
+
- Serialization and replay details:
|
|
530
|
+
[`docs/core/serialization/README.md`](docs/core/serialization/README.md)
|
|
531
|
+
- Operation graph JSON spec:
|
|
532
|
+
[`docs/core/operation_graph_json_spec.md`](docs/core/operation_graph_json_spec.md)
|
|
573
533
|
|
|
574
|
-
##
|
|
534
|
+
## Development
|
|
575
535
|
|
|
576
|
-
|
|
577
|
-
|
|
536
|
+
```bash
|
|
537
|
+
uv sync --group dev
|
|
538
|
+
uv run python -m pytest test tests
|
|
539
|
+
python3 -m compileall src/simplecadapi
|
|
540
|
+
```
|
|
578
541
|
|
|
579
542
|
## License
|
|
580
543
|
|
|
581
|
-
MIT, see `LICENSE
|
|
544
|
+
MIT, see [`LICENSE`](LICENSE).
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# SimpleCADAPI
|
|
2
|
+
|
|
3
|
+
SimpleCADAPI is an OCP-native Python SDK for building CAD models with clear,
|
|
4
|
+
functional operations and replayable model graphs. It wraps OpenCascade geometry
|
|
5
|
+
in a compact public API for creating solids, applying features, tagging semantic
|
|
6
|
+
intent, querying topology, exporting manufacturing files, and translating recorded
|
|
7
|
+
models into FreeCAD workflows.
|
|
8
|
+
|
|
9
|
+
Current beta: `simplecadapi==2.0.0b3`.
|
|
10
|
+
|
|
11
|
+
## What It Provides
|
|
12
|
+
|
|
13
|
+
- OCP-native shape types: `Vertex`, `Edge`, `Wire`, `Face`, and `Solid`.
|
|
14
|
+
- Functional modeling operations for primitives, profiles, extrude, revolve,
|
|
15
|
+
loft, sweep, booleans, transforms, patterns, fillets, chamfers, and shells.
|
|
16
|
+
- Replayable modeling with `GraphSession`, `export_model_json(...)`,
|
|
17
|
+
`import_model_json(...)`, and `replay_model_json(...)`.
|
|
18
|
+
- Expression parameters with `var(...)`, arithmetic expressions, and serialized
|
|
19
|
+
expression graphs.
|
|
20
|
+
- QL selectors for geometry grounding, topology queries, and stable feature
|
|
21
|
+
selections.
|
|
22
|
+
- Semantic tags through `apply_tag(shape, tag)` and `list_tags(shape)`.
|
|
23
|
+
- STEP/STL export and FreeCAD translation helpers for script or `.FCStd` output.
|
|
24
|
+
|
|
25
|
+
## Install
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
pip install simplecadapi
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
With `uv`:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
uv add simplecadapi
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
For local development from this repository:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
uv sync --group dev
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Quick Start
|
|
44
|
+
|
|
45
|
+
```python
|
|
46
|
+
from pathlib import Path
|
|
47
|
+
|
|
48
|
+
import simplecadapi as scad
|
|
49
|
+
|
|
50
|
+
out = Path("out")
|
|
51
|
+
out.mkdir(exist_ok=True)
|
|
52
|
+
|
|
53
|
+
base = scad.make_box_rsolid(60.0, 36.0, 8.0, bottom_face_center=(0.0, 0.0, 0.0))
|
|
54
|
+
hole = scad.make_cylinder_rsolid(5.0, 14.0, bottom_face_center=(0.0, 0.0, -3.0))
|
|
55
|
+
slot = scad.make_box_rsolid(18.0, 8.0, 14.0, bottom_face_center=(14.0, 0.0, -3.0))
|
|
56
|
+
|
|
57
|
+
part = scad.cut_rsolidlist(base, hole, slot)
|
|
58
|
+
boss = scad.make_cylinder_rsolid(8.0, 7.0, bottom_face_center=(-18.0, 0.0, 8.0))
|
|
59
|
+
part = scad.union_rsolid(part, boss)
|
|
60
|
+
part = scad.apply_tag(part, "role.demo.bracket")
|
|
61
|
+
|
|
62
|
+
print("volume", round(part.get_volume(), 3))
|
|
63
|
+
print("faces", len(part.get_faces()))
|
|
64
|
+
print("tags", scad.list_tags(part))
|
|
65
|
+
|
|
66
|
+
scad.export_step(part, str(out / "bracket.step"))
|
|
67
|
+
scad.export_stl(part, str(out / "bracket.stl"))
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Replayable Modeling
|
|
71
|
+
|
|
72
|
+
Use `GraphSession` when a model should be inspectable, serializable, replayable,
|
|
73
|
+
or translated into another CAD environment.
|
|
74
|
+
|
|
75
|
+
```python
|
|
76
|
+
import simplecadapi as scad
|
|
77
|
+
from simplecadapi import ql as Q
|
|
78
|
+
|
|
79
|
+
with scad.GraphSession() as session:
|
|
80
|
+
body = scad.make_box_rsolid(40.0, 24.0, 10.0, bottom_face_center=(0.0, 0.0, 0.0))
|
|
81
|
+
cutter = scad.make_cylinder_rsolid(4.0, 16.0, bottom_face_center=(0.0, 0.0, -3.0))
|
|
82
|
+
drilled = scad.cut_rsolidlist(body, cutter)
|
|
83
|
+
|
|
84
|
+
bottom_circle = (
|
|
85
|
+
Q.edges()
|
|
86
|
+
.where(Q.curve_type("circle"))
|
|
87
|
+
.order_by(Q.center_axis("z"))
|
|
88
|
+
.take(1)
|
|
89
|
+
.exactly(1)
|
|
90
|
+
)
|
|
91
|
+
final = scad.chamfer_rsolid(drilled, bottom_circle, 0.6)
|
|
92
|
+
|
|
93
|
+
model_json = scad.export_model_json(session)
|
|
94
|
+
rebuilt = scad.replay_model_json(model_json)
|
|
95
|
+
|
|
96
|
+
print("recorded_nodes", session.graph.node_count)
|
|
97
|
+
print("replayed_outputs", len(rebuilt))
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Modeling Mental Model
|
|
101
|
+
|
|
102
|
+
- Start from design intent: reference axes, critical profiles, and the features
|
|
103
|
+
that produce the final solid.
|
|
104
|
+
- Build from lower-dimensional geometry to higher-dimensional geometry: profile
|
|
105
|
+
wires/faces first, then solid features such as extrude, revolve, loft, and
|
|
106
|
+
sweep.
|
|
107
|
+
- Keep operations functional. Create new values with public functions such as
|
|
108
|
+
`make_rectangle_rface(...)`, `extrude_rsolid(...)`, `cut_rsolidlist(...)`, and
|
|
109
|
+
`fillet_rsolid(...)`.
|
|
110
|
+
- Use tags for semantic intent and selection anchors, for example
|
|
111
|
+
`role.mounting.surface`, `anchor.datum.primary`, or `group.fasteners`.
|
|
112
|
+
- Store numeric and geometric facts in metadata or graph payloads, not in tags.
|
|
113
|
+
- Use QL to ground selections by geometry facts rather than relying on topology
|
|
114
|
+
iteration order.
|
|
115
|
+
- When an indexed topology pick is intentional, pass the index to the plural
|
|
116
|
+
child-geometry getter, such as `get_edges(index)`, `get_faces(index)`,
|
|
117
|
+
`get_wires(index)`, or `get_vertices(index)`, so replayable graph workflows
|
|
118
|
+
preserve the pick as a geo select node.
|
|
119
|
+
- Use model JSON as the interchange boundary for replay, tests, and FreeCAD
|
|
120
|
+
translation.
|
|
121
|
+
|
|
122
|
+
## FreeCAD Translation
|
|
123
|
+
|
|
124
|
+
Recorded model JSON can be translated into a FreeCAD Python script:
|
|
125
|
+
|
|
126
|
+
```python
|
|
127
|
+
script = scad.translate_model_json_to_freecad_script(model_json)
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
If FreeCAD or FreeCADCmd is available, the same model JSON can be written as an
|
|
131
|
+
`.FCStd` file:
|
|
132
|
+
|
|
133
|
+
```python
|
|
134
|
+
scad.translate_model_json_to_fcstd(model_json, "bracket.FCStd")
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Examples
|
|
138
|
+
|
|
139
|
+
Run examples from the source checkout:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
uv run python examples/01_basic_modeling.py
|
|
143
|
+
uv run python examples/02_graph_replay.py
|
|
144
|
+
uv run python examples/03_expressions.py
|
|
145
|
+
uv run python examples/05_loft_sweep_revolve.py
|
|
146
|
+
uv run python examples/06_parametric_gear_model.py
|
|
147
|
+
uv run python examples/07_serialization_operation_tree.py
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Documentation
|
|
151
|
+
|
|
152
|
+
- Public API reference: [`docs/api/`](docs/api/)
|
|
153
|
+
- Core type and modeling notes: [`docs/core/`](docs/core/)
|
|
154
|
+
- Serialization and replay details:
|
|
155
|
+
[`docs/core/serialization/README.md`](docs/core/serialization/README.md)
|
|
156
|
+
- Operation graph JSON spec:
|
|
157
|
+
[`docs/core/operation_graph_json_spec.md`](docs/core/operation_graph_json_spec.md)
|
|
158
|
+
|
|
159
|
+
## Development
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
uv sync --group dev
|
|
163
|
+
uv run python -m pytest test tests
|
|
164
|
+
python3 -m compileall src/simplecadapi
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## License
|
|
168
|
+
|
|
169
|
+
MIT, see [`LICENSE`](LICENSE).
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# SimpleCAD API Index
|
|
2
|
+
|
|
3
|
+
This index includes generated docs for the public SimpleCAD API surface, including geometry operations, graph/model JSON workflows, expressions, QL, and export helpers.
|
|
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
|
+
## FreeCAD Translation
|
|
69
|
+
|
|
70
|
+
- [translate_model_json_to_fcstd](translate_model_json_to_fcstd.md) *(from freecad_translator.py)* `top-level`
|
|
71
|
+
- [translate_model_json_to_freecad_script](translate_model_json_to_freecad_script.md) *(from freecad_translator.py)* `top-level`
|
|
72
|
+
|
|
73
|
+
## Modeling Graph and Replay
|
|
74
|
+
|
|
75
|
+
- [GraphSession](GraphSession.md) *(from graph.py)* `top-level`
|
|
76
|
+
- [export_graph_json](export_graph_json.md) *(from serializer.py)* `top-level`
|
|
77
|
+
- [export_model_json](export_model_json.md) *(from serializer.py)* `top-level`
|
|
78
|
+
- [export_session_json](export_session_json.md) *(from serializer.py)* `top-level`
|
|
79
|
+
- [import_graph_json](import_graph_json.md) *(from serializer.py)* `top-level`
|
|
80
|
+
- [import_model_json](import_model_json.md) *(from serializer.py)* `top-level`
|
|
81
|
+
- [import_session_json](import_session_json.md) *(from serializer.py)* `top-level`
|
|
82
|
+
- [replay_graph](replay_graph.md) *(from serializer.py)* `top-level`
|
|
83
|
+
- [replay_model_json](replay_model_json.md) *(from serializer.py)* `top-level`
|
|
84
|
+
- [suspend_graph_recording](suspend_graph_recording.md) *(from graph.py)* `top-level`
|
|
85
|
+
|
|
86
|
+
## Expressions and Parameters
|
|
87
|
+
|
|
88
|
+
- [Const](Const.md) *(from expr.py)* `top-level`
|
|
89
|
+
- [Expr](Expr.md) *(from expr.py)* `top-level`
|
|
90
|
+
- [ExpressionGraph](ExpressionGraph.md) *(from expr.py)* `top-level`
|
|
91
|
+
- [Var](Var.md) *(from expr.py)* `top-level`
|
|
92
|
+
- [const](const_function.md) *(from expr.py)* `top-level`
|
|
93
|
+
- [var](var_function.md) *(from expr.py)* `top-level`
|
|
94
|
+
|
|
95
|
+
## Types and Errors
|
|
96
|
+
|
|
97
|
+
- [SimpleCADError](SimpleCADError.md) *(from errors.py)* `top-level`
|
|
98
|
+
- [Sketch](Sketch.md) *(from sketch.py)* `top-level`
|
|
99
|
+
|
|
100
|
+
## Advanced Features
|
|
101
|
+
|
|
102
|
+
- [chamfer_rsolid](chamfer_rsolid.md) *(from operations.py)* `top-level`
|
|
103
|
+
- [fillet_rsolid](fillet_rsolid.md) *(from operations.py)* `top-level`
|
|
104
|
+
- [helical_sweep_rsolid](helical_sweep_rsolid.md) *(from operations.py)* `top-level`
|
|
105
|
+
- [shell_rsolid](shell_rsolid.md) *(from operations.py)* `top-level`
|
|
106
|
+
|
|
107
|
+
## Evolve
|
|
108
|
+
|
|
109
|
+
- [make_n_hole_flange_rsolid](make_n_hole_flange_rsolid.md) *(from evolve.py)* `top-level`
|
|
110
|
+
- [make_naca_propeller_blade_rsolid](make_naca_propeller_blade_rsolid.md) *(from evolve.py)* `top-level`
|
|
111
|
+
- [make_threaded_rod_rsolid](make_threaded_rod_rsolid.md) *(from evolve.py)* `top-level`
|
|
112
|
+
|
|
113
|
+
## Other
|
|
114
|
+
|
|
115
|
+
- [SemanticDelta](SemanticDelta.md) *(from topology.py)* `top-level`
|
|
116
|
+
- [SemanticRef](SemanticRef.md) *(from topology.py)* `top-level`
|
|
117
|
+
- [and_](and_.md) *(from ql.py)* `submodule:ql`
|
|
118
|
+
- [geo](geo.md) *(from ql.py)* `submodule:ql`
|
|
119
|
+
- [linear_pattern_rsolidlist](linear_pattern_rsolidlist.md) *(from operations.py)* `top-level`
|
|
120
|
+
- [meta](meta.md) *(from ql.py)* `submodule:ql`
|
|
121
|
+
- [not_](not_.md) *(from ql.py)* `submodule:ql`
|
|
122
|
+
- [or_](or_.md) *(from ql.py)* `submodule:ql`
|
|
123
|
+
- [radial_pattern_rsolidlist](radial_pattern_rsolidlist.md) *(from operations.py)* `top-level`
|
|
124
|
+
- [render_screenshot_rpath](render_screenshot_rpath.md) *(from operations.py)* `top-level`
|
|
125
|
+
- [select](select.md) *(from ql.py)* `submodule:ql`
|
|
126
|
+
- [tag](tag.md) *(from ql.py)* `submodule:ql`
|
|
127
|
+
- [value](value.md) *(from ql.py)* `submodule:ql`
|