ScadPy 0.2.13__tar.gz → 0.4.2__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.
- scadpy-0.4.2/.claude/jedi_query.py +48 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/PKG-INFO +20 -6
- {scadpy-0.2.13 → scadpy-0.4.2}/README.md +18 -5
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/_static/badges/coverage.svg +1 -1
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/_static/badges/interrogate.svg +3 -3
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/index.rst +17 -2
- scadpy-0.4.2/docs/scripts/build_skills.py +411 -0
- scadpy-0.4.2/docs/snapshots/d2__chamfer_shape_all__dark.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__chamfer_shape_all__light.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__chamfer_shape_convex_only__dark.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__chamfer_shape_convex_only__light.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__chamfer_shape_sharp_convex__dark.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__chamfer_shape_sharp_convex__light.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__exclude_solid__dark.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__exclude_solid__light.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__fillet_shape_all__dark.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__fillet_shape_all__light.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__fillet_shape_convex_only__dark.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__fillet_shape_convex_only__light.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__fillet_shape_sharp_convex__dark.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__fillet_shape_sharp_convex__light.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__index_bearing__dark.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__index_bearing__light.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__index_dice__dark.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__index_dice__light.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__index_extruded_plate__dark.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__index_extruded_plate__light.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__index_plate__dark.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__index_plate__light.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__index_storage_box__dark.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__index_storage_box__light.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__linear_pattern_shape_method_2d__dark.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__linear_pattern_shape_method_2d__light.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__linear_pattern_shape_method__dark.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__linear_pattern_shape_method__light.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__linear_pattern_solid_method_2d__dark.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__linear_pattern_solid_method_2d__light.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__linear_pattern_solid_method_3d__dark.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__linear_pattern_solid_method_3d__light.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__linear_pattern_solid_method__dark.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__linear_pattern_solid_method__light.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__radial_pattern_shape_method__dark.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__radial_pattern_shape_method__light.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__radial_pattern_solid_method__dark.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__radial_pattern_solid_method__light.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__subtract_solid__dark.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__subtract_solid__light.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__text_example__dark.md5 +1 -0
- scadpy-0.4.2/docs/snapshots/d2__text_example__light.md5 +1 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/pyproject.toml +3 -3
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/color/utils/get_random_color.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/combinations/concat_assemblies.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/combinations/exclude_assemblies.py +7 -25
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/combinations/intersect_assemblies.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/combinations/subtract_assemblies.py +10 -50
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/combinations/unify_assemblies.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/topologies/directed_edge/get_assembly_directed_edge_directions.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/topologies/directed_edge/get_assembly_directed_edge_to_edge.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/topologies/directed_edge/get_assembly_directed_edge_to_vertex.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/topologies/edge/get_assembly_edge_lengths.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/topologies/edge/get_assembly_edge_midpoints.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/topologies/edge/get_assembly_edge_normals.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/topologies/face_vertex/get_assembly_face_vertex_angles.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/topologies/face_vertex/get_assembly_face_vertex_normals.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/topologies/face_vertex/get_assembly_face_vertex_to_incoming_directed_edge.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/topologies/face_vertex/get_assembly_face_vertex_to_outgoing_directed_edge.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/topologies/part/get_assembly_part_colors.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/transformations/__init__.py +4 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/transformations/color_assembly.py +0 -2
- scadpy-0.4.2/scadpy/core/assembly/transformations/linear_pattern_assembly.py +68 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/transformations/mirror_vertex_coordinates.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/transformations/pull_vertex_coordinates.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/transformations/push_vertex_coordinates.py +0 -2
- scadpy-0.4.2/scadpy/core/assembly/transformations/radial_pattern_assembly.py +37 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/transformations/resize_vertex_coordinates.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/transformations/rotate_vertex_coordinates.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/transformations/scale_vertex_coordinates.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/transformations/translate_vertex_coordinates.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/utils/lookup_pairs.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/utils/resolve_topology_filter.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/utils/transform_filtered_parts.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/component/exporters/map_component_to_html_file.py +5 -4
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/component/exporters/map_component_to_screen.py +12 -7
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/component/features/get_component_bounds.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/component/utils/blend_component_colors.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/component/utils/get_intersecting_component_index_groups.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/part/combinations/concat_parts.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/part/combinations/intersect_parts.py +36 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/part/combinations/subtract_parts.py +12 -10
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/part/combinations/unify_parts.py +36 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/combinations/are_shape_parts_intersecting.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/combinations/concat_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/combinations/exclude_shape.py +2 -11
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/combinations/intersect_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/combinations/intersect_shape_parts.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/combinations/subtract_shape.py +2 -16
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/combinations/subtract_shape_parts.py +12 -13
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/combinations/unify_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/combinations/unify_shape_parts.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/exporters/map_shape_to_dxf.py +1 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/exporters/map_shape_to_dxf_file.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/exporters/map_shape_to_html.py +8 -6
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/exporters/map_shape_to_html_file.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/exporters/map_shape_to_screen.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/exporters/map_shape_to_svg.py +1 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/exporters/map_shape_to_svg_file.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/features/__init__.py +4 -0
- scadpy-0.4.2/scadpy/d2/shape/features/get_shape_bounding_box.py +37 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/features/get_shape_bounds.py +0 -2
- scadpy-0.4.2/scadpy/d2/shape/features/get_shape_centroid.py +44 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/features/get_shape_part_bounds.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/features/is_shape_empty.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/importers/map_dxf_to_shape.py +1 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/importers/map_geometries_to_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/importers/map_geometry_to_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/importers/map_parts_to_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/importers/map_svg_to_shape.py +1 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/primitives/circle.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/primitives/polygon.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/primitives/rectangle.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/primitives/square.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/primitives/text.py +11 -5
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/directed_edge/get_shape_directed_edge_directions.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/directed_edge/get_shape_directed_edge_to_edge.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/directed_edge/get_shape_directed_edge_to_vertex.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/edge/get_shape_edge_lengths.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/edge/get_shape_edge_midpoints.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/edge/get_shape_edge_normals.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/edge/get_shape_edge_to_vertex.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/ring/get_shape_ring_to_part.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/ring/get_shape_ring_types.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/vertex/are_shape_vertices_convex.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/vertex/get_shape_part_vertex_coordinates.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/vertex/get_shape_vertex_angles.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/vertex/get_shape_vertex_coordinates.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/vertex/get_shape_vertex_normals.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/vertex/get_shape_vertex_to_incoming_directed_edge.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/vertex/get_shape_vertex_to_neighbor_vertex.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/vertex/get_shape_vertex_to_outgoing_directed_edge.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/vertex/get_shape_vertex_to_part.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/vertex/get_shape_vertex_to_ring.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/transformations/__init__.py +4 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/transformations/chamfer_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/transformations/color_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/transformations/convexify_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/transformations/fill_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/transformations/fillet_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/transformations/grow_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/transformations/linear_cut_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/transformations/linear_extrude_shape.py +0 -2
- scadpy-0.4.2/scadpy/d2/shape/transformations/linear_pattern_shape.py +46 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/transformations/linear_slice_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/transformations/mirror_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/transformations/pull_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/transformations/push_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/transformations/radial_extrude_shape.py +2 -3
- scadpy-0.4.2/scadpy/d2/shape/transformations/radial_pattern_shape.py +43 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/transformations/radial_slice_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/transformations/recoordinate_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/transformations/resize_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/transformations/rotate_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/transformations/scale_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/transformations/shrink_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/transformations/translate_shape.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/types/shape.py +100 -5
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/types/utils/shapely_base_geometry_to_shapely_polygons.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/utils/shapely_base_geometry_to_shapely_polygons.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/utils/resolve_vector_2d.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/combinations/are_solid_parts_intersecting.py +11 -11
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/combinations/concat_solid.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/combinations/exclude_solid.py +2 -11
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/combinations/intersect_solid.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/combinations/intersect_solid_parts.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/combinations/subtract_solid.py +2 -16
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/combinations/subtract_solid_parts.py +9 -11
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/combinations/unify_solid.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/combinations/unify_solid_parts.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/exporters/map_solid_to_html.py +6 -4
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/exporters/map_solid_to_html_file.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/exporters/map_solid_to_screen.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/exporters/map_solid_to_stl_file.py +1 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/features/__init__.py +4 -0
- scadpy-0.4.2/scadpy/d3/solid/features/get_solid_bounding_box.py +35 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/features/get_solid_bounds.py +0 -2
- scadpy-0.4.2/scadpy/d3/solid/features/get_solid_centroid.py +41 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/features/get_solid_part_bounds.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/features/get_solid_part_colors.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/features/is_solid_empty.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/importers/map_geometries_to_solid.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/importers/map_geometry_to_solid.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/importers/map_parts_to_solid.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/importers/map_stl_to_solid.py +1 -4
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/primitives/cone.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/primitives/cuboid.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/primitives/cylinder.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/primitives/polyhedron.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/primitives/sphere.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/topologies/triangle/get_solid_triangle_to_vertex.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/topologies/vertex/get_solid_vertex_coordinates.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/topologies/vertex/get_solid_vertex_to_part.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/transformations/__init__.py +4 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/transformations/color_solid.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/transformations/convexify_solid.py +0 -2
- scadpy-0.4.2/scadpy/d3/solid/transformations/linear_pattern_solid.py +46 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/transformations/mirror_solid.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/transformations/pull_solid.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/transformations/push_solid.py +0 -2
- scadpy-0.4.2/scadpy/d3/solid/transformations/radial_pattern_solid.py +46 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/transformations/recoordinate_solid.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/transformations/resize_solid.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/transformations/rotate_solid.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/transformations/scale_solid.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/transformations/translate_solid.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/types/solid.py +117 -13
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/utils/resolve_vector_3d.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/utils/available_fonts.py +4 -3
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/utils/resolve_vector.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/utils/x.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/utils/y.py +0 -2
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/utils/z.py +0 -2
- scadpy-0.2.13/docs/snapshots/d2__chamfer_shape_all__dark.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__chamfer_shape_all__light.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__chamfer_shape_convex_only__dark.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__chamfer_shape_convex_only__light.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__chamfer_shape_sharp_convex__dark.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__chamfer_shape_sharp_convex__light.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__exclude_solid__dark.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__exclude_solid__light.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__fillet_shape_all__dark.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__fillet_shape_all__light.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__fillet_shape_convex_only__dark.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__fillet_shape_convex_only__light.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__fillet_shape_sharp_convex__dark.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__fillet_shape_sharp_convex__light.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__index_bearing__dark.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__index_bearing__light.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__index_dice__dark.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__index_dice__light.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__index_extruded_plate__dark.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__index_extruded_plate__light.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__index_plate__dark.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__index_plate__light.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__index_storage_box__dark.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__index_storage_box__light.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__subtract_solid__dark.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__subtract_solid__light.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__text_example__dark.md5 +0 -1
- scadpy-0.2.13/docs/snapshots/d2__text_example__light.md5 +0 -1
- {scadpy-0.2.13 → scadpy-0.4.2}/.github/workflows/ci.yml +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/.github/workflows/release.yml +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/.gitignore +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/LICENSE.md +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/Makefile +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/_static/css/custom.css +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/_static/examples/bearing_dark.png +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/_static/examples/bearing_light.png +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/_static/examples/dice_dark.png +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/_static/examples/dice_light.png +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/_static/examples/extruded_plate_dark.png +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/_static/examples/extruded_plate_light.png +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/_static/examples/plate_dark.png +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/_static/examples/plate_light.png +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/_static/examples/storage_box_dark.png +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/_static/examples/storage_box_light.png +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/_static/logo.ico +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/_static/logo.png +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/conf.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/core/assembly/combinations.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/core/assembly/topologies.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/core/assembly/transformations.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/core/assembly/types.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/core/assembly/utils.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/core/assembly.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/core/component/exporters.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/core/component/features.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/core/component/utils.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/core/component.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/core/part/combinations.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/core/part.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/core.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/d2/shape/combinations.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/d2/shape/exporters.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/d2/shape/features.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/d2/shape/importers.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/d2/shape/primitives.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/d2/shape/topologies.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/d2/shape/transformations.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/d2/shape/types.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/d2/shape.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/d2.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/d3/solid/combinations.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/d3/solid/exporters.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/d3/solid/features.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/d3/solid/importers.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/d3/solid/primitives.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/d3/solid/topologies.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/d3/solid/transformations.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/d3/solid/types.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/d3/solid.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/scadpy/d3.rst +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__chamfer_shape_clamp_proportional__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__chamfer_shape_clamp_proportional__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__chamfer_shape_concave_asymmetric__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__chamfer_shape_concave_asymmetric__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__color_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__color_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__color_solid__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__color_solid__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__concat_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__concat_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__concat_solid__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__concat_solid__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__cone__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__cone__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__convexify_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__convexify_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__convexify_shape_partial__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__convexify_shape_partial__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__convexify_solid__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__convexify_solid__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__cube__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__cube__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__cuboid__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__cuboid__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__cylinder__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__cylinder__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__exclude_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__exclude_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__fill_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__fill_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__fill_shape_partial__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__fill_shape_partial__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__fillet_shape_clamp_proportional__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__fillet_shape_clamp_proportional__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__fillet_shape_concave_asymmetric__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__fillet_shape_concave_asymmetric__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__grow_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__grow_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__grow_shape_partial__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__grow_shape_partial__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__grow_shape_shrink__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__grow_shape_shrink__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__hexagonal_cone__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__hexagonal_cone__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__hexagonal_cylinder__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__hexagonal_cylinder__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__index_2d__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__index_2d__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__index_3d__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__index_3d__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__intersect_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__intersect_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__intersect_shape_parts_example__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__intersect_shape_parts_example__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__intersect_solid__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__intersect_solid__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__intersect_solid_parts_example__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__intersect_solid_parts_example__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__linear_cut_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__linear_cut_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__linear_cut_shape_diagonal__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__linear_cut_shape_diagonal__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__linear_extrude_shape_square__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__linear_extrude_shape_square__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__linear_extrude_shape_tube__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__linear_extrude_shape_tube__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__linear_slice_shape_diagonal__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__linear_slice_shape_diagonal__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__linear_slice_shape_horizontal__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__linear_slice_shape_horizontal__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__linear_slice_shape_partial__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__linear_slice_shape_partial__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__linear_slice_shape_pivot__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__linear_slice_shape_pivot__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__low_resolution_sphere__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__low_resolution_sphere__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__map_dxf_to_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__map_dxf_to_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__map_geometries_to_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__map_geometries_to_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__map_geometries_to_solid__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__map_geometries_to_solid__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__map_geometry_to_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__map_geometry_to_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__map_geometry_to_solid__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__map_geometry_to_solid__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__map_parts_to_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__map_parts_to_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__map_parts_to_solid__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__map_parts_to_solid__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__map_svg_to_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__map_svg_to_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__mirror_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__mirror_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__mirror_solid__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__mirror_solid__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__polyhedron__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__polyhedron__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__pull_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__pull_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__pull_solid__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__pull_solid__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__push_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__push_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__push_solid__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__push_solid__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__radial_extrude_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__radial_extrude_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__radial_extrude_shape_partial__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__radial_extrude_shape_partial__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__radial_slice_shape_partial__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__radial_slice_shape_partial__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__radial_slice_shape_pivot__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__radial_slice_shape_pivot__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__radial_slice_shape_quarter__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__radial_slice_shape_quarter__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__radial_slice_shape_three_quarter__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__radial_slice_shape_three_quarter__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__recoordinate_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__recoordinate_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__recoordinate_solid__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__recoordinate_solid__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__resize_shape_auto__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__resize_shape_auto__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__resize_shape_exact__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__resize_shape_exact__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__resize_shape_freeze__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__resize_shape_freeze__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__resize_solid_auto__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__resize_solid_auto__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__resize_solid_exact__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__resize_solid_exact__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__resize_solid_freeze__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__resize_solid_freeze__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__rotate_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__rotate_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__rotate_solid__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__rotate_solid__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__scale_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__scale_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__scale_solid__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__scale_solid__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__shrink_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__shrink_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__shrink_shape_negative__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__shrink_shape_negative__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__shrink_shape_partial__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__shrink_shape_partial__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__sphere__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__sphere__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__subtract_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__subtract_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__subtract_shape_parts_example__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__subtract_shape_parts_example__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__subtract_solid_parts_example__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__subtract_solid_parts_example__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__translate_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__translate_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__translate_solid__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__translate_solid__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__unify_shape__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__unify_shape__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__unify_shape_parts_example__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__unify_shape_parts_example__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__unify_solid__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__unify_solid__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__unify_solid_parts_example__dark.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/docs/snapshots/d2__unify_solid_parts_example__light.md5 +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/project_bundle.json +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/color/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/color/constants/BEIGE.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/color/constants/BLACK.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/color/constants/BLUE.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/color/constants/BROWN.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/color/constants/DARK_GRAY.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/color/constants/DEFAULT_COLOR.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/color/constants/DEFAULT_OPACITY.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/color/constants/GRAY.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/color/constants/GREEN.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/color/constants/ORANGE.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/color/constants/RED.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/color/constants/WHITE.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/color/constants/YELLOW.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/color/constants/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/color/type/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/color/type/color.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/color/utils/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/combinations/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/topologies/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/topologies/directed_edge/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/topologies/edge/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/topologies/face_vertex/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/topologies/part/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/topologies/vertex/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/topologies/vertex/get_assembly_vertex_coordinates.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/topologies/vertex/get_assembly_vertex_to_part.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/types/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/types/assembly.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/types/topology_filter.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/assembly/utils/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/component/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/component/exporters/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/component/features/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/component/utils/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/part/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/part/combinations/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/part/types/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/part/types/part.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/part/utils/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/core/part/utils/blend_part_colors.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/combinations/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/exporters/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/importers/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/primitives/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/directed_edge/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/edge/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/ring/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/topologies/vertex/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/types/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/types/utils/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/shape/utils/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d2/utils/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/combinations/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/exporters/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/importers/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/primitives/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/topologies/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/topologies/triangle/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/topologies/vertex/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/solid/types/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/d3/utils/__init__.py +0 -0
- {scadpy-0.2.13 → scadpy-0.4.2}/scadpy/utils/__init__.py +0 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Jedi-based code intelligence queries for Claude."""
|
|
3
|
+
import sys
|
|
4
|
+
import json
|
|
5
|
+
import jedi
|
|
6
|
+
|
|
7
|
+
def find_references(file_path, line, col):
|
|
8
|
+
script = jedi.Script(path=file_path)
|
|
9
|
+
refs = script.get_references(line, col)
|
|
10
|
+
return [{"file": str(r.module_path), "line": r.line, "col": r.column, "name": r.name} for r in refs]
|
|
11
|
+
|
|
12
|
+
def goto_definition(file_path, line, col):
|
|
13
|
+
script = jedi.Script(path=file_path)
|
|
14
|
+
defs = script.goto(line, col)
|
|
15
|
+
return [{"file": str(d.module_path), "line": d.line, "col": d.column, "name": d.name} for d in defs]
|
|
16
|
+
|
|
17
|
+
def find_usages_of_name(project_path, name):
|
|
18
|
+
project = jedi.Project(project_path)
|
|
19
|
+
results = []
|
|
20
|
+
import os
|
|
21
|
+
for root, _, files in os.walk(project_path):
|
|
22
|
+
for f in files:
|
|
23
|
+
if f.endswith(".py") and ".venv" not in root:
|
|
24
|
+
path = os.path.join(root, f)
|
|
25
|
+
try:
|
|
26
|
+
script = jedi.Script(path=path, project=project)
|
|
27
|
+
with open(path) as fh:
|
|
28
|
+
lines = fh.readlines()
|
|
29
|
+
for i, line in enumerate(lines, 1):
|
|
30
|
+
if name in line:
|
|
31
|
+
col = line.index(name)
|
|
32
|
+
refs = script.get_references(i, col)
|
|
33
|
+
for r in refs:
|
|
34
|
+
if r.name == name:
|
|
35
|
+
results.append({"file": path, "line": i, "col": col})
|
|
36
|
+
break
|
|
37
|
+
except Exception:
|
|
38
|
+
pass
|
|
39
|
+
return results
|
|
40
|
+
|
|
41
|
+
if __name__ == "__main__":
|
|
42
|
+
cmd = sys.argv[1]
|
|
43
|
+
if cmd == "refs":
|
|
44
|
+
print(json.dumps(find_references(sys.argv[2], int(sys.argv[3]), int(sys.argv[4])), indent=2))
|
|
45
|
+
elif cmd == "goto":
|
|
46
|
+
print(json.dumps(goto_definition(sys.argv[2], int(sys.argv[3]), int(sys.argv[4])), indent=2))
|
|
47
|
+
elif cmd == "usages":
|
|
48
|
+
print(json.dumps(find_usages_of_name(sys.argv[2], sys.argv[3]), indent=2))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ScadPy
|
|
3
|
-
Version: 0.2
|
|
3
|
+
Version: 0.4.2
|
|
4
4
|
Summary: Simplified 2D/3D modeling for Python with fluent API and boolean operations
|
|
5
5
|
Author: m-fabregue
|
|
6
6
|
License: # MIT License
|
|
@@ -56,6 +56,7 @@ Requires-Dist: ipython~=8.30
|
|
|
56
56
|
Requires-Dist: manifold3d==3.2.1
|
|
57
57
|
Requires-Dist: matplotlib==3.10.6
|
|
58
58
|
Requires-Dist: pyside6~=6.10
|
|
59
|
+
Requires-Dist: python-fcl~=0.7
|
|
59
60
|
Requires-Dist: triangle==20250106
|
|
60
61
|
Requires-Dist: trimesh[easy]~=4.10
|
|
61
62
|
Requires-Dist: typeguard~=4.4
|
|
@@ -139,7 +140,6 @@ extruded_plate.to_screen()
|
|
|
139
140
|
```python
|
|
140
141
|
# 3D — parametric ball bearing
|
|
141
142
|
from scadpy import circle, rectangle, sphere, x, y, GRAY, ORANGE
|
|
142
|
-
import numpy as np
|
|
143
143
|
|
|
144
144
|
BALL_RADIUS = 3
|
|
145
145
|
RACE_RADIUS = 15
|
|
@@ -151,10 +151,8 @@ RACE_THICKNESS = 10
|
|
|
151
151
|
groove = circle(BALL_RADIUS + CLEARANCE) | rectangle([BALL_RADIUS, RING_HEIGHT])
|
|
152
152
|
race = rectangle([RACE_THICKNESS, RING_HEIGHT]) - groove
|
|
153
153
|
bearing = race.radial_extrude(axis=y(), pivot=x(RACE_RADIUS)).color(GRAY)
|
|
154
|
-
|
|
155
|
-
ball =
|
|
156
|
-
for angle in np.linspace(0, 360, NB_BALLS, endpoint=False):
|
|
157
|
-
bearing += ball.rotate(angle, axis=y(), pivot=x(RACE_RADIUS))
|
|
154
|
+
ball = sphere(BALL_RADIUS).color(ORANGE)
|
|
155
|
+
bearing += ball.radial_pattern(count=NB_BALLS, axis=y(), pivot=x(RACE_RADIUS))
|
|
158
156
|
|
|
159
157
|
bearing.to_screen()
|
|
160
158
|
```
|
|
@@ -260,10 +258,12 @@ s.fill() # part_filter=None
|
|
|
260
258
|
s.fillet(size=0.8) # vertex_filter=None, segment_count=32, epsilon=1e-8
|
|
261
259
|
s.grow(distance=0.5) # part_filter=None
|
|
262
260
|
s.linear_cut(axis=x()) # pivot=0
|
|
261
|
+
s.linear_pattern(counts=4, steps=x(3)) # counts=[nx, ny], steps=[sx, sy]
|
|
263
262
|
s.linear_slice(thickness=2, direction=x()) # pivot=0, part_filter=None
|
|
264
263
|
s.mirror(normal=[1, 0]) # pivot=0
|
|
265
264
|
s.pull(distance=1.0) # pivot=0, vertex_filter=None
|
|
266
265
|
s.push(distance=1.0) # pivot=0, vertex_filter=None
|
|
266
|
+
s.radial_pattern(count=6) # angle=360, pivot=0
|
|
267
267
|
s.radial_slice(start=0, end=180) # pivot=0, part_filter=None
|
|
268
268
|
s.resize(size=[6, None]) # auto=False, pivot=None, vertex_filter=None
|
|
269
269
|
s.rotate(angle=30) # pivot=0, vertex_filter=None
|
|
@@ -271,6 +271,12 @@ s.scale(scale=[2, 0.5]) # pivot=0, vertex_filter=None
|
|
|
271
271
|
s.shrink(distance=0.5) # part_filter=None
|
|
272
272
|
s.translate(translation=[2, 1]) # vertex_filter=None
|
|
273
273
|
|
|
274
|
+
# features
|
|
275
|
+
s.bounds # [min_x, min_y, max_x, max_y]
|
|
276
|
+
s.bounding_box # → Shape (rectangle)
|
|
277
|
+
s.centroid # [cx, cy] — geometric centroid
|
|
278
|
+
s.is_empty # bool
|
|
279
|
+
|
|
274
280
|
# topology — coordinates & attributes
|
|
275
281
|
s.are_vertices_convex # (n_vertices,) — convexity mask
|
|
276
282
|
s.directed_edge_directions # (2*n_edges, 2)
|
|
@@ -328,14 +334,22 @@ a + b # concat (no merge)
|
|
|
328
334
|
# transforms
|
|
329
335
|
a.color(color=RED)
|
|
330
336
|
a.convexify() # part_filter=None
|
|
337
|
+
a.linear_pattern(counts=4, steps=x(3)) # counts=[nx, ny, nz], steps=[sx, sy, sz]
|
|
331
338
|
a.mirror(normal=[1, 0, 0]) # pivot=0
|
|
332
339
|
a.pull(distance=1.0) # pivot=0, vertex_filter=None
|
|
333
340
|
a.push(distance=1.0) # pivot=0, vertex_filter=None
|
|
341
|
+
a.radial_pattern(count=6, axis=z()) # angle=360, pivot=0
|
|
334
342
|
a.resize(size=[6, None, None]) # auto=False, pivot=None, vertex_filter=None
|
|
335
343
|
a.rotate(angle=30, axis=z()) # pivot=0, vertex_filter=None
|
|
336
344
|
a.scale(scale=[2, 1, 0.5]) # pivot=0, vertex_filter=None
|
|
337
345
|
a.translate(translation=[1, 0, 0]) # vertex_filter=None
|
|
338
346
|
|
|
347
|
+
# features
|
|
348
|
+
a.bounds # [min_x, min_y, min_z, max_x, max_y, max_z]
|
|
349
|
+
a.bounding_box # → Solid (cuboid)
|
|
350
|
+
a.centroid # [cx, cy, cz] — geometric centroid
|
|
351
|
+
a.is_empty # bool
|
|
352
|
+
|
|
339
353
|
# topology — coordinates & bridges (*_to_*)
|
|
340
354
|
a.triangle_to_vertex # triangle → [v0, v1, v2]
|
|
341
355
|
a.vertex_coordinates # (n_vertices, 3)
|
|
@@ -67,7 +67,6 @@ extruded_plate.to_screen()
|
|
|
67
67
|
```python
|
|
68
68
|
# 3D — parametric ball bearing
|
|
69
69
|
from scadpy import circle, rectangle, sphere, x, y, GRAY, ORANGE
|
|
70
|
-
import numpy as np
|
|
71
70
|
|
|
72
71
|
BALL_RADIUS = 3
|
|
73
72
|
RACE_RADIUS = 15
|
|
@@ -79,10 +78,8 @@ RACE_THICKNESS = 10
|
|
|
79
78
|
groove = circle(BALL_RADIUS + CLEARANCE) | rectangle([BALL_RADIUS, RING_HEIGHT])
|
|
80
79
|
race = rectangle([RACE_THICKNESS, RING_HEIGHT]) - groove
|
|
81
80
|
bearing = race.radial_extrude(axis=y(), pivot=x(RACE_RADIUS)).color(GRAY)
|
|
82
|
-
|
|
83
|
-
ball =
|
|
84
|
-
for angle in np.linspace(0, 360, NB_BALLS, endpoint=False):
|
|
85
|
-
bearing += ball.rotate(angle, axis=y(), pivot=x(RACE_RADIUS))
|
|
81
|
+
ball = sphere(BALL_RADIUS).color(ORANGE)
|
|
82
|
+
bearing += ball.radial_pattern(count=NB_BALLS, axis=y(), pivot=x(RACE_RADIUS))
|
|
86
83
|
|
|
87
84
|
bearing.to_screen()
|
|
88
85
|
```
|
|
@@ -188,10 +185,12 @@ s.fill() # part_filter=None
|
|
|
188
185
|
s.fillet(size=0.8) # vertex_filter=None, segment_count=32, epsilon=1e-8
|
|
189
186
|
s.grow(distance=0.5) # part_filter=None
|
|
190
187
|
s.linear_cut(axis=x()) # pivot=0
|
|
188
|
+
s.linear_pattern(counts=4, steps=x(3)) # counts=[nx, ny], steps=[sx, sy]
|
|
191
189
|
s.linear_slice(thickness=2, direction=x()) # pivot=0, part_filter=None
|
|
192
190
|
s.mirror(normal=[1, 0]) # pivot=0
|
|
193
191
|
s.pull(distance=1.0) # pivot=0, vertex_filter=None
|
|
194
192
|
s.push(distance=1.0) # pivot=0, vertex_filter=None
|
|
193
|
+
s.radial_pattern(count=6) # angle=360, pivot=0
|
|
195
194
|
s.radial_slice(start=0, end=180) # pivot=0, part_filter=None
|
|
196
195
|
s.resize(size=[6, None]) # auto=False, pivot=None, vertex_filter=None
|
|
197
196
|
s.rotate(angle=30) # pivot=0, vertex_filter=None
|
|
@@ -199,6 +198,12 @@ s.scale(scale=[2, 0.5]) # pivot=0, vertex_filter=None
|
|
|
199
198
|
s.shrink(distance=0.5) # part_filter=None
|
|
200
199
|
s.translate(translation=[2, 1]) # vertex_filter=None
|
|
201
200
|
|
|
201
|
+
# features
|
|
202
|
+
s.bounds # [min_x, min_y, max_x, max_y]
|
|
203
|
+
s.bounding_box # → Shape (rectangle)
|
|
204
|
+
s.centroid # [cx, cy] — geometric centroid
|
|
205
|
+
s.is_empty # bool
|
|
206
|
+
|
|
202
207
|
# topology — coordinates & attributes
|
|
203
208
|
s.are_vertices_convex # (n_vertices,) — convexity mask
|
|
204
209
|
s.directed_edge_directions # (2*n_edges, 2)
|
|
@@ -256,14 +261,22 @@ a + b # concat (no merge)
|
|
|
256
261
|
# transforms
|
|
257
262
|
a.color(color=RED)
|
|
258
263
|
a.convexify() # part_filter=None
|
|
264
|
+
a.linear_pattern(counts=4, steps=x(3)) # counts=[nx, ny, nz], steps=[sx, sy, sz]
|
|
259
265
|
a.mirror(normal=[1, 0, 0]) # pivot=0
|
|
260
266
|
a.pull(distance=1.0) # pivot=0, vertex_filter=None
|
|
261
267
|
a.push(distance=1.0) # pivot=0, vertex_filter=None
|
|
268
|
+
a.radial_pattern(count=6, axis=z()) # angle=360, pivot=0
|
|
262
269
|
a.resize(size=[6, None, None]) # auto=False, pivot=None, vertex_filter=None
|
|
263
270
|
a.rotate(angle=30, axis=z()) # pivot=0, vertex_filter=None
|
|
264
271
|
a.scale(scale=[2, 1, 0.5]) # pivot=0, vertex_filter=None
|
|
265
272
|
a.translate(translation=[1, 0, 0]) # vertex_filter=None
|
|
266
273
|
|
|
274
|
+
# features
|
|
275
|
+
a.bounds # [min_x, min_y, min_z, max_x, max_y, max_z]
|
|
276
|
+
a.bounding_box # → Solid (cuboid)
|
|
277
|
+
a.centroid # [cx, cy, cz] — geometric centroid
|
|
278
|
+
a.is_empty # bool
|
|
279
|
+
|
|
267
280
|
# topology — coordinates & bridges (*_to_*)
|
|
268
281
|
a.triangle_to_vertex # triangle → [v0, v1, v2]
|
|
269
282
|
a.vertex_coordinates # (n_vertices, 3)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="114" height="20" role="img" aria-label="coverage:
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="114" height="20" role="img" aria-label="coverage: 91.60%"><title>coverage: 91.60%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="114" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="61" height="20" fill="#555"/><rect x="61" width="53" height="20" fill="#4c1"/><rect width="114" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="315" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="510">coverage</text><text x="315" y="140" transform="scale(.1)" fill="#fff" textLength="510">coverage</text><text aria-hidden="true" x="865" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">91.60%</text><text x="865" y="140" transform="scale(.1)" fill="#fff" textLength="430">91.60%</text></g></svg>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<svg width="140" height="20" viewBox="0 0 140 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
|
2
|
-
<title>interrogate:
|
|
2
|
+
<title>interrogate: 92.2%</title>
|
|
3
3
|
<g transform="matrix(1,0,0,1,22,0)">
|
|
4
4
|
<g id="backgrounds" transform="matrix(1.32789,0,0,1,-22.3892,0)">
|
|
5
5
|
<rect x="0" y="0" width="71" height="20" style="fill:rgb(85,85,85);"/>
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110">
|
|
13
13
|
<text x="590" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="610">interrogate</text>
|
|
14
14
|
<text x="590" y="140" transform="scale(.1)" textLength="610">interrogate</text>
|
|
15
|
-
<text x="1160" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="370" data-interrogate="result">
|
|
16
|
-
<text x="1160" y="140" transform="scale(.1)" textLength="370" data-interrogate="result">
|
|
15
|
+
<text x="1160" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="370" data-interrogate="result">92.2%</text>
|
|
16
|
+
<text x="1160" y="140" transform="scale(.1)" textLength="370" data-interrogate="result">92.2%</text>
|
|
17
17
|
</g>
|
|
18
18
|
<g id="logo-shadow" serif:id="logo shadow" transform="matrix(0.854876,0,0,0.854876,-6.73514,1.732)">
|
|
19
19
|
<g transform="matrix(0.299012,0,0,0.299012,9.70229,-6.68582)">
|
|
@@ -94,8 +94,7 @@ Quick examples
|
|
|
94
94
|
>>> bearing = race.radial_extrude(axis=y(), pivot=x(RACE_RADIUS)).color(GRAY)
|
|
95
95
|
|
|
96
96
|
>>> ball = sphere(BALL_RADIUS).color(ORANGE)
|
|
97
|
-
>>>
|
|
98
|
-
... bearing += ball.rotate(angle, axis=y(), pivot=x(RACE_RADIUS))
|
|
97
|
+
>>> bearing += ball.radial_pattern(count=NB_BALLS, axis=y(), pivot=x(RACE_RADIUS))
|
|
99
98
|
|
|
100
99
|
>>> bearing.to_screen() # doctest: +SKIP
|
|
101
100
|
|
|
@@ -200,10 +199,12 @@ Cheat sheet
|
|
|
200
199
|
s.fillet(size=0.8) # vertex_filter=None, segment_count=32, epsilon=1e-8
|
|
201
200
|
s.grow(distance=0.5) # part_filter=None
|
|
202
201
|
s.linear_cut(axis=x()) # pivot=0
|
|
202
|
+
s.linear_pattern(counts=4, steps=x(3)) # counts=[nx, ny], steps=[sx, sy]
|
|
203
203
|
s.linear_slice(thickness=2, direction=x()) # pivot=0, part_filter=None
|
|
204
204
|
s.mirror(normal=[1, 0]) # pivot=0
|
|
205
205
|
s.pull(distance=1.0) # pivot=0, vertex_filter=None
|
|
206
206
|
s.push(distance=1.0) # pivot=0, vertex_filter=None
|
|
207
|
+
s.radial_pattern(count=6) # angle=360, pivot=0
|
|
207
208
|
s.radial_slice(start=0, end=180) # pivot=0, part_filter=None
|
|
208
209
|
s.resize(size=[6, None]) # auto=False, pivot=None, vertex_filter=None
|
|
209
210
|
s.rotate(angle=30) # pivot=0, vertex_filter=None
|
|
@@ -211,6 +212,12 @@ Cheat sheet
|
|
|
211
212
|
s.shrink(distance=0.5) # part_filter=None
|
|
212
213
|
s.translate(translation=[2, 1]) # vertex_filter=None
|
|
213
214
|
|
|
215
|
+
# features
|
|
216
|
+
s.bounds # [min_x, min_y, max_x, max_y]
|
|
217
|
+
s.bounding_box # → Shape (rectangle)
|
|
218
|
+
s.centroid # [cx, cy] — geometric centroid
|
|
219
|
+
s.is_empty # bool
|
|
220
|
+
|
|
214
221
|
# topology — coordinates & attributes
|
|
215
222
|
s.are_vertices_convex # (n_vertices,) — convexity mask
|
|
216
223
|
s.directed_edge_directions # (2*n_edges, 2)
|
|
@@ -268,14 +275,22 @@ Cheat sheet
|
|
|
268
275
|
# transforms
|
|
269
276
|
a.color(color=RED)
|
|
270
277
|
a.convexify() # part_filter=None
|
|
278
|
+
a.linear_pattern(counts=4, steps=x(3)) # counts=[nx, ny, nz], steps=[sx, sy, sz]
|
|
271
279
|
a.mirror(normal=[1, 0, 0]) # pivot=0
|
|
272
280
|
a.pull(distance=1.0) # pivot=0, vertex_filter=None
|
|
273
281
|
a.push(distance=1.0) # pivot=0, vertex_filter=None
|
|
282
|
+
a.radial_pattern(count=6, axis=z()) # angle=360, pivot=0
|
|
274
283
|
a.resize(size=[6, None, None]) # auto=False, pivot=None, vertex_filter=None
|
|
275
284
|
a.rotate(angle=30, axis=z()) # pivot=0, vertex_filter=None
|
|
276
285
|
a.scale(scale=[2, 1, 0.5]) # pivot=0, vertex_filter=None
|
|
277
286
|
a.translate(translation=[1, 0, 0]) # vertex_filter=None
|
|
278
287
|
|
|
288
|
+
# features
|
|
289
|
+
a.bounds # [min_x, min_y, min_z, max_x, max_y, max_z]
|
|
290
|
+
a.bounding_box # → Solid (cuboid)
|
|
291
|
+
a.centroid # [cx, cy, cz] — geometric centroid
|
|
292
|
+
a.is_empty # bool
|
|
293
|
+
|
|
279
294
|
# topology — coordinates & bridges (*_to_*)
|
|
280
295
|
a.triangle_to_vertex # triangle → [v0, v1, v2]
|
|
281
296
|
a.vertex_coordinates # (n_vertices, 3)
|