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.
Files changed (180) hide show
  1. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/PKG-INFO +10 -3
  2. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/README.md +9 -2
  3. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/Const.md +4 -0
  4. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/Expr.md +4 -0
  5. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/ExpressionGraph.md +4 -0
  6. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/GraphSession.md +4 -0
  7. simplecadapi-2.0.0b2/docs/api/README.md +122 -0
  8. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/SemanticDelta.md +4 -0
  9. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/SemanticRef.md +4 -0
  10. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/SimpleCADError.md +4 -0
  11. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/Sketch.md +4 -0
  12. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/Var.md +4 -0
  13. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/and_.md +4 -0
  14. simplecadapi-2.0.0b2/docs/api/apply_tag.md +23 -0
  15. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/chamfer_rsolid.md +4 -0
  16. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/const_function.md +4 -0
  17. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/cut_rsolidlist.md +9 -1
  18. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/export_graph_json.md +4 -0
  19. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/export_model_json.md +5 -1
  20. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/export_session_json.md +4 -0
  21. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/export_step.md +9 -6
  22. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/export_stl.md +9 -6
  23. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/extrude_rsolid.md +4 -0
  24. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/fillet_rsolid.md +4 -0
  25. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/geo.md +4 -0
  26. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/helical_sweep_rsolid.md +4 -0
  27. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/import_graph_json.md +4 -0
  28. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/import_model_json.md +4 -0
  29. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/import_session_json.md +4 -0
  30. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/intersect_rsolidlist.md +4 -0
  31. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/linear_pattern_rsolidlist.md +4 -0
  32. simplecadapi-2.0.0b2/docs/api/list_tags.md +17 -0
  33. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/loft_rsolid.md +4 -0
  34. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_angle_arc_redge.md +4 -0
  35. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_angle_arc_rwire.md +4 -0
  36. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_box_rsolid.md +4 -0
  37. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_circle_redge.md +4 -0
  38. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_circle_rface.md +4 -0
  39. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_circle_rwire.md +4 -0
  40. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_cone_rsolid.md +4 -0
  41. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_cylinder_rsolid.md +4 -0
  42. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_face_from_wire_rface.md +4 -0
  43. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_helix_redge.md +4 -0
  44. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_helix_rwire.md +4 -0
  45. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_line_redge.md +4 -0
  46. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_n_hole_flange_rsolid.md +4 -0
  47. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_naca_propeller_blade_rsolid.md +4 -0
  48. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_point_rvertex.md +4 -0
  49. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_polyline_rwire.md +4 -0
  50. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_rectangle_rface.md +4 -0
  51. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_rectangle_rwire.md +4 -0
  52. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_segment_redge.md +4 -0
  53. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_segment_rwire.md +4 -0
  54. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_sphere_rsolid.md +4 -0
  55. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_spline_redge.md +4 -0
  56. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_spline_rwire.md +4 -0
  57. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_threaded_rod_rsolid.md +4 -0
  58. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_three_point_arc_redge.md +4 -0
  59. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_three_point_arc_rwire.md +4 -0
  60. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/make_wire_from_edges_rwire.md +4 -0
  61. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/meta.md +4 -0
  62. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/mirror_shape.md +4 -0
  63. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/not_.md +4 -0
  64. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/or_.md +4 -0
  65. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/radial_pattern_rsolidlist.md +4 -0
  66. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/render_screenshot_rpath.md +4 -0
  67. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/replay_graph.md +5 -1
  68. simplecadapi-2.0.0b2/docs/api/replay_model_json.md +17 -0
  69. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/revolve_rsolid.md +4 -0
  70. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/rotate_shape.md +4 -0
  71. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/select.md +4 -0
  72. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/select_edges_by_tag.md +4 -0
  73. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/select_faces_by_tag.md +4 -0
  74. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/shell_rsolid.md +4 -0
  75. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/suspend_graph_recording.md +4 -0
  76. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/sweep_rsolid.md +4 -0
  77. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/tag.md +4 -0
  78. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/translate_shape.md +4 -0
  79. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/union_rsolid.md +4 -0
  80. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/value.md +4 -0
  81. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/api/var_function.md +4 -0
  82. simplecadapi-2.0.0b2/docs/architecture/sdk-architecture-review.md +369 -0
  83. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/README.md +3 -2
  84. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/compound.md +1 -1
  85. simplecadapi-2.0.0b2/docs/core/declarative_constraints.md +35 -0
  86. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/edge.md +21 -26
  87. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/face.md +42 -47
  88. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/operation_graph_json_spec.md +313 -249
  89. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/rearchitecture_2_0.md +18 -20
  90. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/rearchitecture_2_0_requirements.md +1 -3
  91. simplecadapi-2.0.0b2/docs/core/serialization/README.md +63 -0
  92. simplecadapi-2.0.0b2/docs/core/serialization/expressions-and-replay.md +146 -0
  93. simplecadapi-2.0.0b2/docs/core/serialization/features-booleans-transforms.md +471 -0
  94. simplecadapi-2.0.0b2/docs/core/serialization/primitives-and-profiles.md +457 -0
  95. simplecadapi-2.0.0b2/docs/core/serialization/scalar-fields.md +13 -0
  96. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/solid.md +45 -50
  97. simplecadapi-2.0.0b2/docs/core/tagged_mixin.md +90 -0
  98. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/vertex.md +24 -57
  99. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/wire.md +34 -39
  100. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/pyproject.toml +1 -1
  101. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/__init__.py +4 -50
  102. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/auto_tools/auto_docs_gen.py +38 -12
  103. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/auto_tools/make_export.py +8 -104
  104. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/auto_tools/skill_pack.py +111 -23
  105. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/autotag.py +8 -8
  106. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/core.py +74 -35
  107. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/expr.py +1 -0
  108. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/freecad_translator.py +233 -181
  109. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/graph.py +18 -12
  110. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/operations.py +562 -425
  111. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/ql.py +132 -11
  112. simplecadapi-2.0.0b2/src/simplecadapi/serializer.py +1673 -0
  113. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/tagging.py +22 -5
  114. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/topology.py +30 -9
  115. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/tracking.py +4 -0
  116. simplecadapi-2.0.0b1/docs/api/README.md +0 -150
  117. simplecadapi-2.0.0b1/docs/api/add_part_rassembly.md +0 -13
  118. simplecadapi-2.0.0b1/docs/api/bounds_rbbox.md +0 -23
  119. simplecadapi-2.0.0b1/docs/api/clear_constraints_rassembly.md +0 -13
  120. simplecadapi-2.0.0b1/docs/api/clone_assembly_rassembly.md +0 -13
  121. simplecadapi-2.0.0b1/docs/api/constrain_coincident_rassembly.md +0 -13
  122. simplecadapi-2.0.0b1/docs/api/constrain_concentric_rassembly.md +0 -13
  123. simplecadapi-2.0.0b1/docs/api/constrain_distance_rassembly.md +0 -13
  124. simplecadapi-2.0.0b1/docs/api/constrain_offset_rassembly.md +0 -13
  125. simplecadapi-2.0.0b1/docs/api/deserialize_scalar_field.md +0 -13
  126. simplecadapi-2.0.0b1/docs/api/eval_rarray.md +0 -35
  127. simplecadapi-2.0.0b1/docs/api/eval_rscalar.md +0 -35
  128. simplecadapi-2.0.0b1/docs/api/intersect_rscalarfield.md +0 -23
  129. simplecadapi-2.0.0b1/docs/api/make_assembly_rassembly.md +0 -13
  130. simplecadapi-2.0.0b1/docs/api/make_box_rscalarfield.md +0 -27
  131. simplecadapi-2.0.0b1/docs/api/make_capsule_rscalarfield.md +0 -31
  132. simplecadapi-2.0.0b1/docs/api/make_ellipsoid_rscalarfield.md +0 -27
  133. simplecadapi-2.0.0b1/docs/api/make_field_surface_rsolid.md +0 -13
  134. simplecadapi-2.0.0b1/docs/api/make_sphere_rscalarfield.md +0 -27
  135. simplecadapi-2.0.0b1/docs/api/replay_model_json.md +0 -13
  136. simplecadapi-2.0.0b1/docs/api/rotate_part_rassembly.md +0 -13
  137. simplecadapi-2.0.0b1/docs/api/rotate_rscalarfield.md +0 -31
  138. simplecadapi-2.0.0b1/docs/api/scale_rscalarfield.md +0 -27
  139. simplecadapi-2.0.0b1/docs/api/serialize_scalar_field.md +0 -13
  140. simplecadapi-2.0.0b1/docs/api/set_tag.md +0 -13
  141. simplecadapi-2.0.0b1/docs/api/smooth_subtract_rscalarfield.md +0 -31
  142. simplecadapi-2.0.0b1/docs/api/smooth_union_rscalarfield.md +0 -31
  143. simplecadapi-2.0.0b1/docs/api/solve_assembly_rresult.md +0 -13
  144. simplecadapi-2.0.0b1/docs/api/stack.md +0 -29
  145. simplecadapi-2.0.0b1/docs/api/stack_rassembly.md +0 -13
  146. simplecadapi-2.0.0b1/docs/api/subtract_rscalarfield.md +0 -27
  147. simplecadapi-2.0.0b1/docs/api/translate_part_rassembly.md +0 -13
  148. simplecadapi-2.0.0b1/docs/api/translate_rscalarfield.md +0 -27
  149. simplecadapi-2.0.0b1/docs/api/union_rscalarfield.md +0 -23
  150. simplecadapi-2.0.0b1/docs/core/declarative_constraints.md +0 -306
  151. simplecadapi-2.0.0b1/docs/core/tagged_mixin.md +0 -692
  152. simplecadapi-2.0.0b1/src/simplecadapi/constraints.py +0 -1470
  153. simplecadapi-2.0.0b1/src/simplecadapi/field.py +0 -542
  154. simplecadapi-2.0.0b1/src/simplecadapi/serializer.py +0 -1319
  155. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/.gitignore +0 -0
  156. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/LICENSE +0 -0
  157. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/MANIFEST.in +0 -0
  158. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/coordinate_system.md +0 -0
  159. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/shell.md +0 -0
  160. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/docs/core/simple_workplane.md +0 -0
  161. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/_vendor_warning_filters.py +0 -0
  162. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/auto_tools/__init__.py +0 -0
  163. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/auto_tools/evolution.py +0 -0
  164. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/errors.py +0 -0
  165. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/evolve.py +0 -0
  166. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/frame.py +0 -0
  167. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/__init__.py +0 -0
  168. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/ocp_booleans.py +0 -0
  169. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/ocp_builders.py +0 -0
  170. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/ocp_cast.py +0 -0
  171. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/ocp_curves.py +0 -0
  172. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/ocp_export.py +0 -0
  173. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/ocp_features.py +0 -0
  174. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/ocp_mesh.py +0 -0
  175. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/ocp_properties.py +0 -0
  176. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/ocp_topology.py +0 -0
  177. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/ocp_transforms.py +0 -0
  178. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/kernel/spline_fit.py +0 -0
  179. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b2}/src/simplecadapi/py.typed +0 -0
  180. {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.0b1
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/06_parametric_gear_model.py
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/06_parametric_gear_model.py
196
+ uv run python examples/07_serialization_operation_tree.py
190
197
  ```
191
198
 
192
199
  ## Core Design Constraints (Brief)
@@ -8,6 +8,10 @@ class Const
8
8
 
9
9
  *Source: expr.py*
10
10
 
11
+ ## Import Surface
12
+
13
+ - top-level: `from simplecadapi import Const`
14
+
11
15
  ## Description
12
16
 
13
17
  Immutable constant node used in the v2 expression graph.
@@ -8,6 +8,10 @@ class Expr
8
8
 
9
9
  *Source: expr.py*
10
10
 
11
+ ## Import Surface
12
+
13
+ - top-level: `from simplecadapi import Expr`
14
+
11
15
  ## Description
12
16
 
13
17
  Derived scalar expression node built from one or more operands.
@@ -8,6 +8,10 @@ class ExpressionGraph()
8
8
 
9
9
  *Source: expr.py*
10
10
 
11
+ ## Import Surface
12
+
13
+ - top-level: `from simplecadapi import ExpressionGraph`
14
+
11
15
  ## Description
12
16
 
13
17
  A lightweight registry of expression DAG nodes.
@@ -8,6 +8,10 @@ class GraphSession(graph_id: Optional[str] = None)
8
8
 
9
9
  *Source: graph.py*
10
10
 
11
+ ## Import Surface
12
+
13
+ - top-level: `from simplecadapi import GraphSession`
14
+
11
15
  ## Description
12
16
 
13
17
  Context manager that records CAD operations into a DAG.
@@ -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 SemanticDelta
8
8
 
9
9
  *Source: topology.py*
10
10
 
11
+ ## Import Surface
12
+
13
+ - top-level: `from simplecadapi import SemanticDelta`
14
+
11
15
  ## Description
12
16
 
13
17
  Semantic entity change set attached to a single recorded operation.
@@ -8,6 +8,10 @@ class SemanticRef
8
8
 
9
9
  *Source: topology.py*
10
10
 
11
+ ## Import Surface
12
+
13
+ - top-level: `from simplecadapi import SemanticRef`
14
+
11
15
  ## Description
12
16
 
13
17
  Stable reference to a semantic model entity in the recorded graph.
@@ -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.
@@ -8,6 +8,10 @@ class Sketch(curves: Iterable[Edge | Wire] | None = None)
8
8
 
9
9
  *Source: sketch.py*
10
10
 
11
+ ## Import Surface
12
+
13
+ - top-level: `from simplecadapi import Sketch`
14
+
11
15
  ## Description
12
16
 
13
17
  A lightweight first-class sketch container.
@@ -8,6 +8,10 @@ class Var
8
8
 
9
9
  *Source: expr.py*
10
10
 
11
+ ## Import Surface
12
+
13
+ - top-level: `from simplecadapi import Var`
14
+
11
15
  ## Description
12
16
 
13
17
  Named scalar parameter with a default fallback value.
@@ -8,6 +8,10 @@ def and_(*predicates: Predicate) -> Predicate
8
8
 
9
9
  *Source: ql.py*
10
10
 
11
+ ## Import Surface
12
+
13
+ - submodule: `from simplecadapi.ql import and_` or `simplecadapi.ql.and_`
14
+
11
15
  ## Description
12
16
 
13
17
  Combine predicates so all of them must match.
@@ -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.
@@ -8,6 +8,10 @@ def const(value: int | float) -> Const
8
8
 
9
9
  *Source: expr.py*
10
10
 
11
+ ## Import Surface
12
+
13
+ - top-level: `from simplecadapi import const`
14
+
11
15
  ## Description
12
16
 
13
17
  Create a constant scalar node for parameterized modeling.
@@ -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.
@@ -8,6 +8,10 @@ def export_graph_json(graph: OperationGraph, indent: int = 2) -> str
8
8
 
9
9
  *Source: serializer.py*
10
10
 
11
+ ## Import Surface
12
+
13
+ - top-level: `from simplecadapi import export_graph_json`
14
+
11
15
  ## Description
12
16
 
13
17
  Export an OperationGraph to a JSON string.
@@ -3,11 +3,15 @@
3
3
  ## API Definition
4
4
 
5
5
  ```python
6
- def export_model_json(session: 'GraphSession', indent: int = 2, assembly: Any | None = None) -> str
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 and often preferred when a
17
- previous boolean operation returned multiple solids.
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 list results returned by boolean operations.
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
- body_parts = union_rsolid(main_body, [left_cap, right_cap])
44
+ body = union_rsolid(main_body, [left_cap, right_cap])
41
45
  ```
42
46
 
43
47
  ### Example 2
44
48
  ```python
45
- # Export the full list directly; no need to collapse to body_parts[0].
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 and often preferred when a
17
- previous boolean operation returned multiple solids.
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 list results returned by boolean operations.
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
- body_parts = union_rsolid(main_body, [left_cap, right_cap])
44
+ body = union_rsolid(main_body, [left_cap, right_cap])
41
45
  ```
42
46
 
43
47
  ### Example 2
44
48
  ```python
45
- # Export the list result directly.
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 fillet_rsolid(solid: Solid, edges: Union[Sequence[Edge], ShapeSelector], rad
8
8
 
9
9
  *Source: operations.py*
10
10
 
11
+ ## Import Surface
12
+
13
+ - top-level: `from simplecadapi import fillet_rsolid`
14
+
11
15
  ## Description
12
16
 
13
17
  Apply fillets to selected solid edges.
@@ -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_graph_json(json_str: str) -> OperationGraph
8
8
 
9
9
  *Source: serializer.py*
10
10
 
11
+ ## Import Surface
12
+
13
+ - top-level: `from simplecadapi import import_graph_json`
14
+
11
15
  ## Description
12
16
 
13
17
  Import an OperationGraph from a JSON string.
@@ -8,6 +8,10 @@ def import_model_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_model_json`
14
+
11
15
  ## Description
12
16
 
13
17
  Import canonical 2.0 model seed JSON.
@@ -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 loft_rsolid(profiles: List[Wire], ruled: bool = False) -> Solid
8
8
 
9
9
  *Source: operations.py*
10
10
 
11
+ ## Import Surface
12
+
13
+ - top-level: `from simplecadapi import loft_rsolid`
14
+
11
15
  ## Description
12
16
 
13
17
  Create a solid by lofting multiple profiles.
@@ -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.