simplecadapi 2.0.1__tar.gz → 2.0.1b1__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.1 → simplecadapi-2.0.1b1}/.gitignore +8 -0
- {simplecadapi-2.0.1 → simplecadapi-2.0.1b1}/PKG-INFO +127 -169
- simplecadapi-2.0.1b1/README.md +176 -0
- simplecadapi-2.0.1b1/docs/api/Assembly.md +17 -0
- simplecadapi-2.0.1b1/docs/api/BSplineFitResult.md +21 -0
- simplecadapi-2.0.1b1/docs/api/Component.md +17 -0
- simplecadapi-2.0.1b1/docs/api/Connector.md +20 -0
- simplecadapi-2.0.1b1/docs/api/ConnectorRef.md +17 -0
- simplecadapi-2.0.1b1/docs/api/Const.md +17 -0
- simplecadapi-2.0.1b1/docs/api/Constraint.md +17 -0
- simplecadapi-2.0.1b1/docs/api/ConstraintReport.md +17 -0
- simplecadapi-2.0.1b1/docs/api/ConstraintResidual.md +17 -0
- simplecadapi-2.0.1b1/docs/api/Expr.md +17 -0
- simplecadapi-2.0.1b1/docs/api/ExpressionGraph.md +17 -0
- simplecadapi-2.0.1b1/docs/api/GeometryRef.md +22 -0
- simplecadapi-2.0.1b1/docs/api/GraphSession.md +31 -0
- simplecadapi-2.0.1b1/docs/api/Material.md +17 -0
- simplecadapi-2.0.1b1/docs/api/Part.md +17 -0
- simplecadapi-2.0.1b1/docs/api/Placement.md +17 -0
- simplecadapi-2.0.1b1/docs/api/README.md +203 -0
- simplecadapi-2.0.1b1/docs/api/ScalarLimit.md +17 -0
- simplecadapi-2.0.1b1/docs/api/SemanticDelta.md +17 -0
- simplecadapi-2.0.1b1/docs/api/SemanticRef.md +17 -0
- simplecadapi-2.0.1b1/docs/api/SimpleCADError.md +17 -0
- simplecadapi-2.0.1b1/docs/api/Sketch.md +24 -0
- simplecadapi-2.0.1b1/docs/api/SketchConstraint.md +17 -0
- simplecadapi-2.0.1b1/docs/api/SketchConstraintDiagnostic.md +17 -0
- simplecadapi-2.0.1b1/docs/api/SketchRef.md +17 -0
- simplecadapi-2.0.1b1/docs/api/SketchSolveResult.md +17 -0
- simplecadapi-2.0.1b1/docs/api/Var.md +17 -0
- simplecadapi-2.0.1b1/docs/api/add_circle_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/add_component_rassembly.md +17 -0
- simplecadapi-2.0.1b1/docs/api/add_connector_rassembly.md +17 -0
- simplecadapi-2.0.1b1/docs/api/add_connector_rpart.md +17 -0
- simplecadapi-2.0.1b1/docs/api/add_fixed_constraint_rassembly.md +17 -0
- simplecadapi-2.0.1b1/docs/api/add_line_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/add_point_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/add_prismatic_constraint_rassembly.md +17 -0
- simplecadapi-2.0.1b1/docs/api/add_revolute_constraint_rassembly.md +17 -0
- simplecadapi-2.0.1b1/docs/api/and_.md +17 -0
- simplecadapi-2.0.1b1/docs/api/apply_tag.md +23 -0
- simplecadapi-2.0.1b1/docs/api/assign_material_rpart.md +17 -0
- simplecadapi-2.0.1b1/docs/api/chamfer_rsolid.md +17 -0
- simplecadapi-2.0.1b1/docs/api/const_function.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_angle_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_coincident_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_collinear_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_concentric_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_connect_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_diameter_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_distance_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_distance_x_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_distance_y_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_equal_length_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_equal_radius_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_fix_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_horizontal_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_length_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_midpoint_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_parallel_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_perpendicular_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_point_on_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_radius_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_symmetric_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_tangent_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/constrain_vertical_rsketch.md +17 -0
- simplecadapi-2.0.1b1/docs/api/cut_rsolid.md +34 -0
- simplecadapi-2.0.1b1/docs/api/export_graph_json.md +31 -0
- simplecadapi-2.0.1b1/docs/api/export_model_json.md +22 -0
- simplecadapi-2.0.1b1/docs/api/export_session_json.md +17 -0
- simplecadapi-2.0.1b1/docs/api/export_step.md +50 -0
- simplecadapi-2.0.1b1/docs/api/export_stl.md +50 -0
- simplecadapi-2.0.1b1/docs/api/extrude_rsolid.md +17 -0
- simplecadapi-2.0.1b1/docs/api/fillet_rsolid.md +17 -0
- simplecadapi-2.0.1b1/docs/api/fit_cubic_bspline_control_points.md +79 -0
- simplecadapi-2.0.1b1/docs/api/geo.md +17 -0
- simplecadapi-2.0.1b1/docs/api/get_sketch_entity_rsketchref.md +17 -0
- simplecadapi-2.0.1b1/docs/api/get_sketch_point_rsketchref.md +17 -0
- simplecadapi-2.0.1b1/docs/api/ground_component_rassembly.md +17 -0
- simplecadapi-2.0.1b1/docs/api/helical_sweep_rsolid.md +17 -0
- simplecadapi-2.0.1b1/docs/api/identity_placement_rplacement.md +17 -0
- simplecadapi-2.0.1b1/docs/api/import_graph_json.md +27 -0
- simplecadapi-2.0.1b1/docs/api/import_model_json.md +17 -0
- simplecadapi-2.0.1b1/docs/api/import_session_json.md +17 -0
- simplecadapi-2.0.1b1/docs/api/inspect_assembly_constraints_rconstraintreport.md +17 -0
- simplecadapi-2.0.1b1/docs/api/inspect_sketch_rsketchresult.md +17 -0
- simplecadapi-2.0.1b1/docs/api/intersect_rsolid.md +31 -0
- simplecadapi-2.0.1b1/docs/api/linear_pattern_rsolidlist.md +17 -0
- simplecadapi-2.0.1b1/docs/api/list_tags.md +17 -0
- simplecadapi-2.0.1b1/docs/api/loft_rsolid.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_angle_arc_redge.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_angle_arc_rwire.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_assembly_rassembly.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_box_rsolid.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_circle_redge.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_circle_rface.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_circle_rwire.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_compound_from_assembly_rcompound.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_cone_rsolid.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_connector_ref_rconnectorref.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_cylinder_rsolid.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_edge_connector_rconnector.md +20 -0
- simplecadapi-2.0.1b1/docs/api/make_face_connector_rconnector.md +20 -0
- simplecadapi-2.0.1b1/docs/api/make_face_from_sketch_rface.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_face_from_wire_rface.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_helix_redge.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_helix_rwire.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_line_redge.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_material_rmaterial.md +21 -0
- simplecadapi-2.0.1b1/docs/api/make_n_hole_flange_rsolid.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_naca_propeller_blade_rsolid.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_part_rpart.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_placement_rplacement.md +20 -0
- simplecadapi-2.0.1b1/docs/api/make_point_rvertex.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_polyline_rwire.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_rectangle_rface.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_rectangle_rwire.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_scalar_limit_rscalarlimit.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_segment_redge.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_segment_rwire.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_sketch_rsketch.md +20 -0
- simplecadapi-2.0.1b1/docs/api/make_sphere_rsolid.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_spline_redge.md +22 -0
- simplecadapi-2.0.1b1/docs/api/make_spline_rwire.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_threaded_rod_rsolid.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_three_point_arc_redge.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_three_point_arc_rwire.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_vertex_connector_rconnector.md +20 -0
- simplecadapi-2.0.1b1/docs/api/make_wire_from_edges_rwire.md +17 -0
- simplecadapi-2.0.1b1/docs/api/make_wire_from_sketch_rwire.md +17 -0
- simplecadapi-2.0.1b1/docs/api/measure_constraint_residual_rconstraintresidual.md +17 -0
- simplecadapi-2.0.1b1/docs/api/meta.md +35 -0
- simplecadapi-2.0.1b1/docs/api/mirror_shape.md +17 -0
- simplecadapi-2.0.1b1/docs/api/not_.md +17 -0
- simplecadapi-2.0.1b1/docs/api/or_.md +17 -0
- simplecadapi-2.0.1b1/docs/api/place_component_rassembly.md +17 -0
- simplecadapi-2.0.1b1/docs/api/radial_pattern_rsolidlist.md +17 -0
- simplecadapi-2.0.1b1/docs/api/render_screenshot_rpath.md +17 -0
- simplecadapi-2.0.1b1/docs/api/replay_graph.md +31 -0
- simplecadapi-2.0.1b1/docs/api/replay_model_json.md +17 -0
- simplecadapi-2.0.1b1/docs/api/revolve_rsolid.md +17 -0
- simplecadapi-2.0.1b1/docs/api/rotate_shape.md +17 -0
- simplecadapi-2.0.1b1/docs/api/select.md +17 -0
- {simplecadapi-2.0.1 → simplecadapi-2.0.1b1}/docs/api/select_edges_by_tag.md +4 -14
- {simplecadapi-2.0.1 → simplecadapi-2.0.1b1}/docs/api/select_faces_by_tag.md +4 -14
- simplecadapi-2.0.1b1/docs/api/shell_rsolid.md +17 -0
- simplecadapi-2.0.1b1/docs/api/solve_assembly_constraints_rassembly.md +28 -0
- simplecadapi-2.0.1b1/docs/api/suspend_graph_recording.md +17 -0
- simplecadapi-2.0.1b1/docs/api/sweep_rsolid.md +17 -0
- simplecadapi-2.0.1b1/docs/api/tag.md +27 -0
- simplecadapi-2.0.1b1/docs/api/translate_model_json_to_fcstd.md +30 -0
- simplecadapi-2.0.1b1/docs/api/translate_model_json_to_freecad_script.md +23 -0
- simplecadapi-2.0.1b1/docs/api/translate_shape.md +17 -0
- simplecadapi-2.0.1b1/docs/api/unground_component_rassembly.md +17 -0
- simplecadapi-2.0.1b1/docs/api/union_rsolid.md +53 -0
- simplecadapi-2.0.1b1/docs/api/value.md +31 -0
- simplecadapi-2.0.1b1/docs/api/var_function.md +17 -0
- simplecadapi-2.0.1b1/docs/architecture/sdk-architecture-review.md +369 -0
- simplecadapi-2.0.1b1/docs/core/README.md +106 -0
- simplecadapi-2.0.1b1/docs/core/compound.md +22 -0
- simplecadapi-2.0.1b1/docs/core/coordinate_system.md +30 -0
- simplecadapi-2.0.1b1/docs/core/declarative_constraints.md +65 -0
- {simplecadapi-2.0.1/skills/simplecad-self-evolve/references → simplecadapi-2.0.1b1}/docs/core/edge.md +87 -90
- {simplecadapi-2.0.1 → simplecadapi-2.0.1b1}/docs/core/face.md +108 -113
- simplecadapi-2.0.1b1/docs/core/operation_graph_json_spec.md +1606 -0
- simplecadapi-2.0.1b1/docs/core/part_assembly_development_plan.md +448 -0
- simplecadapi-2.0.1b1/docs/core/rearchitecture_2_0.md +1071 -0
- simplecadapi-2.0.1b1/docs/core/rearchitecture_2_0_requirements.md +423 -0
- simplecadapi-2.0.1b1/docs/core/serialization/README.md +62 -0
- simplecadapi-2.0.1b1/docs/core/serialization/expressions-and-replay.md +145 -0
- simplecadapi-2.0.1b1/docs/core/serialization/features-booleans-transforms.md +468 -0
- simplecadapi-2.0.1b1/docs/core/serialization/primitives-and-profiles.md +465 -0
- simplecadapi-2.0.1b1/docs/core/serialization/scalar-fields.md +13 -0
- simplecadapi-2.0.1b1/docs/core/shell.md +11 -0
- simplecadapi-2.0.1b1/docs/core/simple_workplane.md +26 -0
- {simplecadapi-2.0.1 → simplecadapi-2.0.1b1}/docs/core/solid.md +164 -135
- simplecadapi-2.0.1b1/docs/core/tagged_mixin.md +90 -0
- {simplecadapi-2.0.1/skills/simplecad-self-evolve/references → simplecadapi-2.0.1b1}/docs/core/vertex.md +80 -113
- {simplecadapi-2.0.1 → simplecadapi-2.0.1b1}/docs/core/wire.md +94 -99
- {simplecadapi-2.0.1 → simplecadapi-2.0.1b1}/pyproject.toml +28 -8
- simplecadapi-2.0.1b1/src/simplecadapi/__init__.py +470 -0
- simplecadapi-2.0.1b1/src/simplecadapi/_vendor_warning_filters.py +25 -0
- {simplecadapi-2.0.1 → simplecadapi-2.0.1b1}/src/simplecadapi/auto_tools/auto_docs_gen.py +369 -40
- {simplecadapi-2.0.1 → simplecadapi-2.0.1b1}/src/simplecadapi/auto_tools/evolution.py +6 -28
- simplecadapi-2.0.1b1/src/simplecadapi/auto_tools/make_export.py +616 -0
- simplecadapi-2.0.1b1/src/simplecadapi/auto_tools/skill_pack.py +901 -0
- simplecadapi-2.0.1b1/src/simplecadapi/autotag.py +165 -0
- simplecadapi-2.0.1b1/src/simplecadapi/core.py +1049 -0
- simplecadapi-2.0.1b1/src/simplecadapi/errors.py +153 -0
- {simplecadapi-2.0.1 → simplecadapi-2.0.1b1}/src/simplecadapi/evolve.py +162 -170
- simplecadapi-2.0.1b1/src/simplecadapi/expr.py +415 -0
- simplecadapi-2.0.1b1/src/simplecadapi/frame.py +82 -0
- simplecadapi-2.0.1b1/src/simplecadapi/freecad_translator.py +4422 -0
- simplecadapi-2.0.1b1/src/simplecadapi/graph.py +397 -0
- simplecadapi-2.0.1b1/src/simplecadapi/kernel/__init__.py +1 -0
- simplecadapi-2.0.1b1/src/simplecadapi/kernel/ocp_booleans.py +93 -0
- simplecadapi-2.0.1b1/src/simplecadapi/kernel/ocp_builders.py +74 -0
- simplecadapi-2.0.1b1/src/simplecadapi/kernel/ocp_cast.py +72 -0
- simplecadapi-2.0.1b1/src/simplecadapi/kernel/ocp_curves.py +143 -0
- simplecadapi-2.0.1b1/src/simplecadapi/kernel/ocp_export.py +53 -0
- simplecadapi-2.0.1b1/src/simplecadapi/kernel/ocp_features.py +76 -0
- simplecadapi-2.0.1b1/src/simplecadapi/kernel/ocp_mesh.py +72 -0
- simplecadapi-2.0.1b1/src/simplecadapi/kernel/ocp_properties.py +266 -0
- simplecadapi-2.0.1b1/src/simplecadapi/kernel/ocp_topology.py +69 -0
- simplecadapi-2.0.1b1/src/simplecadapi/kernel/ocp_transforms.py +116 -0
- simplecadapi-2.0.1b1/src/simplecadapi/math.py +574 -0
- simplecadapi-2.0.1b1/src/simplecadapi/operations.py +7025 -0
- simplecadapi-2.0.1b1/src/simplecadapi/product.py +1317 -0
- simplecadapi-2.0.1b1/src/simplecadapi/ql.py +1023 -0
- simplecadapi-2.0.1b1/src/simplecadapi/serializer.py +2285 -0
- simplecadapi-2.0.1b1/src/simplecadapi/sketch.py +1208 -0
- simplecadapi-2.0.1b1/src/simplecadapi/std/__init__.py +15 -0
- simplecadapi-2.0.1b1/src/simplecadapi/std/gear.py +1076 -0
- {simplecadapi-2.0.1 → simplecadapi-2.0.1b1}/src/simplecadapi/tagging.py +39 -21
- simplecadapi-2.0.1b1/src/simplecadapi/topology.py +753 -0
- simplecadapi-2.0.1b1/src/simplecadapi/tracking.py +886 -0
- simplecadapi-2.0.1/.python-version +0 -1
- simplecadapi-2.0.1/README.md +0 -218
- simplecadapi-2.0.1/docs/api/README.md +0 -119
- simplecadapi-2.0.1/docs/api/add_part_rassembly.md +0 -13
- simplecadapi-2.0.1/docs/api/and_.md +0 -25
- simplecadapi-2.0.1/docs/api/bounds_rbbox.md +0 -23
- simplecadapi-2.0.1/docs/api/chamfer_rsolid.md +0 -67
- simplecadapi-2.0.1/docs/api/clear_constraints_rassembly.md +0 -13
- simplecadapi-2.0.1/docs/api/clone_assembly_rassembly.md +0 -13
- simplecadapi-2.0.1/docs/api/constrain_coincident_rassembly.md +0 -13
- simplecadapi-2.0.1/docs/api/constrain_concentric_rassembly.md +0 -13
- simplecadapi-2.0.1/docs/api/constrain_distance_rassembly.md +0 -13
- simplecadapi-2.0.1/docs/api/constrain_offset_rassembly.md +0 -13
- simplecadapi-2.0.1/docs/api/cut_rsolidlist.md +0 -59
- simplecadapi-2.0.1/docs/api/eval_rarray.md +0 -35
- simplecadapi-2.0.1/docs/api/eval_rscalar.md +0 -35
- simplecadapi-2.0.1/docs/api/export_step.md +0 -27
- simplecadapi-2.0.1/docs/api/export_stl.md +0 -27
- simplecadapi-2.0.1/docs/api/extrude_rsolid.md +0 -65
- simplecadapi-2.0.1/docs/api/fillet_rsolid.md +0 -69
- simplecadapi-2.0.1/docs/api/geo.md +0 -29
- simplecadapi-2.0.1/docs/api/helical_sweep_rsolid.md +0 -83
- simplecadapi-2.0.1/docs/api/intersect_rscalarfield.md +0 -23
- simplecadapi-2.0.1/docs/api/intersect_rsolidlist.md +0 -60
- simplecadapi-2.0.1/docs/api/linear_pattern_rsolidlist.md +0 -70
- simplecadapi-2.0.1/docs/api/loft_rsolid.md +0 -63
- simplecadapi-2.0.1/docs/api/make_angle_arc_redge.md +0 -77
- simplecadapi-2.0.1/docs/api/make_angle_arc_rwire.md +0 -69
- simplecadapi-2.0.1/docs/api/make_assembly_rassembly.md +0 -13
- simplecadapi-2.0.1/docs/api/make_box_rscalarfield.md +0 -27
- simplecadapi-2.0.1/docs/api/make_box_rsolid.md +0 -75
- simplecadapi-2.0.1/docs/api/make_capsule_rscalarfield.md +0 -31
- simplecadapi-2.0.1/docs/api/make_circle_redge.md +0 -61
- simplecadapi-2.0.1/docs/api/make_circle_rface.md +0 -57
- simplecadapi-2.0.1/docs/api/make_circle_rwire.md +0 -55
- simplecadapi-2.0.1/docs/api/make_cone_rsolid.md +0 -66
- simplecadapi-2.0.1/docs/api/make_cylinder_rsolid.md +0 -74
- simplecadapi-2.0.1/docs/api/make_ellipsoid_rscalarfield.md +0 -27
- simplecadapi-2.0.1/docs/api/make_face_from_wire_rface.md +0 -60
- simplecadapi-2.0.1/docs/api/make_field_surface_rsolid.md +0 -52
- simplecadapi-2.0.1/docs/api/make_helix_redge.md +0 -71
- simplecadapi-2.0.1/docs/api/make_helix_rwire.md +0 -67
- simplecadapi-2.0.1/docs/api/make_line_redge.md +0 -57
- simplecadapi-2.0.1/docs/api/make_n_hole_flange_rsolid.md +0 -94
- simplecadapi-2.0.1/docs/api/make_naca_propeller_blade_rsolid.md +0 -74
- simplecadapi-2.0.1/docs/api/make_point_rvertex.md +0 -62
- simplecadapi-2.0.1/docs/api/make_polyline_rwire.md +0 -59
- simplecadapi-2.0.1/docs/api/make_rectangle_rface.md +0 -62
- simplecadapi-2.0.1/docs/api/make_rectangle_rwire.md +0 -66
- simplecadapi-2.0.1/docs/api/make_segment_redge.md +0 -46
- simplecadapi-2.0.1/docs/api/make_segment_rwire.md +0 -50
- simplecadapi-2.0.1/docs/api/make_sphere_rscalarfield.md +0 -27
- simplecadapi-2.0.1/docs/api/make_sphere_rsolid.md +0 -64
- simplecadapi-2.0.1/docs/api/make_spline_redge.md +0 -60
- simplecadapi-2.0.1/docs/api/make_spline_rwire.md +0 -57
- simplecadapi-2.0.1/docs/api/make_threaded_rod_rsolid.md +0 -79
- simplecadapi-2.0.1/docs/api/make_three_point_arc_redge.md +0 -61
- simplecadapi-2.0.1/docs/api/make_three_point_arc_rwire.md +0 -56
- simplecadapi-2.0.1/docs/api/make_wire_from_edges_rwire.md +0 -49
- simplecadapi-2.0.1/docs/api/meta.md +0 -45
- simplecadapi-2.0.1/docs/api/mirror_shape.md +0 -64
- simplecadapi-2.0.1/docs/api/not_.md +0 -25
- simplecadapi-2.0.1/docs/api/or_.md +0 -25
- simplecadapi-2.0.1/docs/api/radial_pattern_rsolidlist.md +0 -74
- simplecadapi-2.0.1/docs/api/render_screenshot_rpath.md +0 -68
- simplecadapi-2.0.1/docs/api/revolve_rsolid.md +0 -70
- simplecadapi-2.0.1/docs/api/rotate_part_rassembly.md +0 -13
- simplecadapi-2.0.1/docs/api/rotate_rscalarfield.md +0 -31
- simplecadapi-2.0.1/docs/api/rotate_shape.md +0 -70
- simplecadapi-2.0.1/docs/api/scale_rscalarfield.md +0 -27
- simplecadapi-2.0.1/docs/api/select.md +0 -25
- simplecadapi-2.0.1/docs/api/set_tag.md +0 -27
- simplecadapi-2.0.1/docs/api/shell_rsolid.md +0 -67
- simplecadapi-2.0.1/docs/api/smooth_subtract_rscalarfield.md +0 -31
- simplecadapi-2.0.1/docs/api/smooth_union_rscalarfield.md +0 -31
- simplecadapi-2.0.1/docs/api/solve_assembly_rresult.md +0 -13
- simplecadapi-2.0.1/docs/api/stack.md +0 -27
- simplecadapi-2.0.1/docs/api/stack_rassembly.md +0 -13
- simplecadapi-2.0.1/docs/api/subtract_rscalarfield.md +0 -27
- simplecadapi-2.0.1/docs/api/sweep_rsolid.md +0 -68
- simplecadapi-2.0.1/docs/api/tag.md +0 -37
- simplecadapi-2.0.1/docs/api/translate_part_rassembly.md +0 -13
- simplecadapi-2.0.1/docs/api/translate_rscalarfield.md +0 -27
- simplecadapi-2.0.1/docs/api/translate_shape.md +0 -59
- simplecadapi-2.0.1/docs/api/union_rscalarfield.md +0 -23
- simplecadapi-2.0.1/docs/api/union_rsolidlist.md +0 -51
- simplecadapi-2.0.1/docs/api/value.md +0 -36
- simplecadapi-2.0.1/docs/core/README.md +0 -213
- simplecadapi-2.0.1/docs/core/compound.md +0 -635
- simplecadapi-2.0.1/docs/core/coordinate_system.md +0 -175
- simplecadapi-2.0.1/docs/core/declarative_constraints.md +0 -307
- simplecadapi-2.0.1/docs/core/edge.md +0 -389
- simplecadapi-2.0.1/docs/core/shell.md +0 -518
- simplecadapi-2.0.1/docs/core/simple_workplane.md +0 -278
- simplecadapi-2.0.1/docs/core/tagged_mixin.md +0 -692
- simplecadapi-2.0.1/docs/core/vertex.md +0 -320
- simplecadapi-2.0.1/examples.py +0 -949
- simplecadapi-2.0.1/refactor-plan/tagging.md +0 -149
- simplecadapi-2.0.1/sandbox/@1/funnel_trial.stl +0 -0
- simplecadapi-2.0.1/sandbox/@1/grooved_fillet_ring_trial.stl +0 -0
- simplecadapi-2.0.1/sandbox/@1/loft_head_pin_trial.stl +0 -0
- simplecadapi-2.0.1/sandbox/@1/ring_ear_step_boss_trial.stl +0 -0
- simplecadapi-2.0.1/sandbox/@2/loft_head_pin_trial.stl +0 -0
- simplecadapi-2.0.1/sandbox/@2/ring_ear_step_boss_trial.stl +0 -0
- simplecadapi-2.0.1/sandbox/constraint_gear_mesh_showcase.py +0 -485
- simplecadapi-2.0.1/sandbox/field_surface_showcase.py +0 -222
- simplecadapi-2.0.1/sandbox/gear_case.py +0 -260
- simplecadapi-2.0.1/sandbox/grooved_fillet_ring_trial.py +0 -199
- simplecadapi-2.0.1/sandbox/helicopter_showcase.py +0 -398
- simplecadapi-2.0.1/sandbox/keyboard_model.py +0 -388
- simplecadapi-2.0.1/sandbox/loft_head_pin_trial.py +0 -160
- simplecadapi-2.0.1/sandbox/model_rounds.md +0 -120
- simplecadapi-2.0.1/sandbox/model_rounds.pdf +25 -13195
- simplecadapi-2.0.1/sandbox/model_rounds.typ +0 -199
- simplecadapi-2.0.1/sandbox/model_rounds_typst.pdf +25 -13195
- simplecadapi-2.0.1/sandbox/out/export/helicopter_low.stl +0 -0
- simplecadapi-2.0.1/sandbox/out/export/helicopter_low_mesh.stl +0 -26231
- simplecadapi-2.0.1/sandbox/out/field_showcase/fuselage.stl +0 -0
- simplecadapi-2.0.1/sandbox/out/field_showcase/sphere.stl +0 -0
- simplecadapi-2.0.1/sandbox/out/field_showcase/square_mid.stl +0 -0
- simplecadapi-2.0.1/sandbox/out/keyboard_assembly.step +0 -25880
- simplecadapi-2.0.1/sandbox/out/keyboard_assembly.stl +0 -0
- simplecadapi-2.0.1/sandbox/out/render_preview/helicopter_custom/helicopter_front.png +0 -0
- simplecadapi-2.0.1/sandbox/out/render_preview/helicopter_custom/helicopter_iso.png +0 -0
- simplecadapi-2.0.1/sandbox/out/render_preview/helicopter_custom/helicopter_iso_opposite.png +0 -0
- simplecadapi-2.0.1/sandbox/out/render_preview/helicopter_custom/helicopter_right.png +0 -0
- simplecadapi-2.0.1/sandbox/out/render_preview/helicopter_custom/helicopter_top.png +0 -0
- simplecadapi-2.0.1/sandbox/out/render_preview/helicopter_custom_low/helicopter_iso.png +0 -0
- simplecadapi-2.0.1/sandbox/out/render_preview/helicopter_custom_low/helicopter_iso_quick.png +0 -0
- simplecadapi-2.0.1/sandbox/out/render_preview/helicopter_views6/helicopter_6views_grid.png +0 -0
- simplecadapi-2.0.1/sandbox/out/render_preview/helicopter_views6/helicopter_back.png +0 -0
- simplecadapi-2.0.1/sandbox/out/render_preview/helicopter_views6/helicopter_bottom.png +0 -0
- simplecadapi-2.0.1/sandbox/out/render_preview/helicopter_views6/helicopter_front.png +0 -0
- simplecadapi-2.0.1/sandbox/out/render_preview/helicopter_views6/helicopter_left.png +0 -0
- simplecadapi-2.0.1/sandbox/out/render_preview/helicopter_views6/helicopter_right.png +0 -0
- simplecadapi-2.0.1/sandbox/out/render_preview/helicopter_views6/helicopter_top.png +0 -0
- simplecadapi-2.0.1/sandbox/out/render_preview/helicopter_views_iso/helicopter_front.png +0 -0
- simplecadapi-2.0.1/sandbox/out/render_preview/helicopter_views_iso/helicopter_iso.png +0 -0
- simplecadapi-2.0.1/sandbox/out/render_preview/helicopter_views_iso/helicopter_iso_and_3views.png +0 -0
- simplecadapi-2.0.1/sandbox/out/render_preview/helicopter_views_iso/helicopter_iso_opposite.png +0 -0
- simplecadapi-2.0.1/sandbox/out/render_preview/helicopter_views_iso/helicopter_right.png +0 -0
- simplecadapi-2.0.1/sandbox/out/render_preview/helicopter_views_iso/helicopter_top.png +0 -0
- simplecadapi-2.0.1/sandbox/previews/@1/funnel_gt.png +0 -0
- simplecadapi-2.0.1/sandbox/previews/@1/funnel_trial.png +0 -0
- simplecadapi-2.0.1/sandbox/previews/@1/funnel_trial_3view.png +0 -0
- simplecadapi-2.0.1/sandbox/previews/@1/grooved_fillet_ring_gt.png +0 -0
- simplecadapi-2.0.1/sandbox/previews/@1/grooved_fillet_ring_trial.png +0 -0
- simplecadapi-2.0.1/sandbox/previews/@1/grooved_fillet_ring_trial_3view.png +0 -0
- simplecadapi-2.0.1/sandbox/previews/@1/loft_head_pin_gt.png +0 -0
- simplecadapi-2.0.1/sandbox/previews/@1/loft_head_pin_trial.png +0 -0
- simplecadapi-2.0.1/sandbox/previews/@1/loft_head_pin_trial_3view.png +0 -0
- simplecadapi-2.0.1/sandbox/previews/@1/ring_ear_step_boss_gt.png +0 -0
- simplecadapi-2.0.1/sandbox/previews/@1/ring_ear_step_boss_trial.png +0 -0
- simplecadapi-2.0.1/sandbox/previews/@1/ring_ear_step_boss_trial_3view.png +0 -0
- simplecadapi-2.0.1/sandbox/previews/@2/loft_head_pin_trial.png +0 -0
- simplecadapi-2.0.1/sandbox/previews/@2/loft_head_pin_trial_3view.png +0 -0
- simplecadapi-2.0.1/sandbox/previews/@2/ring_ear_step_boss_trial.png +0 -0
- simplecadapi-2.0.1/sandbox/previews/@2/ring_ear_step_boss_trial_3view.png +0 -0
- simplecadapi-2.0.1/sandbox/ring_ear_step_boss_trial.py +0 -245
- simplecadapi-2.0.1/scripts/publish.sh +0 -45
- simplecadapi-2.0.1/scripts/sync_ragflow_docs.py +0 -478
- simplecadapi-2.0.1/skills/simplecad-self-evolve/SKILL.md +0 -139
- simplecadapi-2.0.1/skills/simplecad-self-evolve/cases/simplecad_self_evolve_cases/__init__.py +0 -3
- simplecadapi-2.0.1/skills/simplecad-self-evolve/cases/simplecad_self_evolve_cases/evolve.py +0 -322
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/EVOLVE_WORKFLOW.md +0 -34
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/LICENSE.txt +0 -339
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/PROJECT_OVERVIEW.md +0 -31
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/PROJECT_README.md +0 -99
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/RUNTIME_INSTALL.md +0 -48
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/README.md +0 -78
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/chamfer_rsolid.md +0 -67
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/cut_rsolidlist.md +0 -59
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/export_step.md +0 -27
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/export_stl.md +0 -27
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/extrude_rsolid.md +0 -65
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/fillet_rsolid.md +0 -69
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/helical_sweep_rsolid.md +0 -83
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/intersect_rsolidlist.md +0 -60
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/linear_pattern_rsolidlist.md +0 -70
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/loft_rsolid.md +0 -63
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_angle_arc_redge.md +0 -77
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_angle_arc_rwire.md +0 -69
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_box_rsolid.md +0 -75
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_circle_redge.md +0 -61
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_circle_rface.md +0 -57
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_circle_rwire.md +0 -55
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_cone_rsolid.md +0 -66
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_cylinder_rsolid.md +0 -74
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_face_from_wire_rface.md +0 -60
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_helix_redge.md +0 -71
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_helix_rwire.md +0 -67
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_line_redge.md +0 -57
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_n_hole_flange_rsolid.md +0 -94
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_naca_propeller_blade_rsolid.md +0 -74
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_point_rvertex.md +0 -62
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_polyline_rwire.md +0 -59
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_rectangle_rface.md +0 -62
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_rectangle_rwire.md +0 -66
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_segment_redge.md +0 -46
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_segment_rwire.md +0 -50
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_sphere_rsolid.md +0 -64
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_spline_redge.md +0 -60
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_spline_rwire.md +0 -57
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_threaded_rod_rsolid.md +0 -79
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_three_point_arc_redge.md +0 -61
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_three_point_arc_rwire.md +0 -56
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/make_wire_from_edges_rwire.md +0 -49
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/mirror_shape.md +0 -64
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/radial_pattern_rsolidlist.md +0 -74
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/revolve_rsolid.md +0 -70
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/rotate_shape.md +0 -70
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/select_edges_by_tag.md +0 -27
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/select_faces_by_tag.md +0 -27
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/set_tag.md +0 -27
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/shell_rsolid.md +0 -67
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/sweep_rsolid.md +0 -68
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/translate_shape.md +0 -59
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/api/union_rsolidlist.md +0 -51
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/core/README.md +0 -212
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/core/compound.md +0 -635
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/core/coordinate_system.md +0 -175
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/core/face.md +0 -550
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/core/shell.md +0 -518
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/core/simple_workplane.md +0 -278
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/core/solid.md +0 -697
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/core/tagged_mixin.md +0 -692
- simplecadapi-2.0.1/skills/simplecad-self-evolve/references/docs/core/wire.md +0 -452
- simplecadapi-2.0.1/skills/simplecad-self-evolve/scripts/add_new_case.sh +0 -24
- simplecadapi-2.0.1/skills/simplecad-self-evolve/scripts/evolve_case.py +0 -190
- simplecadapi-2.0.1/skills/simplecad-self-evolve/scripts/install.sh +0 -88
- simplecadapi-2.0.1/skills/simplecad-self-evolve/scripts/jupyter_with_skill.sh +0 -39
- simplecadapi-2.0.1/skills/simplecad-self-evolve/scripts/repl_bootstrap.py +0 -108
- simplecadapi-2.0.1/skills/simplecad-self-evolve/scripts/validate_skill.sh +0 -50
- simplecadapi-2.0.1/skills/simplecad-self-evolve/scripts/with_skill.sh +0 -113
- simplecadapi-2.0.1/src/docs/api/README.md +0 -78
- simplecadapi-2.0.1/src/docs/api/chamfer_rsolid.md +0 -56
- simplecadapi-2.0.1/src/docs/api/cut_rsolidlist.md +0 -48
- simplecadapi-2.0.1/src/docs/api/export_step.md +0 -23
- simplecadapi-2.0.1/src/docs/api/export_stl.md +0 -23
- simplecadapi-2.0.1/src/docs/api/extrude_rsolid.md +0 -54
- simplecadapi-2.0.1/src/docs/api/fillet_rsolid.md +0 -58
- simplecadapi-2.0.1/src/docs/api/helical_sweep_rsolid.md +0 -71
- simplecadapi-2.0.1/src/docs/api/intersect_rsolidlist.md +0 -49
- simplecadapi-2.0.1/src/docs/api/linear_pattern_rsolidlist.md +0 -59
- simplecadapi-2.0.1/src/docs/api/loft_rsolid.md +0 -52
- simplecadapi-2.0.1/src/docs/api/make_angle_arc_redge.md +0 -62
- simplecadapi-2.0.1/src/docs/api/make_angle_arc_rwire.md +0 -58
- simplecadapi-2.0.1/src/docs/api/make_box_rsolid.md +0 -60
- simplecadapi-2.0.1/src/docs/api/make_circle_redge.md +0 -50
- simplecadapi-2.0.1/src/docs/api/make_circle_rface.md +0 -50
- simplecadapi-2.0.1/src/docs/api/make_circle_rwire.md +0 -48
- simplecadapi-2.0.1/src/docs/api/make_cone_rsolid.md +0 -59
- simplecadapi-2.0.1/src/docs/api/make_cylinder_rsolid.md +0 -59
- simplecadapi-2.0.1/src/docs/api/make_face_from_wire_rface.md +0 -49
- simplecadapi-2.0.1/src/docs/api/make_helix_redge.md +0 -60
- simplecadapi-2.0.1/src/docs/api/make_helix_rwire.md +0 -60
- simplecadapi-2.0.1/src/docs/api/make_line_redge.md +0 -46
- simplecadapi-2.0.1/src/docs/api/make_n_hole_flange_rsolid.md +0 -92
- simplecadapi-2.0.1/src/docs/api/make_naca_propeller_blade_rsolid.md +0 -71
- simplecadapi-2.0.1/src/docs/api/make_point_rvertex.md +0 -51
- simplecadapi-2.0.1/src/docs/api/make_polyline_rwire.md +0 -48
- simplecadapi-2.0.1/src/docs/api/make_rectangle_rface.md +0 -55
- simplecadapi-2.0.1/src/docs/api/make_rectangle_rwire.md +0 -55
- simplecadapi-2.0.1/src/docs/api/make_segment_redge.md +0 -39
- simplecadapi-2.0.1/src/docs/api/make_segment_rwire.md +0 -43
- simplecadapi-2.0.1/src/docs/api/make_sphere_rsolid.md +0 -49
- simplecadapi-2.0.1/src/docs/api/make_spline_redge.md +0 -49
- simplecadapi-2.0.1/src/docs/api/make_spline_rwire.md +0 -50
- simplecadapi-2.0.1/src/docs/api/make_threaded_rod_rsolid.md +0 -76
- simplecadapi-2.0.1/src/docs/api/make_three_point_arc_redge.md +0 -50
- simplecadapi-2.0.1/src/docs/api/make_three_point_arc_rwire.md +0 -49
- simplecadapi-2.0.1/src/docs/api/make_wire_from_edges_rwire.md +0 -42
- simplecadapi-2.0.1/src/docs/api/mirror_shape.md +0 -53
- simplecadapi-2.0.1/src/docs/api/radial_pattern_rsolidlist.md +0 -63
- simplecadapi-2.0.1/src/docs/api/revolve_rsolid.md +0 -59
- simplecadapi-2.0.1/src/docs/api/rotate_shape.md +0 -59
- simplecadapi-2.0.1/src/docs/api/select_edges_by_tag.md +0 -23
- simplecadapi-2.0.1/src/docs/api/select_faces_by_tag.md +0 -23
- simplecadapi-2.0.1/src/docs/api/set_tag.md +0 -23
- simplecadapi-2.0.1/src/docs/api/shell_rsolid.md +0 -56
- simplecadapi-2.0.1/src/docs/api/sweep_rsolid.md +0 -57
- simplecadapi-2.0.1/src/docs/api/translate_shape.md +0 -48
- simplecadapi-2.0.1/src/docs/api/union_rsolidlist.md +0 -44
- simplecadapi-2.0.1/src/simplecadapi/__init__.py +0 -292
- simplecadapi-2.0.1/src/simplecadapi/auto_tools/make_export.py +0 -697
- simplecadapi-2.0.1/src/simplecadapi/auto_tools/skill_pack.py +0 -1456
- simplecadapi-2.0.1/src/simplecadapi/constraints.py +0 -1168
- simplecadapi-2.0.1/src/simplecadapi/core.py +0 -1080
- simplecadapi-2.0.1/src/simplecadapi/field.py +0 -480
- simplecadapi-2.0.1/src/simplecadapi/operations.py +0 -3694
- simplecadapi-2.0.1/src/simplecadapi/ql.py +0 -363
- simplecadapi-2.0.1/test/test_all_features.py +0 -1126
- simplecadapi-2.0.1/test/test_field_surface.py +0 -80
- simplecadapi-2.0.1/test/test_ql.py +0 -74
- simplecadapi-2.0.1/test/test_tagging_refactor.py +0 -74
- simplecadapi-2.0.1/uv.lock +0 -4218
- {simplecadapi-2.0.1 → simplecadapi-2.0.1b1}/LICENSE +0 -0
- {simplecadapi-2.0.1 → simplecadapi-2.0.1b1}/MANIFEST.in +0 -0
- {simplecadapi-2.0.1 → simplecadapi-2.0.1b1}/src/simplecadapi/auto_tools/__init__.py +0 -0
- {simplecadapi-2.0.1 → simplecadapi-2.0.1b1}/src/simplecadapi/py.typed +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: simplecadapi
|
|
3
|
-
Version: 2.0.
|
|
4
|
-
Summary: A simplified CAD modeling Python API
|
|
3
|
+
Version: 2.0.1b1
|
|
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
|
|
7
7
|
Project-URL: Documentation, https://github.com/NiJingzhe/SimpleCADAPI#readme
|
|
@@ -348,7 +348,7 @@ License: GNU GENERAL PUBLIC LICENSE
|
|
|
348
348
|
library. If this is what you want to do, use the GNU Lesser General
|
|
349
349
|
Public License instead of this License.
|
|
350
350
|
License-File: LICENSE
|
|
351
|
-
Keywords: 3d,cad,
|
|
351
|
+
Keywords: 3d,cad,design,modeling,ocp,opencascade
|
|
352
352
|
Classifier: Development Status :: 3 - Alpha
|
|
353
353
|
Classifier: Intended Audience :: Developers
|
|
354
354
|
Classifier: Intended Audience :: Manufacturing
|
|
@@ -358,10 +358,11 @@ Classifier: Programming Language :: Python :: 3
|
|
|
358
358
|
Classifier: Programming Language :: Python :: 3.10
|
|
359
359
|
Classifier: Programming Language :: Python :: 3.11
|
|
360
360
|
Classifier: Programming Language :: Python :: 3.12
|
|
361
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
361
362
|
Classifier: Topic :: Scientific/Engineering
|
|
362
363
|
Classifier: Topic :: Scientific/Engineering :: Visualization
|
|
363
|
-
Requires-Python:
|
|
364
|
-
Requires-Dist: cadquery>=
|
|
364
|
+
Requires-Python: <3.14,>=3.10
|
|
365
|
+
Requires-Dist: cadquery-ocp>=7.9.3.1
|
|
365
366
|
Requires-Dist: numpy>=1.21.0
|
|
366
367
|
Requires-Dist: rich>=14.0.0
|
|
367
368
|
Provides-Extra: dev
|
|
@@ -371,224 +372,181 @@ Requires-Dist: mypy>=1.0; extra == 'dev'
|
|
|
371
372
|
Requires-Dist: pytest-cov>=4.0; extra == 'dev'
|
|
372
373
|
Requires-Dist: pytest>=7.0; extra == 'dev'
|
|
373
374
|
Provides-Extra: editor
|
|
374
|
-
Requires-Dist: cq-editor>=0.5.0; extra == 'editor'
|
|
375
375
|
Description-Content-Type: text/markdown
|
|
376
376
|
|
|
377
377
|
# SimpleCADAPI
|
|
378
378
|
|
|
379
|
-
SimpleCADAPI
|
|
379
|
+
SimpleCADAPI is an OCP-native Python SDK for building CAD models with clear,
|
|
380
|
+
functional operations and replayable model graphs. It wraps OpenCascade geometry
|
|
381
|
+
in a compact public API for creating solids, applying features, tagging semantic
|
|
382
|
+
intent, querying topology, exporting manufacturing files, and translating recorded
|
|
383
|
+
models into FreeCAD workflows.
|
|
380
384
|
|
|
381
|
-
|
|
385
|
+
Current beta: `simplecadapi==2.0.1b1`.
|
|
382
386
|
|
|
383
|
-
|
|
384
|
-
实验性脚本和临时建模样例不作为正式文档内容。
|
|
387
|
+
## What It Provides
|
|
385
388
|
|
|
386
|
-
|
|
389
|
+
- OCP-native shape types: `Vertex`, `Edge`, `Wire`, `Face`, and `Solid`.
|
|
390
|
+
- Functional modeling operations for primitives, profiles, extrude, revolve,
|
|
391
|
+
loft, sweep, booleans, transforms, patterns, fillets, chamfers, and shells.
|
|
392
|
+
- Replayable modeling with `GraphSession`, `export_model_json(...)`,
|
|
393
|
+
`import_model_json(...)`, and `replay_model_json(...)`.
|
|
394
|
+
- Expression parameters with `var(...)`, arithmetic expressions, and serialized
|
|
395
|
+
expression graphs.
|
|
396
|
+
- QL selectors for geometry grounding, topology queries, and stable feature
|
|
397
|
+
selections.
|
|
398
|
+
- Semantic tags through `apply_tag(shape, tag)` and `list_tags(shape)`.
|
|
399
|
+
- STEP/STL export and FreeCAD translation helpers for script or `.FCStd` output.
|
|
387
400
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
### 方式 A:用 pip 从包仓库安装
|
|
401
|
+
## Install
|
|
391
402
|
|
|
392
403
|
```bash
|
|
393
404
|
pip install simplecadapi
|
|
394
405
|
```
|
|
395
406
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
```bash
|
|
399
|
-
pip install "simplecadapi[dev]"
|
|
400
|
-
```
|
|
401
|
-
|
|
402
|
-
### 方式 B:用 uv 安装
|
|
403
|
-
|
|
404
|
-
在当前虚拟环境安装:
|
|
405
|
-
|
|
406
|
-
```bash
|
|
407
|
-
uv pip install simplecadapi
|
|
408
|
-
```
|
|
409
|
-
|
|
410
|
-
作为项目依赖写入 `pyproject.toml`:
|
|
407
|
+
With `uv`:
|
|
411
408
|
|
|
412
409
|
```bash
|
|
413
410
|
uv add simplecadapi
|
|
414
411
|
```
|
|
415
412
|
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
仓库内已有示例构建产物(`dist/`):
|
|
419
|
-
|
|
420
|
-
```bash
|
|
421
|
-
pip install dist/simplecadapi-2.0.0-py3-none-any.whl
|
|
422
|
-
```
|
|
423
|
-
|
|
424
|
-
如果你需要重新构建:
|
|
413
|
+
For local development from this repository:
|
|
425
414
|
|
|
426
415
|
```bash
|
|
427
|
-
uv
|
|
416
|
+
uv sync --group dev
|
|
428
417
|
```
|
|
429
418
|
|
|
430
|
-
##
|
|
419
|
+
## Quick Start
|
|
431
420
|
|
|
432
421
|
```python
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
box = scad.make_box_rsolid(10.0, 20.0, 30.0)
|
|
436
|
-
scad.export_stl(box, "example_box.stl")
|
|
437
|
-
scad.export_step(box, "example_box.step")
|
|
438
|
-
```
|
|
439
|
-
|
|
440
|
-
## 如何打包并使用 Skills
|
|
441
|
-
|
|
442
|
-
本项目提供 `skill-pack` CLI,用于生成轻量技能包(thin mode):**不内置 SDK 源码**,运行时从包仓库安装 `simplecadapi`。
|
|
443
|
-
|
|
444
|
-
### 1) 打包命令
|
|
445
|
-
|
|
446
|
-
在仓库根目录执行:
|
|
447
|
-
|
|
448
|
-
```bash
|
|
449
|
-
uv run skill-pack --refresh-docs --archive --skill-name simplecad-self-evolve
|
|
450
|
-
```
|
|
451
|
-
|
|
452
|
-
常用参数:
|
|
422
|
+
from pathlib import Path
|
|
453
423
|
|
|
454
|
-
|
|
455
|
-
- `--package-name <pkg>`:运行时安装包名(默认读取 `project.name`)
|
|
456
|
-
- `--package-version <ver>`:运行时安装版本(默认读取 `project.version`)
|
|
457
|
-
- `--no-clean`:不清理已有输出目录
|
|
458
|
-
- `--archive`:额外生成 `<skill-name>.tar.gz`
|
|
459
|
-
|
|
460
|
-
### 2) 打包结果结构
|
|
461
|
-
|
|
462
|
-
打包后将得到类似目录:
|
|
424
|
+
import simplecadapi as scad
|
|
463
425
|
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
- `skills/simplecad-self-evolve/references/`
|
|
467
|
-
- `skills/simplecad-self-evolve/cases/simplecad_self_evolve_cases/`
|
|
426
|
+
out = Path("out")
|
|
427
|
+
out.mkdir(exist_ok=True)
|
|
468
428
|
|
|
469
|
-
|
|
429
|
+
base = scad.make_box_rsolid(60.0, 36.0, 8.0, bottom_face_center=(0.0, 0.0, 0.0))
|
|
430
|
+
hole = scad.make_cylinder_rsolid(5.0, 14.0, bottom_face_center=(0.0, 0.0, -3.0))
|
|
431
|
+
slot = scad.make_box_rsolid(18.0, 8.0, 14.0, bottom_face_center=(14.0, 0.0, -3.0))
|
|
470
432
|
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
```
|
|
433
|
+
part = scad.cut_rsolid(base, hole, slot)
|
|
434
|
+
boss = scad.make_cylinder_rsolid(8.0, 7.0, bottom_face_center=(-18.0, 0.0, 8.0))
|
|
435
|
+
part = scad.union_rsolid(part, boss)
|
|
436
|
+
part = scad.apply_tag(part, "role.demo.bracket")
|
|
476
437
|
|
|
477
|
-
|
|
438
|
+
print("volume", round(part.get_volume(), 3))
|
|
439
|
+
print("faces", len(part.get_faces()))
|
|
440
|
+
print("tags", scad.list_tags(part))
|
|
478
441
|
|
|
479
|
-
|
|
480
|
-
|
|
442
|
+
scad.export_step(part, str(out / "bracket.step"))
|
|
443
|
+
scad.export_stl(part, str(out / "bracket.stl"))
|
|
481
444
|
```
|
|
482
445
|
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
```bash
|
|
486
|
-
eval "$(scripts/with_skill.sh --print-env)"
|
|
487
|
-
```
|
|
446
|
+
## Replayable Modeling
|
|
488
447
|
|
|
489
|
-
|
|
448
|
+
Use `GraphSession` when a model should be inspectable, serializable, replayable,
|
|
449
|
+
or translated into another CAD environment.
|
|
490
450
|
|
|
491
451
|
```python
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
- `evolve`:从脚本提取函数并追加到 evolve 模块
|
|
515
|
-
- `skill-pack`:打包 thin skill(文档 + 脚本 + cases)
|
|
516
|
-
|
|
517
|
-
示例:
|
|
518
|
-
|
|
519
|
-
```bash
|
|
520
|
-
uv run make-export --dry-run
|
|
521
|
-
uv run auto-docs-gen
|
|
522
|
-
uv run evolve path/to/your_case.py
|
|
523
|
-
uv run skill-pack --refresh-docs --archive
|
|
524
|
-
```
|
|
525
|
-
|
|
526
|
-
## RAGFlow 文档同步
|
|
527
|
-
|
|
528
|
-
`scripts/sync_ragflow_docs.py` 用于把 `docs/` 下的 Markdown 增量同步到指定
|
|
529
|
-
RAGFlow 数据集,并按二级标题(H2)分块;文档的 `chunk_method` 会设置为
|
|
530
|
-
`manual`。
|
|
531
|
-
|
|
532
|
-
准备环境:
|
|
533
|
-
|
|
534
|
-
```bash
|
|
535
|
-
.venv/bin/python -m pip install ragflow-sdk
|
|
452
|
+
import simplecadapi as scad
|
|
453
|
+
from simplecadapi import ql as Q
|
|
454
|
+
|
|
455
|
+
with scad.GraphSession() as session:
|
|
456
|
+
body = scad.make_box_rsolid(40.0, 24.0, 10.0, bottom_face_center=(0.0, 0.0, 0.0))
|
|
457
|
+
cutter = scad.make_cylinder_rsolid(4.0, 16.0, bottom_face_center=(0.0, 0.0, -3.0))
|
|
458
|
+
drilled = scad.cut_rsolid(body, cutter)
|
|
459
|
+
|
|
460
|
+
bottom_circle = (
|
|
461
|
+
Q.edges()
|
|
462
|
+
.where(Q.curve_type("circle"))
|
|
463
|
+
.order_by(Q.center_axis("z"))
|
|
464
|
+
.take(1)
|
|
465
|
+
.exactly(1)
|
|
466
|
+
)
|
|
467
|
+
final = scad.chamfer_rsolid(drilled, bottom_circle, 0.6)
|
|
468
|
+
|
|
469
|
+
model_json = scad.export_model_json(session)
|
|
470
|
+
rebuilt = scad.replay_model_json(model_json)
|
|
471
|
+
|
|
472
|
+
print("recorded_nodes", session.graph.node_count)
|
|
473
|
+
print("replayed_outputs", len(rebuilt))
|
|
536
474
|
```
|
|
537
475
|
|
|
538
|
-
|
|
476
|
+
## Modeling Mental Model
|
|
477
|
+
|
|
478
|
+
- Start from design intent: reference axes, critical profiles, and the features
|
|
479
|
+
that produce the final solid.
|
|
480
|
+
- Build from lower-dimensional geometry to higher-dimensional geometry: profile
|
|
481
|
+
wires/faces first, then solid features such as extrude, revolve, loft, and
|
|
482
|
+
sweep.
|
|
483
|
+
- Keep operations functional. Create new values with public functions such as
|
|
484
|
+
`make_rectangle_rface(...)`, `extrude_rsolid(...)`, `cut_rsolid(...)`, and
|
|
485
|
+
`fillet_rsolid(...)`.
|
|
486
|
+
- Use tags for semantic intent and selection anchors, for example
|
|
487
|
+
`role.mounting.surface`, `anchor.datum.primary`, or `group.fasteners`.
|
|
488
|
+
- Store numeric and geometric facts in metadata or graph payloads, not in tags.
|
|
489
|
+
- Use QL to ground selections by geometry facts rather than relying on topology
|
|
490
|
+
iteration order.
|
|
491
|
+
- When an indexed topology pick is intentional, pass the index to the plural
|
|
492
|
+
child-geometry getter, such as `get_edges(index)`, `get_faces(index)`,
|
|
493
|
+
`get_wires(index)`, or `get_vertices(index)`, so replayable graph workflows
|
|
494
|
+
preserve the pick as a geo select node.
|
|
495
|
+
- Use model JSON as the interchange boundary for replay, tests, and FreeCAD
|
|
496
|
+
translation.
|
|
497
|
+
|
|
498
|
+
## FreeCAD Translation
|
|
499
|
+
|
|
500
|
+
Recorded model JSON can be translated into a FreeCAD Python script:
|
|
539
501
|
|
|
540
|
-
```
|
|
541
|
-
|
|
542
|
-
RAGFLOW_BASE_URL=http://localhost
|
|
543
|
-
RAGFLOW_DATASET_NAME=SimpleCADAPI
|
|
502
|
+
```python
|
|
503
|
+
script = scad.translate_model_json_to_freecad_script(model_json)
|
|
544
504
|
```
|
|
545
505
|
|
|
546
|
-
|
|
506
|
+
If FreeCAD or FreeCADCmd is available, the same model JSON can be written as an
|
|
507
|
+
`.FCStd` file:
|
|
547
508
|
|
|
548
|
-
```
|
|
549
|
-
|
|
550
|
-
.venv/bin/python scripts/sync_ragflow_docs.py --create-dataset
|
|
509
|
+
```python
|
|
510
|
+
scad.translate_model_json_to_fcstd(model_json, "bracket.FCStd")
|
|
551
511
|
```
|
|
552
512
|
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
- `--delete-removed`:同步删除本地已移除的文档
|
|
557
|
-
- `--dry-run`:只预览变更,不执行写入
|
|
558
|
-
- `--progress-interval N`:每 N 篇打印一次进度
|
|
513
|
+
Part/Assembly models are written as editable FreeCAD assembly structure: parts are
|
|
514
|
+
`App::Part`, assemblies are `Assembly::AssemblyObject`, and components are links.
|
|
515
|
+
Explicit compound projections remain available for geometry-only STEP export.
|
|
559
516
|
|
|
560
|
-
##
|
|
517
|
+
## Examples
|
|
561
518
|
|
|
562
|
-
|
|
519
|
+
Run examples from the source checkout:
|
|
563
520
|
|
|
564
521
|
```bash
|
|
565
|
-
uv
|
|
522
|
+
uv run python examples/01_basic_modeling.py
|
|
523
|
+
uv run python examples/02_graph_replay.py
|
|
524
|
+
uv run python examples/03_expressions.py
|
|
525
|
+
uv run python examples/05_loft_sweep_revolve.py
|
|
526
|
+
uv run python examples/06_parametric_gear_model.py
|
|
527
|
+
uv run python examples/07_serialization_operation_tree.py
|
|
528
|
+
uv run python examples/08_constrained_sketch.py
|
|
529
|
+
uv run python examples/09_naca0016_blade_freecad.py
|
|
530
|
+
uv run python examples/10_part_assembly.py
|
|
566
531
|
```
|
|
567
532
|
|
|
568
|
-
|
|
533
|
+
## Documentation
|
|
569
534
|
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
535
|
+
- Public API reference: [`docs/api/`](docs/api/)
|
|
536
|
+
- Core type and modeling notes: [`docs/core/`](docs/core/)
|
|
537
|
+
- Serialization and replay details:
|
|
538
|
+
[`docs/core/serialization/README.md`](docs/core/serialization/README.md)
|
|
539
|
+
- Operation graph JSON spec:
|
|
540
|
+
[`docs/core/operation_graph_json_spec.md`](docs/core/operation_graph_json_spec.md)
|
|
573
541
|
|
|
574
|
-
|
|
542
|
+
## Development
|
|
575
543
|
|
|
576
544
|
```bash
|
|
577
|
-
uv
|
|
545
|
+
uv sync --group dev
|
|
546
|
+
uv run python -m pytest test tests
|
|
547
|
+
python3 -m compileall src/simplecadapi
|
|
578
548
|
```
|
|
579
549
|
|
|
580
|
-
## 核心设计约束(简要)
|
|
581
|
-
|
|
582
|
-
- API 函数统一使用 `snake_case`,并通过函数名体现返回类型(如 `*_rsolid`、`*_rwire`)。
|
|
583
|
-
- 核心类型尽量稳定,功能扩展通过新增函数完成(开放封闭原则)。
|
|
584
|
-
- 支持 `SimpleWorkplane` 上下文进行局部坐标建模。
|
|
585
|
-
- 导出接口支持单实体、多实体及嵌套列表输入。
|
|
586
|
-
|
|
587
|
-
## 文档入口
|
|
588
|
-
|
|
589
|
-
- API 文档:`docs/api/`
|
|
590
|
-
- Core 文档:`docs/core/`
|
|
591
|
-
|
|
592
550
|
## License
|
|
593
551
|
|
|
594
|
-
MIT
|
|
552
|
+
MIT, see [`LICENSE`](LICENSE).
|
|
@@ -0,0 +1,176 @@
|
|
|
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.1b1`.
|
|
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_rsolid(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_rsolid(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_rsolid(...)`, 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
|
+
Part/Assembly models are written as editable FreeCAD assembly structure: parts are
|
|
138
|
+
`App::Part`, assemblies are `Assembly::AssemblyObject`, and components are links.
|
|
139
|
+
Explicit compound projections remain available for geometry-only STEP export.
|
|
140
|
+
|
|
141
|
+
## Examples
|
|
142
|
+
|
|
143
|
+
Run examples from the source checkout:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
uv run python examples/01_basic_modeling.py
|
|
147
|
+
uv run python examples/02_graph_replay.py
|
|
148
|
+
uv run python examples/03_expressions.py
|
|
149
|
+
uv run python examples/05_loft_sweep_revolve.py
|
|
150
|
+
uv run python examples/06_parametric_gear_model.py
|
|
151
|
+
uv run python examples/07_serialization_operation_tree.py
|
|
152
|
+
uv run python examples/08_constrained_sketch.py
|
|
153
|
+
uv run python examples/09_naca0016_blade_freecad.py
|
|
154
|
+
uv run python examples/10_part_assembly.py
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Documentation
|
|
158
|
+
|
|
159
|
+
- Public API reference: [`docs/api/`](docs/api/)
|
|
160
|
+
- Core type and modeling notes: [`docs/core/`](docs/core/)
|
|
161
|
+
- Serialization and replay details:
|
|
162
|
+
[`docs/core/serialization/README.md`](docs/core/serialization/README.md)
|
|
163
|
+
- Operation graph JSON spec:
|
|
164
|
+
[`docs/core/operation_graph_json_spec.md`](docs/core/operation_graph_json_spec.md)
|
|
165
|
+
|
|
166
|
+
## Development
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
uv sync --group dev
|
|
170
|
+
uv run python -m pytest test tests
|
|
171
|
+
python3 -m compileall src/simplecadapi
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## License
|
|
175
|
+
|
|
176
|
+
MIT, see [`LICENSE`](LICENSE).
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Assembly
|
|
2
|
+
|
|
3
|
+
## Class Definition
|
|
4
|
+
|
|
5
|
+
```python
|
|
6
|
+
class Assembly(assembly_id: str, name: Optional[str] = None, components: Tuple[Component, ...] = (), connectors: Tuple[Connector, ...] = (), constraints: Tuple[Constraint, ...] = (), grounded_component_ids: Tuple[str, ...] = ())
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
*Source: product.py*
|
|
10
|
+
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- top-level: `from simplecadapi import Assembly`
|
|
14
|
+
|
|
15
|
+
## Description
|
|
16
|
+
|
|
17
|
+
Product structure containing placed Part or subassembly components.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# BSplineFitResult
|
|
2
|
+
|
|
3
|
+
## Class Definition
|
|
4
|
+
|
|
5
|
+
```python
|
|
6
|
+
class BSplineFitResult(degree: int, control_points: Tuple[PointTuple, ...], knots: Tuple[float, ...], sample_parameters: Tuple[float, ...], max_error: float, rms_error: float, tolerance: float, fairing: float, iterations: int, converged: bool)
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
*Source: math.py*
|
|
10
|
+
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- top-level: `from simplecadapi import BSplineFitResult`
|
|
14
|
+
|
|
15
|
+
## Description
|
|
16
|
+
|
|
17
|
+
Result from fitting a cubic B-spline to sampled curve points.
|
|
18
|
+
|
|
19
|
+
The result stores a complete, normalized B-spline definition suitable for
|
|
20
|
+
passing into the exact B-spline edge/wire APIs: cubic degree, control
|
|
21
|
+
points, and a full clamped knot vector.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Component
|
|
2
|
+
|
|
3
|
+
## Class Definition
|
|
4
|
+
|
|
5
|
+
```python
|
|
6
|
+
class Component(component_id: str, item: AssemblyItem, placement: Placement, name: Optional[str] = None)
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
*Source: product.py*
|
|
10
|
+
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- top-level: `from simplecadapi import Component`
|
|
14
|
+
|
|
15
|
+
## Description
|
|
16
|
+
|
|
17
|
+
Assembly-local instance of a Part or subassembly.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Connector
|
|
2
|
+
|
|
3
|
+
## Class Definition
|
|
4
|
+
|
|
5
|
+
```python
|
|
6
|
+
class Connector(connector_id: str, geometry_ref: GeometryRef, name: Optional[str] = None)
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
*Source: product.py*
|
|
10
|
+
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- top-level: `from simplecadapi import Connector`
|
|
14
|
+
|
|
15
|
+
## Description
|
|
16
|
+
|
|
17
|
+
Semantic datum frame anchored to a geometry sub-element (Face/Edge/Vertex).
|
|
18
|
+
|
|
19
|
+
The connector wraps a QL-selected sub-shape. The Placement is derived
|
|
20
|
+
from the geometry at solve/translate time, not stored directly.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# ConnectorRef
|
|
2
|
+
|
|
3
|
+
## Class Definition
|
|
4
|
+
|
|
5
|
+
```python
|
|
6
|
+
class ConnectorRef(component_id: str, connector_id: str)
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
*Source: product.py*
|
|
10
|
+
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- top-level: `from simplecadapi import ConnectorRef`
|
|
14
|
+
|
|
15
|
+
## Description
|
|
16
|
+
|
|
17
|
+
Reference to a connector through a component instance.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Const
|
|
2
|
+
|
|
3
|
+
## Class Definition
|
|
4
|
+
|
|
5
|
+
```python
|
|
6
|
+
class Const(value: float, expr_id: str = field(default_factory=lambda : _make_expr_id('const')))
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
*Source: expr.py*
|
|
10
|
+
|
|
11
|
+
## Import Surface
|
|
12
|
+
|
|
13
|
+
- top-level: `from simplecadapi import Const`
|
|
14
|
+
|
|
15
|
+
## Description
|
|
16
|
+
|
|
17
|
+
Immutable constant node used in the v2 expression graph.
|