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.
Files changed (183) hide show
  1. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/PKG-INFO +113 -150
  2. simplecadapi-2.0.0b3/README.md +169 -0
  3. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/Const.md +4 -0
  4. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/Expr.md +4 -0
  5. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/ExpressionGraph.md +4 -0
  6. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/GraphSession.md +4 -0
  7. simplecadapi-2.0.0b3/docs/api/README.md +127 -0
  8. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/SemanticDelta.md +4 -0
  9. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/SemanticRef.md +4 -0
  10. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/SimpleCADError.md +4 -0
  11. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/Sketch.md +4 -0
  12. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/Var.md +4 -0
  13. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/and_.md +4 -0
  14. simplecadapi-2.0.0b3/docs/api/apply_tag.md +23 -0
  15. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/chamfer_rsolid.md +4 -0
  16. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/const_function.md +4 -0
  17. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/cut_rsolidlist.md +9 -1
  18. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/export_graph_json.md +4 -0
  19. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/export_model_json.md +5 -1
  20. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/export_session_json.md +4 -0
  21. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/export_step.md +9 -6
  22. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/export_stl.md +9 -6
  23. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/extrude_rsolid.md +4 -0
  24. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/fillet_rsolid.md +4 -0
  25. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/geo.md +4 -0
  26. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/helical_sweep_rsolid.md +4 -0
  27. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/import_graph_json.md +4 -0
  28. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/import_model_json.md +4 -0
  29. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/import_session_json.md +4 -0
  30. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/intersect_rsolidlist.md +4 -0
  31. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/linear_pattern_rsolidlist.md +4 -0
  32. simplecadapi-2.0.0b3/docs/api/list_tags.md +17 -0
  33. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/loft_rsolid.md +4 -0
  34. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_angle_arc_redge.md +4 -0
  35. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_angle_arc_rwire.md +4 -0
  36. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_box_rsolid.md +4 -0
  37. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_circle_redge.md +4 -0
  38. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_circle_rface.md +4 -0
  39. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_circle_rwire.md +4 -0
  40. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_cone_rsolid.md +4 -0
  41. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_cylinder_rsolid.md +4 -0
  42. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_face_from_wire_rface.md +4 -0
  43. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_helix_redge.md +4 -0
  44. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_helix_rwire.md +4 -0
  45. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_line_redge.md +4 -0
  46. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_n_hole_flange_rsolid.md +4 -0
  47. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_naca_propeller_blade_rsolid.md +4 -0
  48. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_point_rvertex.md +4 -0
  49. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_polyline_rwire.md +4 -0
  50. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_rectangle_rface.md +4 -0
  51. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_rectangle_rwire.md +4 -0
  52. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_segment_redge.md +4 -0
  53. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_segment_rwire.md +4 -0
  54. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_sphere_rsolid.md +4 -0
  55. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_spline_redge.md +4 -0
  56. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_spline_rwire.md +4 -0
  57. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_threaded_rod_rsolid.md +4 -0
  58. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_three_point_arc_redge.md +4 -0
  59. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_three_point_arc_rwire.md +4 -0
  60. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/make_wire_from_edges_rwire.md +4 -0
  61. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/meta.md +4 -0
  62. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/mirror_shape.md +4 -0
  63. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/not_.md +4 -0
  64. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/or_.md +4 -0
  65. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/radial_pattern_rsolidlist.md +4 -0
  66. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/render_screenshot_rpath.md +4 -0
  67. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/replay_graph.md +5 -1
  68. simplecadapi-2.0.0b3/docs/api/replay_model_json.md +17 -0
  69. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/revolve_rsolid.md +4 -0
  70. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/rotate_shape.md +4 -0
  71. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/select.md +4 -0
  72. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/select_edges_by_tag.md +4 -0
  73. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/select_faces_by_tag.md +4 -0
  74. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/shell_rsolid.md +4 -0
  75. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/suspend_graph_recording.md +4 -0
  76. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/sweep_rsolid.md +4 -0
  77. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/tag.md +4 -0
  78. simplecadapi-2.0.0b3/docs/api/translate_model_json_to_fcstd.md +17 -0
  79. simplecadapi-2.0.0b3/docs/api/translate_model_json_to_freecad_script.md +17 -0
  80. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/translate_shape.md +4 -0
  81. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/union_rsolid.md +4 -0
  82. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/value.md +4 -0
  83. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/api/var_function.md +4 -0
  84. simplecadapi-2.0.0b3/docs/architecture/sdk-architecture-review.md +369 -0
  85. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/README.md +6 -7
  86. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/compound.md +1 -1
  87. simplecadapi-2.0.0b3/docs/core/declarative_constraints.md +35 -0
  88. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/edge.md +21 -26
  89. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/face.md +42 -47
  90. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/operation_graph_json_spec.md +320 -257
  91. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/rearchitecture_2_0.md +18 -20
  92. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/rearchitecture_2_0_requirements.md +1 -3
  93. simplecadapi-2.0.0b3/docs/core/serialization/README.md +62 -0
  94. simplecadapi-2.0.0b3/docs/core/serialization/expressions-and-replay.md +145 -0
  95. simplecadapi-2.0.0b3/docs/core/serialization/features-booleans-transforms.md +468 -0
  96. simplecadapi-2.0.0b3/docs/core/serialization/primitives-and-profiles.md +457 -0
  97. simplecadapi-2.0.0b3/docs/core/serialization/scalar-fields.md +13 -0
  98. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/solid.md +79 -50
  99. simplecadapi-2.0.0b3/docs/core/tagged_mixin.md +90 -0
  100. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/vertex.md +24 -57
  101. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/wire.md +35 -40
  102. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/pyproject.toml +1 -1
  103. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/__init__.py +4 -50
  104. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/auto_tools/auto_docs_gen.py +46 -14
  105. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/auto_tools/make_export.py +8 -104
  106. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/auto_tools/skill_pack.py +114 -23
  107. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/autotag.py +8 -8
  108. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/core.py +169 -51
  109. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/expr.py +1 -0
  110. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/freecad_translator.py +234 -181
  111. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/graph.py +18 -12
  112. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/operations.py +614 -446
  113. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/ql.py +132 -11
  114. simplecadapi-2.0.0b3/src/simplecadapi/serializer.py +1664 -0
  115. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/tagging.py +22 -5
  116. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/topology.py +30 -9
  117. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/tracking.py +4 -0
  118. simplecadapi-2.0.0b1/README.md +0 -206
  119. simplecadapi-2.0.0b1/docs/api/README.md +0 -150
  120. simplecadapi-2.0.0b1/docs/api/add_part_rassembly.md +0 -13
  121. simplecadapi-2.0.0b1/docs/api/bounds_rbbox.md +0 -23
  122. simplecadapi-2.0.0b1/docs/api/clear_constraints_rassembly.md +0 -13
  123. simplecadapi-2.0.0b1/docs/api/clone_assembly_rassembly.md +0 -13
  124. simplecadapi-2.0.0b1/docs/api/constrain_coincident_rassembly.md +0 -13
  125. simplecadapi-2.0.0b1/docs/api/constrain_concentric_rassembly.md +0 -13
  126. simplecadapi-2.0.0b1/docs/api/constrain_distance_rassembly.md +0 -13
  127. simplecadapi-2.0.0b1/docs/api/constrain_offset_rassembly.md +0 -13
  128. simplecadapi-2.0.0b1/docs/api/deserialize_scalar_field.md +0 -13
  129. simplecadapi-2.0.0b1/docs/api/eval_rarray.md +0 -35
  130. simplecadapi-2.0.0b1/docs/api/eval_rscalar.md +0 -35
  131. simplecadapi-2.0.0b1/docs/api/intersect_rscalarfield.md +0 -23
  132. simplecadapi-2.0.0b1/docs/api/make_assembly_rassembly.md +0 -13
  133. simplecadapi-2.0.0b1/docs/api/make_box_rscalarfield.md +0 -27
  134. simplecadapi-2.0.0b1/docs/api/make_capsule_rscalarfield.md +0 -31
  135. simplecadapi-2.0.0b1/docs/api/make_ellipsoid_rscalarfield.md +0 -27
  136. simplecadapi-2.0.0b1/docs/api/make_field_surface_rsolid.md +0 -13
  137. simplecadapi-2.0.0b1/docs/api/make_sphere_rscalarfield.md +0 -27
  138. simplecadapi-2.0.0b1/docs/api/replay_model_json.md +0 -13
  139. simplecadapi-2.0.0b1/docs/api/rotate_part_rassembly.md +0 -13
  140. simplecadapi-2.0.0b1/docs/api/rotate_rscalarfield.md +0 -31
  141. simplecadapi-2.0.0b1/docs/api/scale_rscalarfield.md +0 -27
  142. simplecadapi-2.0.0b1/docs/api/serialize_scalar_field.md +0 -13
  143. simplecadapi-2.0.0b1/docs/api/set_tag.md +0 -13
  144. simplecadapi-2.0.0b1/docs/api/smooth_subtract_rscalarfield.md +0 -31
  145. simplecadapi-2.0.0b1/docs/api/smooth_union_rscalarfield.md +0 -31
  146. simplecadapi-2.0.0b1/docs/api/solve_assembly_rresult.md +0 -13
  147. simplecadapi-2.0.0b1/docs/api/stack.md +0 -29
  148. simplecadapi-2.0.0b1/docs/api/stack_rassembly.md +0 -13
  149. simplecadapi-2.0.0b1/docs/api/subtract_rscalarfield.md +0 -27
  150. simplecadapi-2.0.0b1/docs/api/translate_part_rassembly.md +0 -13
  151. simplecadapi-2.0.0b1/docs/api/translate_rscalarfield.md +0 -27
  152. simplecadapi-2.0.0b1/docs/api/union_rscalarfield.md +0 -23
  153. simplecadapi-2.0.0b1/docs/core/declarative_constraints.md +0 -306
  154. simplecadapi-2.0.0b1/docs/core/tagged_mixin.md +0 -692
  155. simplecadapi-2.0.0b1/src/simplecadapi/constraints.py +0 -1470
  156. simplecadapi-2.0.0b1/src/simplecadapi/field.py +0 -542
  157. simplecadapi-2.0.0b1/src/simplecadapi/serializer.py +0 -1319
  158. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/.gitignore +0 -0
  159. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/LICENSE +0 -0
  160. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/MANIFEST.in +0 -0
  161. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/coordinate_system.md +0 -0
  162. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/shell.md +0 -0
  163. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/docs/core/simple_workplane.md +0 -0
  164. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/_vendor_warning_filters.py +0 -0
  165. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/auto_tools/__init__.py +0 -0
  166. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/auto_tools/evolution.py +0 -0
  167. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/errors.py +0 -0
  168. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/evolve.py +0 -0
  169. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/frame.py +0 -0
  170. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/__init__.py +0 -0
  171. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/ocp_booleans.py +0 -0
  172. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/ocp_builders.py +0 -0
  173. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/ocp_cast.py +0 -0
  174. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/ocp_curves.py +0 -0
  175. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/ocp_export.py +0 -0
  176. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/ocp_features.py +0 -0
  177. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/ocp_mesh.py +0 -0
  178. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/ocp_properties.py +0 -0
  179. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/ocp_topology.py +0 -0
  180. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/ocp_transforms.py +0 -0
  181. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/kernel/spline_fit.py +0 -0
  182. {simplecadapi-2.0.0b1 → simplecadapi-2.0.0b3}/src/simplecadapi/py.typed +0 -0
  183. {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.0b1
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 imperative CAD modeling Python package. It keeps the 1.x-style functional API while adding v2 graph recording, expression parameters, and replayable model JSON workflows.
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
- ## README Scope
384
+ Current beta: `simplecadapi==2.0.0b3`.
381
385
 
382
- This README only covers package-level capabilities, installation methods, publishing/packaging workflows, and Skills usage instructions.
383
- Experimental scripts and temporary modeling examples are not included as formal documentation.
386
+ ## What It Provides
384
387
 
385
- ## Package Installation (Python Package Managers)
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
- Current package name: `simplecadapi` (see `pyproject.toml` for the version).
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
- Optional development dependencies:
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
- ### Method C: Install from local build artifacts
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 build
415
+ uv sync --group dev
421
416
  ```
422
417
 
423
- ## Quick Verification of Installation
418
+ ## Quick Start
424
419
 
425
420
  ```python
426
- import simplecadapi as scad
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
- This project provides the `skill-pack` CLI for generating lightweight SDK reference skills: **No built-in SDK source code**, focused on API and architecture descriptions.
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
- ### 2) Packaging Result Structure
425
+ out = Path("out")
426
+ out.mkdir(exist_ok=True)
454
427
 
455
- After packaging, you will get a directory similar to:
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
- - `skills/simplecadapi/SKILL.md`
458
- - `skills/simplecadapi/references/`
459
- - `skills/simplecadapi/references/docs/api/`
460
- - `skills/simplecadapi/references/docs/core/`
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
- ### 3) Read the SDK skill
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
- ```bash
465
- cd skills/simplecadapi
441
+ scad.export_step(part, str(out / "bracket.step"))
442
+ scad.export_stl(part, str(out / "bracket.stl"))
466
443
  ```
467
444
 
468
- Key entry points:
445
+ ## Replayable Modeling
469
446
 
470
- - `skills/simplecadapi/SKILL.md`
471
- - `skills/simplecadapi/references/SDK_OVERVIEW.md`
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
- from simplecadapi import GraphSession, export_model_json, replay_model_json
482
-
483
- with GraphSession() as session:
484
- ...
485
-
486
- model_json = export_model_json(session)
487
- rebuilt = replay_model_json(model_json)
488
- print(len(rebuilt))
489
- ```
490
-
491
- ## Auto Tools
492
-
493
- The project includes 4 main CLIs:
494
-
495
- - `auto-docs-gen`: Generate `docs/api/` documentation from the public API source surface
496
- - `make-export`: Update imports/exports in `src/simplecadapi/__init__.py`
497
- - `evolve`: Extract functions from scripts for repository-managed evolve modules
498
- - `skill-pack`: Package thin SDK skill (documentation only)
499
-
500
- Examples:
501
-
502
- ```bash
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
- Run the sync:
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
- ```bash
530
- set -a && source .env && set +a
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
- Common parameters:
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
- ## Development and Testing
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
- Run unit tests:
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/06_parametric_gear_model.py
522
+ uv run python examples/07_serialization_operation_tree.py
565
523
  ```
566
524
 
567
- ## Core Design Constraints (Brief)
525
+ ## Documentation
568
526
 
569
- - API functions uniformly use `snake_case` and reflect return types in function names (e.g., `*_rsolid`, `*_rwire`).
570
- - Core types are OCP-native wrappers and are kept as stable as possible; functionality is extended by adding new functions (Open-Closed Principle).
571
- - Support `SimpleWorkplane` context for local coordinate modeling.
572
- - Export interfaces support single entities, multiple entities, and nested list inputs.
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
- ## Documentation Entry Points
534
+ ## Development
575
535
 
576
- - API documentation: `docs/api/`
577
- - Core documentation: `docs/core/`
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).
@@ -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,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`
@@ -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.