ScadPy 0.1.0__py3-none-any.whl
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/__init__.py +5 -0
- scadpy/color/__init__.py +3 -0
- scadpy/color/constants/BEIGE.py +3 -0
- scadpy/color/constants/BLACK.py +3 -0
- scadpy/color/constants/BLUE.py +3 -0
- scadpy/color/constants/BROWN.py +3 -0
- scadpy/color/constants/DARK_GRAY.py +3 -0
- scadpy/color/constants/DEFAULT_COLOR.py +3 -0
- scadpy/color/constants/DEFAULT_OPACITY.py +1 -0
- scadpy/color/constants/GRAY.py +3 -0
- scadpy/color/constants/GREEN.py +3 -0
- scadpy/color/constants/ORANGE.py +3 -0
- scadpy/color/constants/RED.py +3 -0
- scadpy/color/constants/WHITE.py +3 -0
- scadpy/color/constants/YELLOW.py +3 -0
- scadpy/color/constants/__init__.py +29 -0
- scadpy/color/type/__init__.py +3 -0
- scadpy/color/type/color.py +3 -0
- scadpy/color/utils/__init__.py +3 -0
- scadpy/color/utils/get_random_color.py +36 -0
- scadpy/core/__init__.py +3 -0
- scadpy/core/assembly/__init__.py +5 -0
- scadpy/core/assembly/combinations/__init__.py +13 -0
- scadpy/core/assembly/combinations/concat_assemblies.py +50 -0
- scadpy/core/assembly/combinations/exclude_assemblies.py +135 -0
- scadpy/core/assembly/combinations/intersect_assemblies.py +128 -0
- scadpy/core/assembly/combinations/subtract_assemblies.py +151 -0
- scadpy/core/assembly/combinations/unify_assemblies.py +59 -0
- scadpy/core/assembly/topologies/__init__.py +41 -0
- scadpy/core/assembly/topologies/directed_edge/__init__.py +9 -0
- scadpy/core/assembly/topologies/directed_edge/get_assembly_directed_edge_directions.py +70 -0
- scadpy/core/assembly/topologies/directed_edge/get_assembly_directed_edge_to_edge.py +49 -0
- scadpy/core/assembly/topologies/directed_edge/get_assembly_directed_edge_to_vertex.py +54 -0
- scadpy/core/assembly/topologies/edge/__init__.py +9 -0
- scadpy/core/assembly/topologies/edge/get_assembly_edge_lengths.py +46 -0
- scadpy/core/assembly/topologies/edge/get_assembly_edge_midpoints.py +51 -0
- scadpy/core/assembly/topologies/edge/get_assembly_edge_normals.py +67 -0
- scadpy/core/assembly/topologies/face_corner/__init__.py +13 -0
- scadpy/core/assembly/topologies/face_corner/get_assembly_face_corner_angles.py +72 -0
- scadpy/core/assembly/topologies/face_corner/get_assembly_face_corner_normals.py +103 -0
- scadpy/core/assembly/topologies/face_corner/get_assembly_face_corner_to_incoming_directed_edge.py +65 -0
- scadpy/core/assembly/topologies/face_corner/get_assembly_face_corner_to_outgoing_directed_edge.py +65 -0
- scadpy/core/assembly/topologies/face_corner/get_assembly_face_directed_edge_to_corner.py +79 -0
- scadpy/core/assembly/topologies/part/__init__.py +5 -0
- scadpy/core/assembly/topologies/part/get_assembly_part_colors.py +55 -0
- scadpy/core/assembly/topologies/vertex/__init__.py +7 -0
- scadpy/core/assembly/topologies/vertex/get_assembly_vertex_coordinates.py +70 -0
- scadpy/core/assembly/topologies/vertex/get_assembly_vertex_to_part.py +62 -0
- scadpy/core/assembly/transformations/__init__.py +19 -0
- scadpy/core/assembly/transformations/color_assembly.py +24 -0
- scadpy/core/assembly/transformations/mirror_vertex_coordinates.py +68 -0
- scadpy/core/assembly/transformations/pull_vertex_coordinates.py +64 -0
- scadpy/core/assembly/transformations/push_vertex_coordinates.py +64 -0
- scadpy/core/assembly/transformations/resize_vertex_coordinates.py +121 -0
- scadpy/core/assembly/transformations/rotate_vertex_coordinates.py +73 -0
- scadpy/core/assembly/transformations/scale_vertex_coordinates.py +76 -0
- scadpy/core/assembly/transformations/translate_vertex_coordinates.py +70 -0
- scadpy/core/assembly/types/__init__.py +7 -0
- scadpy/core/assembly/types/assembly.py +14 -0
- scadpy/core/assembly/types/topology_filter.py +6 -0
- scadpy/core/assembly/utils/__init__.py +9 -0
- scadpy/core/assembly/utils/lookup_pairs.py +56 -0
- scadpy/core/assembly/utils/resolve_topology_filter.py +84 -0
- scadpy/core/assembly/utils/transform_filtered_parts.py +55 -0
- scadpy/core/component/__init__.py +3 -0
- scadpy/core/component/exporters/__init__.py +7 -0
- scadpy/core/component/exporters/map_component_to_html_file.py +47 -0
- scadpy/core/component/exporters/map_component_to_screen.py +63 -0
- scadpy/core/component/features/__init__.py +5 -0
- scadpy/core/component/features/get_component_bounds.py +38 -0
- scadpy/core/component/utils/__init__.py +9 -0
- scadpy/core/component/utils/blend_component_colors.py +77 -0
- scadpy/core/component/utils/get_intersecting_component_index_groups.py +108 -0
- scadpy/core/part/__init__.py +3 -0
- scadpy/core/part/combinations/__init__.py +11 -0
- scadpy/core/part/combinations/concat_parts.py +48 -0
- scadpy/core/part/combinations/intersect_parts.py +147 -0
- scadpy/core/part/combinations/subtract_parts.py +94 -0
- scadpy/core/part/combinations/unify_parts.py +143 -0
- scadpy/core/part/types/__init__.py +5 -0
- scadpy/core/part/types/part.py +34 -0
- scadpy/core/part/utils/__init__.py +5 -0
- scadpy/core/part/utils/blend_part_colors.py +32 -0
- scadpy/d2/__init__.py +2 -0
- scadpy/d2/shape/__init__.py +9 -0
- scadpy/d2/shape/combinations/__init__.py +21 -0
- scadpy/d2/shape/combinations/are_shape_parts_intersecting.py +49 -0
- scadpy/d2/shape/combinations/concat_shape.py +48 -0
- scadpy/d2/shape/combinations/exclude_shape.py +71 -0
- scadpy/d2/shape/combinations/intersect_shape.py +64 -0
- scadpy/d2/shape/combinations/intersect_shape_parts.py +71 -0
- scadpy/d2/shape/combinations/subtract_shape.py +72 -0
- scadpy/d2/shape/combinations/subtract_shape_parts.py +66 -0
- scadpy/d2/shape/combinations/unify_shape.py +51 -0
- scadpy/d2/shape/combinations/unify_shape_parts.py +74 -0
- scadpy/d2/shape/exporters/__init__.py +17 -0
- scadpy/d2/shape/exporters/map_shape_to_dxf.py +43 -0
- scadpy/d2/shape/exporters/map_shape_to_dxf_file.py +38 -0
- scadpy/d2/shape/exporters/map_shape_to_html.py +117 -0
- scadpy/d2/shape/exporters/map_shape_to_html_file.py +58 -0
- scadpy/d2/shape/exporters/map_shape_to_screen.py +51 -0
- scadpy/d2/shape/exporters/map_shape_to_svg.py +40 -0
- scadpy/d2/shape/exporters/map_shape_to_svg_file.py +38 -0
- scadpy/d2/shape/features/__init__.py +9 -0
- scadpy/d2/shape/features/get_shape_bounds.py +40 -0
- scadpy/d2/shape/features/get_shape_part_bounds.py +37 -0
- scadpy/d2/shape/features/is_shape_empty.py +38 -0
- scadpy/d2/shape/importers/__init__.py +13 -0
- scadpy/d2/shape/importers/map_dxf_to_shape.py +55 -0
- scadpy/d2/shape/importers/map_geometries_to_shape.py +45 -0
- scadpy/d2/shape/importers/map_geometry_to_shape.py +43 -0
- scadpy/d2/shape/importers/map_parts_to_shape.py +62 -0
- scadpy/d2/shape/importers/map_svg_to_shape.py +55 -0
- scadpy/d2/shape/primitives/__init__.py +6 -0
- scadpy/d2/shape/primitives/circle.py +68 -0
- scadpy/d2/shape/primitives/polygon.py +86 -0
- scadpy/d2/shape/primitives/rectangle.py +85 -0
- scadpy/d2/shape/primitives/square.py +57 -0
- scadpy/d2/shape/topologies/__init__.py +53 -0
- scadpy/d2/shape/topologies/corner/__init__.py +15 -0
- scadpy/d2/shape/topologies/corner/are_shape_corners_convex.py +75 -0
- scadpy/d2/shape/topologies/corner/get_shape_corner_angles.py +58 -0
- scadpy/d2/shape/topologies/corner/get_shape_corner_normals.py +82 -0
- scadpy/d2/shape/topologies/corner/get_shape_corner_to_incoming_directed_edge.py +39 -0
- scadpy/d2/shape/topologies/corner/get_shape_corner_to_outgoing_directed_edge.py +39 -0
- scadpy/d2/shape/topologies/corner/get_shape_corner_to_vertex.py +65 -0
- scadpy/d2/shape/topologies/directed_edge/__init__.py +11 -0
- scadpy/d2/shape/topologies/directed_edge/get_shape_directed_edge_directions.py +44 -0
- scadpy/d2/shape/topologies/directed_edge/get_shape_directed_edge_to_corner.py +41 -0
- scadpy/d2/shape/topologies/directed_edge/get_shape_directed_edge_to_edge.py +51 -0
- scadpy/d2/shape/topologies/directed_edge/get_shape_directed_edge_to_vertex.py +63 -0
- scadpy/d2/shape/topologies/edge/__init__.py +11 -0
- scadpy/d2/shape/topologies/edge/get_shape_edge_lengths.py +43 -0
- scadpy/d2/shape/topologies/edge/get_shape_edge_midpoints.py +46 -0
- scadpy/d2/shape/topologies/edge/get_shape_edge_normals.py +40 -0
- scadpy/d2/shape/topologies/edge/get_shape_edge_to_vertex.py +71 -0
- scadpy/d2/shape/topologies/ring/__init__.py +7 -0
- scadpy/d2/shape/topologies/ring/get_shape_ring_to_part.py +46 -0
- scadpy/d2/shape/topologies/ring/get_shape_ring_types.py +46 -0
- scadpy/d2/shape/topologies/vertex/__init__.py +11 -0
- scadpy/d2/shape/topologies/vertex/get_shape_part_vertex_coordinates.py +62 -0
- scadpy/d2/shape/topologies/vertex/get_shape_vertex_coordinates.py +44 -0
- scadpy/d2/shape/topologies/vertex/get_shape_vertex_to_part.py +42 -0
- scadpy/d2/shape/topologies/vertex/get_shape_vertex_to_ring.py +63 -0
- scadpy/d2/shape/transformations/__init__.py +43 -0
- scadpy/d2/shape/transformations/chamfer_shape.py +259 -0
- scadpy/d2/shape/transformations/color_shape.py +46 -0
- scadpy/d2/shape/transformations/convexify_shape.py +79 -0
- scadpy/d2/shape/transformations/fill_shape.py +68 -0
- scadpy/d2/shape/transformations/fillet_shape.py +289 -0
- scadpy/d2/shape/transformations/grow_shape.py +82 -0
- scadpy/d2/shape/transformations/linear_cut_shape.py +116 -0
- scadpy/d2/shape/transformations/linear_extrude_shape.py +60 -0
- scadpy/d2/shape/transformations/linear_slice_shape.py +144 -0
- scadpy/d2/shape/transformations/mirror_shape.py +53 -0
- scadpy/d2/shape/transformations/pull_shape.py +67 -0
- scadpy/d2/shape/transformations/push_shape.py +67 -0
- scadpy/d2/shape/transformations/radial_extrude_shape.py +285 -0
- scadpy/d2/shape/transformations/radial_slice_shape.py +132 -0
- scadpy/d2/shape/transformations/recoordinate_shape.py +82 -0
- scadpy/d2/shape/transformations/resize_shape.py +91 -0
- scadpy/d2/shape/transformations/rotate_shape.py +63 -0
- scadpy/d2/shape/transformations/scale_shape.py +58 -0
- scadpy/d2/shape/transformations/shrink_shape.py +69 -0
- scadpy/d2/shape/transformations/translate_shape.py +54 -0
- scadpy/d2/shape/types/__init__.py +3 -0
- scadpy/d2/shape/types/shape.py +792 -0
- scadpy/d2/shape/types/utils/__init__.py +5 -0
- scadpy/d2/shape/types/utils/shapely_base_geometry_to_shapely_polygons.py +25 -0
- scadpy/d2/shape/utils/__init__.py +5 -0
- scadpy/d2/shape/utils/shapely_base_geometry_to_shapely_polygons.py +55 -0
- scadpy/d2/utils/__init__.py +3 -0
- scadpy/d2/utils/resolve_vector_2d.py +50 -0
- scadpy/d3/__init__.py +2 -0
- scadpy/d3/solid/__init__.py +8 -0
- scadpy/d3/solid/combinations/__init__.py +21 -0
- scadpy/d3/solid/combinations/are_solid_parts_intersecting.py +51 -0
- scadpy/d3/solid/combinations/concat_solid.py +48 -0
- scadpy/d3/solid/combinations/exclude_solid.py +71 -0
- scadpy/d3/solid/combinations/intersect_solid.py +64 -0
- scadpy/d3/solid/combinations/intersect_solid_parts.py +73 -0
- scadpy/d3/solid/combinations/subtract_solid.py +72 -0
- scadpy/d3/solid/combinations/subtract_solid_parts.py +68 -0
- scadpy/d3/solid/combinations/unify_solid.py +51 -0
- scadpy/d3/solid/combinations/unify_solid_parts.py +73 -0
- scadpy/d3/solid/exporters/__init__.py +11 -0
- scadpy/d3/solid/exporters/map_solid_to_html.py +318 -0
- scadpy/d3/solid/exporters/map_solid_to_html_file.py +58 -0
- scadpy/d3/solid/exporters/map_solid_to_screen.py +51 -0
- scadpy/d3/solid/exporters/map_solid_to_stl_file.py +48 -0
- scadpy/d3/solid/features/__init__.py +11 -0
- scadpy/d3/solid/features/get_solid_bounds.py +37 -0
- scadpy/d3/solid/features/get_solid_part_bounds.py +37 -0
- scadpy/d3/solid/features/get_solid_part_colors.py +39 -0
- scadpy/d3/solid/features/is_solid_empty.py +36 -0
- scadpy/d3/solid/importers/__init__.py +11 -0
- scadpy/d3/solid/importers/map_geometries_to_solid.py +42 -0
- scadpy/d3/solid/importers/map_geometry_to_solid.py +42 -0
- scadpy/d3/solid/importers/map_parts_to_solid.py +66 -0
- scadpy/d3/solid/importers/map_stl_to_solid.py +37 -0
- scadpy/d3/solid/primitives/__init__.py +7 -0
- scadpy/d3/solid/primitives/cone.py +70 -0
- scadpy/d3/solid/primitives/cuboid.py +75 -0
- scadpy/d3/solid/primitives/cylinder.py +73 -0
- scadpy/d3/solid/primitives/polyhedron.py +60 -0
- scadpy/d3/solid/primitives/sphere.py +58 -0
- scadpy/d3/solid/topologies/__init__.py +8 -0
- scadpy/d3/solid/topologies/triangle/__init__.py +5 -0
- scadpy/d3/solid/topologies/triangle/get_solid_triangle_to_vertex.py +49 -0
- scadpy/d3/solid/topologies/vertex/__init__.py +7 -0
- scadpy/d3/solid/topologies/vertex/get_solid_vertex_coordinates.py +39 -0
- scadpy/d3/solid/topologies/vertex/get_solid_vertex_to_part.py +37 -0
- scadpy/d3/solid/transformations/__init__.py +23 -0
- scadpy/d3/solid/transformations/color_solid.py +46 -0
- scadpy/d3/solid/transformations/convexify_solid.py +64 -0
- scadpy/d3/solid/transformations/mirror_solid.py +53 -0
- scadpy/d3/solid/transformations/pull_solid.py +67 -0
- scadpy/d3/solid/transformations/push_solid.py +67 -0
- scadpy/d3/solid/transformations/recoordinate_solid.py +68 -0
- scadpy/d3/solid/transformations/resize_solid.py +92 -0
- scadpy/d3/solid/transformations/rotate_solid.py +93 -0
- scadpy/d3/solid/transformations/scale_solid.py +58 -0
- scadpy/d3/solid/transformations/translate_solid.py +54 -0
- scadpy/d3/solid/types/__init__.py +3 -0
- scadpy/d3/solid/types/solid.py +448 -0
- scadpy/d3/utils/__init__.py +3 -0
- scadpy/d3/utils/resolve_vector_3d.py +50 -0
- scadpy/utils/__init__.py +6 -0
- scadpy/utils/resolve_vector.py +64 -0
- scadpy/utils/x.py +38 -0
- scadpy/utils/y.py +38 -0
- scadpy/utils/z.py +38 -0
- scadpy-0.1.0.dist-info/METADATA +282 -0
- scadpy-0.1.0.dist-info/RECORD +236 -0
- scadpy-0.1.0.dist-info/WHEEL +4 -0
- scadpy-0.1.0.dist-info/licenses/LICENSE.md +43 -0
scadpy/utils/x.py
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
from numpy.typing import NDArray
|
|
3
|
+
from typeguard import typechecked
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@typechecked
|
|
7
|
+
def x(n: float) -> NDArray[np.float64]:
|
|
8
|
+
"""
|
|
9
|
+
Creates a 3D vector along the X-axis.
|
|
10
|
+
|
|
11
|
+
Parameters
|
|
12
|
+
----------
|
|
13
|
+
n : float
|
|
14
|
+
The value of the X component. The Y and Z components are set to 0.
|
|
15
|
+
|
|
16
|
+
Returns
|
|
17
|
+
-------
|
|
18
|
+
NDArray[np.float64]
|
|
19
|
+
A NumPy array of shape (3,) representing the vector `[n, 0, 0]`.
|
|
20
|
+
|
|
21
|
+
Notes
|
|
22
|
+
-----
|
|
23
|
+
- The resulting array always has 3 elements.
|
|
24
|
+
- The dtype of the array is `np.float64`.
|
|
25
|
+
|
|
26
|
+
Examples
|
|
27
|
+
--------
|
|
28
|
+
>>> from scadpy import x
|
|
29
|
+
>>> x(5)
|
|
30
|
+
array([5., 0., 0.])
|
|
31
|
+
|
|
32
|
+
>>> x(-2.3)
|
|
33
|
+
array([-2.3, 0. , 0. ])
|
|
34
|
+
|
|
35
|
+
>>> x(0)
|
|
36
|
+
array([0., 0., 0.])
|
|
37
|
+
"""
|
|
38
|
+
return np.array([n, np.nan, np.nan], dtype=np.float64)
|
scadpy/utils/y.py
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
from numpy.typing import NDArray
|
|
3
|
+
from typeguard import typechecked
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@typechecked
|
|
7
|
+
def y(n: float) -> NDArray[np.float64]:
|
|
8
|
+
"""
|
|
9
|
+
Creates a 3D vector along the Y-axis.
|
|
10
|
+
|
|
11
|
+
Parameters
|
|
12
|
+
----------
|
|
13
|
+
n : float
|
|
14
|
+
The value of the Y component. The X and Z components are set to 0.
|
|
15
|
+
|
|
16
|
+
Returns
|
|
17
|
+
-------
|
|
18
|
+
NDArray[np.float64]
|
|
19
|
+
A NumPy array of shape (3,) representing the vector `[0, n, 0]`.
|
|
20
|
+
|
|
21
|
+
Notes
|
|
22
|
+
-----
|
|
23
|
+
- The resulting array always has 3 elements.
|
|
24
|
+
- The dtype of the array is `np.float64`.
|
|
25
|
+
|
|
26
|
+
Examples
|
|
27
|
+
--------
|
|
28
|
+
>>> from scadpy import y
|
|
29
|
+
>>> y(5)
|
|
30
|
+
array([0., 5., 0.])
|
|
31
|
+
|
|
32
|
+
>>> y(-2.3)
|
|
33
|
+
array([ 0. , -2.3, 0. ])
|
|
34
|
+
|
|
35
|
+
>>> y(0)
|
|
36
|
+
array([0., 0., 0.])
|
|
37
|
+
"""
|
|
38
|
+
return np.array([np.nan, n, np.nan], dtype=np.float64)
|
scadpy/utils/z.py
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
from numpy.typing import NDArray
|
|
3
|
+
from typeguard import typechecked
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@typechecked
|
|
7
|
+
def z(n: float) -> NDArray[np.float64]:
|
|
8
|
+
"""
|
|
9
|
+
Creates a 3D vector along the Z-axis.
|
|
10
|
+
|
|
11
|
+
Parameters
|
|
12
|
+
----------
|
|
13
|
+
n : float
|
|
14
|
+
The value of the Z component. The X and Y components are set to 0.
|
|
15
|
+
|
|
16
|
+
Returns
|
|
17
|
+
-------
|
|
18
|
+
NDArray[np.float64]
|
|
19
|
+
A NumPy array of shape (3,) representing the vector `[0, 0, n]`.
|
|
20
|
+
|
|
21
|
+
Notes
|
|
22
|
+
-----
|
|
23
|
+
- The resulting array always has 3 elements.
|
|
24
|
+
- The dtype of the array is `np.float64`.
|
|
25
|
+
|
|
26
|
+
Examples
|
|
27
|
+
--------
|
|
28
|
+
>>> from scadpy import z
|
|
29
|
+
>>> z(5)
|
|
30
|
+
array([0., 0., 5.])
|
|
31
|
+
|
|
32
|
+
>>> z(-2.3)
|
|
33
|
+
array([ 0. , 0. , -2.3])
|
|
34
|
+
|
|
35
|
+
>>> z(0)
|
|
36
|
+
array([0., 0., 0.])
|
|
37
|
+
"""
|
|
38
|
+
return np.array([np.nan, np.nan, n], dtype=np.float64)
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ScadPy
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Simplified 2D/3D modeling for Python with fluent API and boolean operations
|
|
5
|
+
Author: m-fabregue
|
|
6
|
+
License: # MIT License
|
|
7
|
+
|
|
8
|
+
Copyright (c) 2026 m-fabregue
|
|
9
|
+
|
|
10
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
12
|
+
in the Software without restriction, including without limitation the rights
|
|
13
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
15
|
+
furnished to do so, subject to the following conditions:
|
|
16
|
+
|
|
17
|
+
The above copyright notice and this permission notice shall be included in all
|
|
18
|
+
copies or substantial portions of the Software.
|
|
19
|
+
|
|
20
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
|
+
SOFTWARE.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Third-party dependencies
|
|
31
|
+
|
|
32
|
+
ScadPy depends on the following third-party libraries, each distributed under
|
|
33
|
+
their own terms:
|
|
34
|
+
|
|
35
|
+
| Package | License |
|
|
36
|
+
|---------|---------|
|
|
37
|
+
| [trimesh](https://github.com/mikedh/trimesh) | MIT |
|
|
38
|
+
| [Shapely](https://github.com/shapely/shapely) | BSD 3-Clause |
|
|
39
|
+
| [typeguard](https://github.com/agronholm/typeguard) | MIT |
|
|
40
|
+
| [IPython](https://github.com/ipython/ipython) | BSD 3-Clause |
|
|
41
|
+
| [PySide6](https://doc.qt.io/qtforpython) | LGPL v3 |
|
|
42
|
+
| [triangle](https://github.com/drufat/triangle) | See note below |
|
|
43
|
+
|
|
44
|
+
**Note on `triangle`:** The `triangle` package wraps Jonathan Shewchuk's
|
|
45
|
+
Triangle library, which restricts commercial use without written permission
|
|
46
|
+
from the author. Users intending commercial applications should review
|
|
47
|
+
[Triangle's license](https://www.cs.cmu.edu/~quake/triangle.html) and
|
|
48
|
+
consider replacing the `triangle` dependency accordingly.
|
|
49
|
+
License-File: LICENSE.md
|
|
50
|
+
Keywords: 2d,3d,modeling,python,scad,shape,solid
|
|
51
|
+
Classifier: Development Status :: 3 - Alpha
|
|
52
|
+
Requires-Python: >=3.12
|
|
53
|
+
Requires-Dist: ipython~=8.30
|
|
54
|
+
Requires-Dist: matplotlib~=3.10
|
|
55
|
+
Requires-Dist: pyside6~=6.10
|
|
56
|
+
Requires-Dist: triangle==20250106
|
|
57
|
+
Requires-Dist: trimesh[easy]~=4.10
|
|
58
|
+
Requires-Dist: typeguard~=4.4
|
|
59
|
+
Provides-Extra: dev
|
|
60
|
+
Requires-Dist: coverage; extra == 'dev'
|
|
61
|
+
Requires-Dist: furo; extra == 'dev'
|
|
62
|
+
Requires-Dist: genbadge[coverage]; extra == 'dev'
|
|
63
|
+
Requires-Dist: interrogate; extra == 'dev'
|
|
64
|
+
Requires-Dist: numpydoc; extra == 'dev'
|
|
65
|
+
Requires-Dist: sphinx; extra == 'dev'
|
|
66
|
+
Requires-Dist: sphinx-autodoc-typehints; extra == 'dev'
|
|
67
|
+
Requires-Dist: sphinx-pyproject; extra == 'dev'
|
|
68
|
+
Description-Content-Type: text/markdown
|
|
69
|
+
|
|
70
|
+
# ScadPy
|
|
71
|
+
|
|
72
|
+

|
|
73
|
+

|
|
74
|
+
|
|
75
|
+
**Programmatic CAD in Pure Python.**
|
|
76
|
+
|
|
77
|
+
ScadPy provides a fluent, type-safe API for 2D and 3D parametric modeling,
|
|
78
|
+
built on [Shapely](https://shapely.readthedocs.io) and
|
|
79
|
+
[trimesh](https://trimesh.org).
|
|
80
|
+
Write designs with the conciseness of OpenSCAD and the full power of Python.
|
|
81
|
+
|
|
82
|
+
## Installation
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
pip install scadpy
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Requirements: Python ≥ 3.12.
|
|
89
|
+
|
|
90
|
+
## Quick examples
|
|
91
|
+
|
|
92
|
+
```python
|
|
93
|
+
# 2D — chamfered mounting plate
|
|
94
|
+
from scadpy import *
|
|
95
|
+
import numpy as np
|
|
96
|
+
|
|
97
|
+
PLATE_WIDTH = 80
|
|
98
|
+
PLATE_HEIGHT = 50
|
|
99
|
+
HOLE_RADIUS = 4
|
|
100
|
+
HOLE_MARGIN = 10
|
|
101
|
+
CHAMFER_SIZE = 8
|
|
102
|
+
|
|
103
|
+
base = rectangle([PLATE_WIDTH, PLATE_HEIGHT])
|
|
104
|
+
plate = base.chamfer(CHAMFER_SIZE)
|
|
105
|
+
corner_coordinates = base.vertex_coordinates[base.corner_to_vertex[:, 1]]
|
|
106
|
+
|
|
107
|
+
for position, normal in zip(corner_coordinates, base.corner_normals):
|
|
108
|
+
hole_center = position - HOLE_MARGIN * np.sqrt(2) * normal
|
|
109
|
+
plate -= circle(HOLE_RADIUS).translate(hole_center)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
```python
|
|
113
|
+
# 3D — parametric ball bearing
|
|
114
|
+
import numpy as np
|
|
115
|
+
from scadpy import *
|
|
116
|
+
|
|
117
|
+
BALL_RADIUS = 3
|
|
118
|
+
RACE_RADIUS = 15
|
|
119
|
+
NB_BALLS = 11
|
|
120
|
+
CLEARANCE = 0.1
|
|
121
|
+
RING_HEIGHT = 7
|
|
122
|
+
RACE_THICKNESS = 10
|
|
123
|
+
|
|
124
|
+
groove = circle(BALL_RADIUS + CLEARANCE) | rectangle([BALL_RADIUS, RING_HEIGHT])
|
|
125
|
+
race = rectangle([RACE_THICKNESS, RING_HEIGHT]) - groove
|
|
126
|
+
race = race.radial_extrude(axis=y(1), pivot=x(RACE_RADIUS))
|
|
127
|
+
|
|
128
|
+
balls = Solid()
|
|
129
|
+
for angle in np.linspace(0, 360, NB_BALLS, endpoint=False):
|
|
130
|
+
balls += sphere(BALL_RADIUS).rotate(angle, axis=y(1), pivot=x(RACE_RADIUS))
|
|
131
|
+
|
|
132
|
+
bearing = race + balls
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Cheat sheet
|
|
136
|
+
|
|
137
|
+
*Parameters shown in `# comments` are optional, with their default values.*
|
|
138
|
+
|
|
139
|
+
**2D — Shape**
|
|
140
|
+
|
|
141
|
+
```python
|
|
142
|
+
from scadpy import *
|
|
143
|
+
|
|
144
|
+
# primitives
|
|
145
|
+
circle(radius=3) # segment_count=64
|
|
146
|
+
polygon(points=[(-2, -2), (2, -2), (0, 2)])
|
|
147
|
+
rectangle(size=[6, 3])
|
|
148
|
+
Shape.from_dxf("file.dxf")
|
|
149
|
+
Shape.from_svg("file.svg")
|
|
150
|
+
square(size=4)
|
|
151
|
+
|
|
152
|
+
# boolean operations
|
|
153
|
+
s = square(size=4); c = circle(radius=3)
|
|
154
|
+
s | c # union
|
|
155
|
+
s - c # difference
|
|
156
|
+
s & c # intersection
|
|
157
|
+
s ^ c # symmetric difference
|
|
158
|
+
s + c # concat (no merge)
|
|
159
|
+
|
|
160
|
+
# transforms
|
|
161
|
+
s.chamfer(size=0.8) # corner_filter=None, epsilon=1e-8
|
|
162
|
+
s.color(color=RED)
|
|
163
|
+
s.convexify() # part_filter=None
|
|
164
|
+
s.fill() # part_filter=None
|
|
165
|
+
s.fillet(size=0.8) # corner_filter=None, segment_count=32, epsilon=1e-8
|
|
166
|
+
s.grow(distance=0.5) # part_filter=None
|
|
167
|
+
s.linear_cut(axis=x(1)) # pivot=0
|
|
168
|
+
s.linear_slice(thickness=2, direction=x(1)) # pivot=0, part_filter=None
|
|
169
|
+
s.mirror(normal=[1, 0]) # pivot=0
|
|
170
|
+
s.pull(distance=1.0) # pivot=0, vertex_filter=None
|
|
171
|
+
s.push(distance=1.0) # pivot=0, vertex_filter=None
|
|
172
|
+
s.radial_slice(start=0, end=180) # pivot=0, part_filter=None
|
|
173
|
+
s.resize(size=[6, None]) # auto=False, pivot=None, vertex_filter=None
|
|
174
|
+
s.rotate(angle=30) # pivot=0, vertex_filter=None
|
|
175
|
+
s.scale(scale=[2, 0.5]) # pivot=0, vertex_filter=None
|
|
176
|
+
s.shrink(distance=0.5) # part_filter=None
|
|
177
|
+
s.translate(translation=[2, 1]) # vertex_filter=None
|
|
178
|
+
|
|
179
|
+
# topology — coordinates & attributes
|
|
180
|
+
s.are_corners_convex # (n_corners,) — convexity mask
|
|
181
|
+
s.corner_angles # (n_corners,) — interior angles (°)
|
|
182
|
+
s.corner_normals # (n_corners, 2) — outward unit normals
|
|
183
|
+
s.directed_edge_directions # (2*n_edges, 2)
|
|
184
|
+
s.edge_lengths # (n_edges,)
|
|
185
|
+
s.edge_midpoints # (n_edges, 2)
|
|
186
|
+
s.edge_normals # (n_edges, 2)
|
|
187
|
+
s.ring_types # (n_rings,) — "exterior"|"interior"
|
|
188
|
+
s.vertex_coordinates # (n_vertices, 2)
|
|
189
|
+
|
|
190
|
+
# topology — bridges (*_to_*)
|
|
191
|
+
s.corner_to_incoming_directed_edge # corner → directed_edge
|
|
192
|
+
s.corner_to_outgoing_directed_edge # corner → directed_edge
|
|
193
|
+
s.corner_to_vertex # corner → [prev, curr, next]
|
|
194
|
+
s.directed_edge_to_corner # directed_edge → [source, target]
|
|
195
|
+
s.directed_edge_to_edge # directed_edge → edge
|
|
196
|
+
s.directed_edge_to_vertex # directed_edge → [start, end]
|
|
197
|
+
s.edge_to_vertex # edge → [start, end]
|
|
198
|
+
s.ring_to_part # ring → part
|
|
199
|
+
s.vertex_to_part # vertex → part
|
|
200
|
+
s.vertex_to_ring # vertex → ring
|
|
201
|
+
|
|
202
|
+
# extrusions → Solid
|
|
203
|
+
s.linear_extrude(height=3)
|
|
204
|
+
s.radial_extrude(axis=y(1), pivot=x(5)) # start=0, end=360, segment_count=64
|
|
205
|
+
|
|
206
|
+
# export
|
|
207
|
+
s.to_dxf_file("output.dxf")
|
|
208
|
+
s.to_html_file("output.html")
|
|
209
|
+
s.to_screen()
|
|
210
|
+
s.to_svg_file("output.svg")
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
**3D — Solid**
|
|
214
|
+
|
|
215
|
+
```python
|
|
216
|
+
from scadpy import *
|
|
217
|
+
|
|
218
|
+
# primitives
|
|
219
|
+
cone(radius=2, height=4) # section_count=32
|
|
220
|
+
cuboid(size=[4, 3, 2])
|
|
221
|
+
cylinder(radius=2, height=4) # section_count=32
|
|
222
|
+
polyhedron(vertices=vertices, faces=faces)
|
|
223
|
+
sphere(radius=3) # subdivision_count=4
|
|
224
|
+
Solid.from_stl("model.stl")
|
|
225
|
+
|
|
226
|
+
# boolean operations
|
|
227
|
+
a = cuboid(size=[4, 3, 2]); b = sphere(radius=2)
|
|
228
|
+
a | b # union
|
|
229
|
+
a - b # difference
|
|
230
|
+
a & b # intersection
|
|
231
|
+
a ^ b # symmetric difference
|
|
232
|
+
a + b # concat (no merge)
|
|
233
|
+
|
|
234
|
+
# transforms
|
|
235
|
+
a.color(color=RED)
|
|
236
|
+
a.convexify() # part_filter=None
|
|
237
|
+
a.mirror(normal=[1, 0, 0]) # pivot=0
|
|
238
|
+
a.pull(distance=1.0) # pivot=0, vertex_filter=None
|
|
239
|
+
a.push(distance=1.0) # pivot=0, vertex_filter=None
|
|
240
|
+
a.resize(size=[6, None, None]) # auto=False, pivot=None, vertex_filter=None
|
|
241
|
+
a.rotate(angle=30, axis=z(1)) # pivot=0, vertex_filter=None
|
|
242
|
+
a.scale(scale=[2, 1, 0.5]) # pivot=0, vertex_filter=None
|
|
243
|
+
a.translate(translation=[1, 0, 0]) # vertex_filter=None
|
|
244
|
+
|
|
245
|
+
# topology — coordinates & bridges (*_to_*)
|
|
246
|
+
a.triangle_to_vertex # triangle → [v0, v1, v2]
|
|
247
|
+
a.vertex_coordinates # (n_vertices, 3)
|
|
248
|
+
a.vertex_to_part # vertex → part
|
|
249
|
+
|
|
250
|
+
# export
|
|
251
|
+
a.to_html_file("output.html")
|
|
252
|
+
a.to_screen()
|
|
253
|
+
a.to_stl_file("output.stl")
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
## Roadmap
|
|
257
|
+
|
|
258
|
+
- Improve documentation
|
|
259
|
+
- Richer topology for Shape and Solid
|
|
260
|
+
- Richer transformations for Shape and Solid
|
|
261
|
+
- Chamfer and fillet on Solid
|
|
262
|
+
- New assembly types: `PointCloud2d`, `Wire2d`, `PointCloud3d`, `Wire3d`
|
|
263
|
+
- Better error messages
|
|
264
|
+
- More import/export formats
|
|
265
|
+
|
|
266
|
+
## Development
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
# Create and activate venv
|
|
270
|
+
python3 -m venv .venv
|
|
271
|
+
source .venv/bin/activate
|
|
272
|
+
|
|
273
|
+
# Install with dev dependencies
|
|
274
|
+
pip install -e .[dev]
|
|
275
|
+
|
|
276
|
+
# Run doctests & generate documentation
|
|
277
|
+
cd docs && make doctest && make html
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
## License
|
|
281
|
+
|
|
282
|
+
See [LICENSE.md](LICENSE.md).
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
scadpy/__init__.py,sha256=S3rpD-p5bX8ijJ5FqpZ1xPG0YeBRdIysnywNouipulU,168
|
|
2
|
+
scadpy/color/__init__.py,sha256=VIw4RycaeifYwodFocahMGjTtbW9K_9vIXDfjQMNH6U,66
|
|
3
|
+
scadpy/color/constants/BEIGE.py,sha256=2LabfIuyPGZ8ePeg61Tt02NGdDNSgPKxnApkzRfHsC8,112
|
|
4
|
+
scadpy/color/constants/BLACK.py,sha256=I_0crqd1jcDfm0Iqy-zDyfRpBsmsX7_6FfxCWOR2nWE,112
|
|
5
|
+
scadpy/color/constants/BLUE.py,sha256=TI3ywBxUkZXD7MFEVKKyck8TIW1Pdjn3BUvIhdXMjF4,108
|
|
6
|
+
scadpy/color/constants/BROWN.py,sha256=bB9lsUnnzVMsPJSS1sWlENorHbL8KVpI1m8PnB_35mw,112
|
|
7
|
+
scadpy/color/constants/DARK_GRAY.py,sha256=3LJyIKt1Gt2ON2KmheOu15v1ppy7Y7NANZwc9tSj4rY,116
|
|
8
|
+
scadpy/color/constants/DEFAULT_COLOR.py,sha256=E-6Zek22BozPU9OTMiziuqY4UD4WHUOovJ1ZRog49Ik,67
|
|
9
|
+
scadpy/color/constants/DEFAULT_OPACITY.py,sha256=FIdn3dDE8rGAf_-zqnJYhskwsWk0OfKgP-D-ERrn8hE,20
|
|
10
|
+
scadpy/color/constants/GRAY.py,sha256=yGrhEXoV-0dnK0n4Y-ZLYsN7ffsB3jD0ksxqFax7zto,108
|
|
11
|
+
scadpy/color/constants/GREEN.py,sha256=RqNY3Mip81cPvccc2xN7GaiJ4xImuo01zqn-gj4NwX4,109
|
|
12
|
+
scadpy/color/constants/ORANGE.py,sha256=ZY-YgD9exM88JsreFJE-E6j7RV_Z_LGtCF9RG-lJ4-c,111
|
|
13
|
+
scadpy/color/constants/RED.py,sha256=htoD6nvyiDukmRQKF_Z18L0itRhkL4MuKpulhkQyJqk,107
|
|
14
|
+
scadpy/color/constants/WHITE.py,sha256=WL5YFMp6K5_ZJOnd3FOU_QBvOVNmKcwPf-PKfWQb09M,112
|
|
15
|
+
scadpy/color/constants/YELLOW.py,sha256=Vl913MKEKTBGmToikRxMX7QEiUZWcA1ymyF3kkcQwNY,112
|
|
16
|
+
scadpy/color/constants/__init__.py,sha256=zrV0dQ8DVDkOF2hRMGT1sNGQrz6Yt4qWwdp3bqNDMdY,569
|
|
17
|
+
scadpy/color/type/__init__.py,sha256=iOb77plistC4RzOl_nTfhziE9JxkqonWW7i9tp4U8iU,46
|
|
18
|
+
scadpy/color/type/color.py,sha256=Nz0_8K87_eevxZenchUDdyNH0dyhnZRlUcnBU6u3FaU,62
|
|
19
|
+
scadpy/color/utils/__init__.py,sha256=UpIeWA9aG2hIe3zHJJ7PPEFpGare7iyCaARJqyhPyJw,79
|
|
20
|
+
scadpy/color/utils/get_random_color.py,sha256=L5fcjAI9X7YaVlZ-vLhSPszldyD1o4HRcTe77UhWMZE,996
|
|
21
|
+
scadpy/core/__init__.py,sha256=Z2BeNjjy_InYkNNTcEgsZu9VriyLCIcJh1PPyT0N9M0,111
|
|
22
|
+
scadpy/core/assembly/__init__.py,sha256=u0xj8A8o9YVkOxBVnM3sH6L951w21WB_Q_PZ6mrEYEU,197
|
|
23
|
+
scadpy/core/assembly/combinations/__init__.py,sha256=_WpRwUreTmYxLD4HanPoqZa0y5r-EsFSwyWVZz1zuic,400
|
|
24
|
+
scadpy/core/assembly/combinations/concat_assemblies.py,sha256=O9iQyZzuMAfLqNME3Qti_2iQNjAUKfdds0JjL85H80g,1476
|
|
25
|
+
scadpy/core/assembly/combinations/exclude_assemblies.py,sha256=Toa3R6aJ0mDwIZKfYZwml2nKqv9zpUzU_0yjA35sYak,5088
|
|
26
|
+
scadpy/core/assembly/combinations/intersect_assemblies.py,sha256=CZgYPn9ZOK6-jkXhh-TstnaDEiC-47JCmbfLwH9WvQg,4868
|
|
27
|
+
scadpy/core/assembly/combinations/subtract_assemblies.py,sha256=XE53RjShFMjUfESXcVvW0TJoDUVDgSnjFmeR3u8sk-c,5420
|
|
28
|
+
scadpy/core/assembly/combinations/unify_assemblies.py,sha256=nY7kzxfvtWmlLmBsSsXD2OdlucGJHt_qAHrnOcTG70k,1778
|
|
29
|
+
scadpy/core/assembly/topologies/__init__.py,sha256=viKuCKa7PPu8Xcag1TtjseKhrEdzhtZ8XclpKZMyTws,1279
|
|
30
|
+
scadpy/core/assembly/topologies/directed_edge/__init__.py,sha256=vsYhBdsp-C5vM-gaamVphh1iOVpr4DBz73eZyssl5A4,405
|
|
31
|
+
scadpy/core/assembly/topologies/directed_edge/get_assembly_directed_edge_directions.py,sha256=UgVbNVeEOEpqNmsIt8fPK9SFCmC5JvQi-IDxl4XvfCo,2228
|
|
32
|
+
scadpy/core/assembly/topologies/directed_edge/get_assembly_directed_edge_to_edge.py,sha256=Vr1p03lZJe-KpIBAdKZd7yKxseWHHiM_ul1mo9OeIHI,1257
|
|
33
|
+
scadpy/core/assembly/topologies/directed_edge/get_assembly_directed_edge_to_vertex.py,sha256=-nphci_ZlOfJv5baVFgLoPEJ3hn-ql-gAg6Rs2e83f4,1549
|
|
34
|
+
scadpy/core/assembly/topologies/edge/__init__.py,sha256=8ol0k0VMO68e5gUsqqmBz_jszR-7_TESEww-kkKB3_8,315
|
|
35
|
+
scadpy/core/assembly/topologies/edge/get_assembly_edge_lengths.py,sha256=W1tFKWI3szzhedzmFUJQ00PNEqUZ2F1cmgmM_9Ojvh8,1401
|
|
36
|
+
scadpy/core/assembly/topologies/edge/get_assembly_edge_midpoints.py,sha256=4ONtij0b0jS8p-mtP5cRnAtsQpnmlQASQBFp3gmepeQ,1535
|
|
37
|
+
scadpy/core/assembly/topologies/edge/get_assembly_edge_normals.py,sha256=43fug7ag73zaUAwbcWHIuKkHRhvFzq7zghy_-YBFTBg,2278
|
|
38
|
+
scadpy/core/assembly/topologies/face_corner/__init__.py,sha256=poMXz-dQSmiLFLjB9XFbDZpySqqqaAurpD3zZTGPpew,742
|
|
39
|
+
scadpy/core/assembly/topologies/face_corner/get_assembly_face_corner_angles.py,sha256=WKxkdKu71VdCpyR0iA5GxMDc_DQGa05naU-tS_c1y2Y,2344
|
|
40
|
+
scadpy/core/assembly/topologies/face_corner/get_assembly_face_corner_normals.py,sha256=EObqrfsUQw6agYu-lYAB22yPdEx9x_Ie11mQ7D5D9lM,3747
|
|
41
|
+
scadpy/core/assembly/topologies/face_corner/get_assembly_face_corner_to_incoming_directed_edge.py,sha256=jIOIZGEWRL7U9QkFy_-WsNvdikqtQo84vDJWOucYJpo,1990
|
|
42
|
+
scadpy/core/assembly/topologies/face_corner/get_assembly_face_corner_to_outgoing_directed_edge.py,sha256=AvLZ77JmO4v0O7M2MXtPSpVU3zsxKzaP8Rwk6bVKGss,1990
|
|
43
|
+
scadpy/core/assembly/topologies/face_corner/get_assembly_face_directed_edge_to_corner.py,sha256=cvWOvDx8m7nYW1BMtKwEI8GFYPQjgTtEFyMt8YQ3Bjw,3145
|
|
44
|
+
scadpy/core/assembly/topologies/part/__init__.py,sha256=XDZKNyeHbt8keEWcW-97ZHtbGlQ9g15dOSD6VzNz5fY,110
|
|
45
|
+
scadpy/core/assembly/topologies/part/get_assembly_part_colors.py,sha256=yUkE1Vw-Xjpb7qCa0PI7MbeKbBIWTv0Qtnj8A6rgrVk,1517
|
|
46
|
+
scadpy/core/assembly/topologies/vertex/__init__.py,sha256=J6aMFxozxmMwBSjD1JZcVAOhQTyvcjBjDs-1ummchxk,235
|
|
47
|
+
scadpy/core/assembly/topologies/vertex/get_assembly_vertex_coordinates.py,sha256=VBGQrfVP8dPMDxdk1R9OmU_heASUh9ue4J5dxAVU3ac,2124
|
|
48
|
+
scadpy/core/assembly/topologies/vertex/get_assembly_vertex_to_part.py,sha256=URTNjT5jhwCv6MTtQzfwVG44E9tojXPi5UqEm0zSqCk,1914
|
|
49
|
+
scadpy/core/assembly/transformations/__init__.py,sha256=AWGp3GLeK5LKQ8bl2zyJgs-L7J0PNBqgxzMrbL6Bh8s,760
|
|
50
|
+
scadpy/core/assembly/transformations/color_assembly.py,sha256=mKsEqf-C0l_3hJT6__Wukg71VXl4n2cmXVIyd4KYHmU,606
|
|
51
|
+
scadpy/core/assembly/transformations/mirror_vertex_coordinates.py,sha256=A3-4N69Lv00tBZzIdQPyU9rd_MfIFPAoNdSW_YUXQAw,2190
|
|
52
|
+
scadpy/core/assembly/transformations/pull_vertex_coordinates.py,sha256=gXaig_WuUdalLXfTcrYSHLmC91Xp0Y2snEiaAUKP2hw,2157
|
|
53
|
+
scadpy/core/assembly/transformations/push_vertex_coordinates.py,sha256=Xtzs0mAoC3RzigTozTq8YwjN4B3v8QTpAIoJmZlXHpQ,2121
|
|
54
|
+
scadpy/core/assembly/transformations/resize_vertex_coordinates.py,sha256=w1IkbFnjl87XRDrDFScm60E0YqBrCEtLthqqSuEGNo0,4297
|
|
55
|
+
scadpy/core/assembly/transformations/rotate_vertex_coordinates.py,sha256=h7YOtHj2Hd9AiTzgdk47fofKYjwKHlNkgvgFFHv7SBY,2378
|
|
56
|
+
scadpy/core/assembly/transformations/scale_vertex_coordinates.py,sha256=KM8-_iNxC2_lPZmq69clqGTil4oTZGo2yfpMqC8Xe0I,2654
|
|
57
|
+
scadpy/core/assembly/transformations/translate_vertex_coordinates.py,sha256=550PssRE8LXOL2sT15T4cqLf8zmYMPaTmEkuNLkPap4,2223
|
|
58
|
+
scadpy/core/assembly/types/__init__.py,sha256=o5F5d6SXULwTspOWNxbgKn6QcRlUQ2c2RzZRtESDBxc,128
|
|
59
|
+
scadpy/core/assembly/types/assembly.py,sha256=sci4q354lgrB4tOMd9kmhjicMPqPA11TSAjAI-Isu2c,400
|
|
60
|
+
scadpy/core/assembly/types/topology_filter.py,sha256=RrpkdR8hLW21i4315gM29ETrhcR8vzW_hsz9pAXgSn8,169
|
|
61
|
+
scadpy/core/assembly/utils/__init__.py,sha256=f85LZ6bQe-iOxTgTmvY4Qi2y6qyGU8fD9TMfW2mTDAk,261
|
|
62
|
+
scadpy/core/assembly/utils/lookup_pairs.py,sha256=Rb385VHhxxPsDTmTnUBXOGYjAjQ8VOO4V_7MmxSE_Yg,1676
|
|
63
|
+
scadpy/core/assembly/utils/resolve_topology_filter.py,sha256=4KD2F2J4pRE2aHI07Nc4hJI6_OsYtsPhXc83Xj_3oEY,2504
|
|
64
|
+
scadpy/core/assembly/utils/transform_filtered_parts.py,sha256=6_txZl0FLzgNnR3LmZDQGyPJPkHUOrc_k2Kd6Yja0p0,1731
|
|
65
|
+
scadpy/core/component/__init__.py,sha256=Nb6HdYlAYRjHEIkO5O8e4necyzWmoYhFTQmqIQoy0gw,112
|
|
66
|
+
scadpy/core/component/exporters/__init__.py,sha256=JnNoDsowKKpuHLRM2kYqFLtggkWT4Bz632wXMt62Ywg,208
|
|
67
|
+
scadpy/core/component/exporters/map_component_to_html_file.py,sha256=_o_dzQR5Ms6CPfh_mZYBwtoxhaza9wmYtL-tOOCQC38,1333
|
|
68
|
+
scadpy/core/component/exporters/map_component_to_screen.py,sha256=fdm0srpgoGbJgmXx1vO7OXRx4FS-OZdr0sQRbBIPqLU,1679
|
|
69
|
+
scadpy/core/component/features/__init__.py,sha256=ZHb4kioHu0supWjjuKmhGwyCHDhiaIieQWJyswkwuPQ,98
|
|
70
|
+
scadpy/core/component/features/get_component_bounds.py,sha256=zfLqT8B_daUm66nf6K6EkNfeEmqV9eCCqClgyLjCNE0,1155
|
|
71
|
+
scadpy/core/component/utils/__init__.py,sha256=eXx4PKS5RBuuHijhYvh8g1wK_LoGcnLOK0qxTp9cOuA,253
|
|
72
|
+
scadpy/core/component/utils/blend_component_colors.py,sha256=naGcaBIE_-zLYvIHC9UiFQ926YQ7TTzSUlazLh26uxs,2474
|
|
73
|
+
scadpy/core/component/utils/get_intersecting_component_index_groups.py,sha256=f2oSgupU59QaE6BCefe6e2Wc0Ly2JP2yhKaXZYuEUEU,3652
|
|
74
|
+
scadpy/core/part/__init__.py,sha256=TzCjslcrnpvAAL478u0Sob4pvb1id3I8z2g8-0-0CqU,112
|
|
75
|
+
scadpy/core/part/combinations/__init__.py,sha256=tynJAbeUwJtxKdM4yXl_qWuKK6AiYEri82pW0a4WtqI,263
|
|
76
|
+
scadpy/core/part/combinations/concat_parts.py,sha256=P4suSxRA3tew6UrvBc-E-1-Fi-zwXzc5-AS3RPQR0C8,1324
|
|
77
|
+
scadpy/core/part/combinations/intersect_parts.py,sha256=O0_Kv8KR7NIhpIb-jBttACL_6McILoRId7rC9h3OoP4,5433
|
|
78
|
+
scadpy/core/part/combinations/subtract_parts.py,sha256=eYEncicSz3b3rbh1r4o7AXDXCEgTN_gZmuBuNBYnzNc,3498
|
|
79
|
+
scadpy/core/part/combinations/unify_parts.py,sha256=x0FRXF_SPdNmOGMmoxrLwhmTOqtQT11l-SAGJMxZteI,5177
|
|
80
|
+
scadpy/core/part/types/__init__.py,sha256=Xfjhw9m3zYoYTV3nraiygPDeRruarxXy1_PZl0xwvuo,50
|
|
81
|
+
scadpy/core/part/types/part.py,sha256=_XsBqOwO-Zm9lZfG1cdmmmCRlaRdInLBee9BlClhCJE,803
|
|
82
|
+
scadpy/core/part/utils/__init__.py,sha256=kuTgxDd64XCfyPgVOEbysviJVXWEeKp1jl1zqDCHWbU,89
|
|
83
|
+
scadpy/core/part/utils/blend_part_colors.py,sha256=c95kjtZnbjmlAjZbEuIhpBHDvyJC3oY3pSn4M5E-0h0,811
|
|
84
|
+
scadpy/d2/__init__.py,sha256=st99IfSVLiYLReE8Y6woh65BPkl12mcc_dnP1Lrge1c,70
|
|
85
|
+
scadpy/d2/shape/__init__.py,sha256=JWOYe5bTksKiXB9v6UXEpca0I_jmZr5yBTb3vrBelBE,353
|
|
86
|
+
scadpy/d2/shape/combinations/__init__.py,sha256=NAnoCMhI6ii6JOdTQJi4X_SkANH1Ox9b0tejiDT6G5A,675
|
|
87
|
+
scadpy/d2/shape/combinations/are_shape_parts_intersecting.py,sha256=55CFYn0OxBV6qvpuToEUqcKB2XyQdQFD67QilcZ8G0M,1134
|
|
88
|
+
scadpy/d2/shape/combinations/concat_shape.py,sha256=VBiV0PFpEMZLjziOA5GcoY4fM0Gsssh9EfZhNiNe-ag,1283
|
|
89
|
+
scadpy/d2/shape/combinations/exclude_shape.py,sha256=3XAZw_CxMvMqWO7xVrLwMpbdTKnZfDDMd5_qwCJASB0,2123
|
|
90
|
+
scadpy/d2/shape/combinations/intersect_shape.py,sha256=KuPuJ1P2QOQv8ifx0p87gJgfTfkPzPk2pBd_ytkhbt4,1769
|
|
91
|
+
scadpy/d2/shape/combinations/intersect_shape_parts.py,sha256=SM60IjXMLNuniXuylxMvP_hzLAUeporjrM3OitMG7U4,2510
|
|
92
|
+
scadpy/d2/shape/combinations/subtract_shape.py,sha256=I3cO32mOFE0_PqR5sPXBiaLDaVNhmaSqvOkvtGH97ys,2144
|
|
93
|
+
scadpy/d2/shape/combinations/subtract_shape_parts.py,sha256=6oNbIRD9thb2UxOCpHk8aTAiDNAgbc4WKSaFHXIhZwA,2194
|
|
94
|
+
scadpy/d2/shape/combinations/unify_shape.py,sha256=EVNXUmGWVtYzY0DcpRq2PIHyVfdlzU6UpRYQjInoelM,1403
|
|
95
|
+
scadpy/d2/shape/combinations/unify_shape_parts.py,sha256=hBzfsUI1TJP_0ws6kz3TAMeaB2AvL6eZ0ES8s5mrTRk,2406
|
|
96
|
+
scadpy/d2/shape/exporters/__init__.py,sha256=ZXkgyxHL8kcryKVTyyjjY_Vj4ojeCk-j2-7PH0VKBI4,572
|
|
97
|
+
scadpy/d2/shape/exporters/map_shape_to_dxf.py,sha256=IJ6Zn-tMsSIAKU3aeiuGAyEe7FYdLw_qimQZv30ccVs,974
|
|
98
|
+
scadpy/d2/shape/exporters/map_shape_to_dxf_file.py,sha256=UxAZZV8jq6AKvJ9DZwDhNdUlZWFl_eqcQoPev0jMThk,832
|
|
99
|
+
scadpy/d2/shape/exporters/map_shape_to_html.py,sha256=slAi01Q70xdE9eYwFvOhf7W2agUTCUYM_nwCLqzKYzw,3497
|
|
100
|
+
scadpy/d2/shape/exporters/map_shape_to_html_file.py,sha256=yUMgKsJOZ5HgMWTx1oDvRjgr59XKNsBq4SHKCGNnAss,1512
|
|
101
|
+
scadpy/d2/shape/exporters/map_shape_to_screen.py,sha256=5MyJxNJKZy-LvPES2OYZxvmNEOhaUMrwqYlx4llFOv0,1297
|
|
102
|
+
scadpy/d2/shape/exporters/map_shape_to_svg.py,sha256=O7YXGTsmmM7GkOQJzcXXBEtUMOtbUaUf58Ct7ZMyjhE,919
|
|
103
|
+
scadpy/d2/shape/exporters/map_shape_to_svg_file.py,sha256=XWl2eiyhdjv5FazOypsmCXsxYjUWjpATIWXzUunNEjU,833
|
|
104
|
+
scadpy/d2/shape/features/__init__.py,sha256=92Il5zyBnbSkcZ8mFizEIzBfz1uQmmuhRCN-VEu4LOY,237
|
|
105
|
+
scadpy/d2/shape/features/get_shape_bounds.py,sha256=koordjhuSEwMVCIwCxTaNxXcWazKbhTYNXL492TkJJ0,954
|
|
106
|
+
scadpy/d2/shape/features/get_shape_part_bounds.py,sha256=EgTlp6W3qrw5ETAAQHhkZkFRPvayThzMSMp6Rq_DJvI,988
|
|
107
|
+
scadpy/d2/shape/features/is_shape_empty.py,sha256=NsrZx3T7JPXkC7glNWT4EteQqAK3mf1CCMcJhgJwY_s,788
|
|
108
|
+
scadpy/d2/shape/importers/__init__.py,sha256=5qjcgirT1Fv4MFjuJoZ1vko8NI4P8PeE7zeBb6o8OHE,412
|
|
109
|
+
scadpy/d2/shape/importers/map_dxf_to_shape.py,sha256=MjbFtn-B85dD_oJc_M55jl0VTGf4mFLPl9fMRx4qhZA,1727
|
|
110
|
+
scadpy/d2/shape/importers/map_geometries_to_shape.py,sha256=1rSbKmG352z_fkLoUCMdm3JwT_LxSvgCYBs8hde5sb4,1191
|
|
111
|
+
scadpy/d2/shape/importers/map_geometry_to_shape.py,sha256=SDADtEYwdjx0Kop1UH0Ar39KgKqDz4lFlTTfhXXdkyg,1067
|
|
112
|
+
scadpy/d2/shape/importers/map_parts_to_shape.py,sha256=DbKL8cMVLIAm7XkaRtvLtkP3vSFroF7eNvFz1BlNxc0,1992
|
|
113
|
+
scadpy/d2/shape/importers/map_svg_to_shape.py,sha256=cFTXkLmeyVzXB3I_AGJjH7SLLlEYZabxxIQPzrLUc-8,1702
|
|
114
|
+
scadpy/d2/shape/primitives/__init__.py,sha256=QflmybbDax7_XOHbkUrmhiOcBwVzGmm_FdvIVX4UJ_c,172
|
|
115
|
+
scadpy/d2/shape/primitives/circle.py,sha256=RVLjtucUnInzba2iJsCgdNHXLjZ-hDlpfE2C1Aq3RPw,1921
|
|
116
|
+
scadpy/d2/shape/primitives/polygon.py,sha256=4QR-DjQFTvdAbOw9V39OMaXjswf7RqrN2dGONcEcb5o,2713
|
|
117
|
+
scadpy/d2/shape/primitives/rectangle.py,sha256=b9EKUxt2ApWhuZ_6cfE2b1pCwdd4-KTbhFjFpP4VSnA,2305
|
|
118
|
+
scadpy/d2/shape/primitives/square.py,sha256=u5f9cZiJQ4PmNS4ft3AxERiKmEDfqxOj-P3juq86nqc,1332
|
|
119
|
+
scadpy/d2/shape/topologies/__init__.py,sha256=KiG9Jzy0uA1i3JOdLKQIB830FaC0I2jN0E7boRVrWPE,1528
|
|
120
|
+
scadpy/d2/shape/topologies/corner/__init__.py,sha256=6amLE67L4Me1FC611Xe2IPkuve1E9BhxpAYzX1W2eFU,696
|
|
121
|
+
scadpy/d2/shape/topologies/corner/are_shape_corners_convex.py,sha256=J0Usv4Jt_73wq-V4UTn2DX6OgrteXiO02hWZKb-x3xA,2253
|
|
122
|
+
scadpy/d2/shape/topologies/corner/get_shape_corner_angles.py,sha256=f-Y5z-5c9TFVHIS9DFb_TU1IWSvzW-o-4sgjd0ikAKM,1744
|
|
123
|
+
scadpy/d2/shape/topologies/corner/get_shape_corner_normals.py,sha256=UrVnoe1RgUkfYybmBvG4puqXzwj_ZlL51fvQQPr7peg,2701
|
|
124
|
+
scadpy/d2/shape/topologies/corner/get_shape_corner_to_incoming_directed_edge.py,sha256=Q-XcdwGK_bnubjW61j-fDE2aG0Lpyb7DAQWXg7dr9xQ,1140
|
|
125
|
+
scadpy/d2/shape/topologies/corner/get_shape_corner_to_outgoing_directed_edge.py,sha256=u8c0nhF0QCywpJgvdlLCmKZbqrCsWkOnCSU_TOhzooE,1140
|
|
126
|
+
scadpy/d2/shape/topologies/corner/get_shape_corner_to_vertex.py,sha256=otTOaXqomk2-n2nUUPFGHBbG-2uAW_btxf7SdKbMBvU,2045
|
|
127
|
+
scadpy/d2/shape/topologies/directed_edge/__init__.py,sha256=mvJRyGlq0XEWxlZYqSenaAk48zWSdFNNPsfhHTocMdU,500
|
|
128
|
+
scadpy/d2/shape/topologies/directed_edge/get_shape_directed_edge_directions.py,sha256=mVtwM37b4w8SD92xo8KohXKkJdFdoZpoSVQvCYUinAg,1209
|
|
129
|
+
scadpy/d2/shape/topologies/directed_edge/get_shape_directed_edge_to_corner.py,sha256=P0oLLsHPD5CpgaXZvUR0zdYsPcG51Vkecrr2z3_ynxQ,1176
|
|
130
|
+
scadpy/d2/shape/topologies/directed_edge/get_shape_directed_edge_to_edge.py,sha256=fTaI-kLwCmiHDNGGIKsixPQUEXapklulwK7W0PLOfws,1481
|
|
131
|
+
scadpy/d2/shape/topologies/directed_edge/get_shape_directed_edge_to_vertex.py,sha256=oYoOY2MTk84r5CQn_kFRLPRUAO7d8oB_awKZmYQ0__w,1696
|
|
132
|
+
scadpy/d2/shape/topologies/edge/__init__.py,sha256=PwtMeEs5ysoMegd_KRzxb1zB6wfT2wcHIrPaZR9HWX8,383
|
|
133
|
+
scadpy/d2/shape/topologies/edge/get_shape_edge_lengths.py,sha256=Ctk3ZDeECfqy7p_gWoOJQBYx6ffAphsboGleN2cgtCo,974
|
|
134
|
+
scadpy/d2/shape/topologies/edge/get_shape_edge_midpoints.py,sha256=Lj_AlFbsbQbwXP5nY9zZDb43z4_n7KtjZuv5WQxq7Yc,1082
|
|
135
|
+
scadpy/d2/shape/topologies/edge/get_shape_edge_normals.py,sha256=C-T6p2mACLx3W7yq0rBAO4f0Ydc4tW0oPo5BjHAj3-A,1005
|
|
136
|
+
scadpy/d2/shape/topologies/edge/get_shape_edge_to_vertex.py,sha256=0pNf9pj_aNF5R0hiJ2P7ctuXPssz2jGPhZkea21fxEc,2121
|
|
137
|
+
scadpy/d2/shape/topologies/ring/__init__.py,sha256=QVH_Yc5v5IX-154gQnPxZQvrdCutRyBubeP1btMFJ7c,187
|
|
138
|
+
scadpy/d2/shape/topologies/ring/get_shape_ring_to_part.py,sha256=w4mmdA8gc5PkCYPU4npR6e2I-pET3O4wlSZjpbsBiCE,1185
|
|
139
|
+
scadpy/d2/shape/topologies/ring/get_shape_ring_types.py,sha256=9kXeyb3erHJN92QMWPuJ3iBwM-3kN1utMvNzZh_Tils,1289
|
|
140
|
+
scadpy/d2/shape/topologies/vertex/__init__.py,sha256=KsS45b-T1EmiQ6v0vFm8bkyBC9jb00TIFnsreyIQbPo,434
|
|
141
|
+
scadpy/d2/shape/topologies/vertex/get_shape_part_vertex_coordinates.py,sha256=slyP1m2V8qkwi6VSjdC499_X5qsCKJhYSxEIo_-eR4c,1810
|
|
142
|
+
scadpy/d2/shape/topologies/vertex/get_shape_vertex_coordinates.py,sha256=wVhMrGUNdgCeEkLPoHXNgbjj1TONFZywhJ3PHrz9fms,1168
|
|
143
|
+
scadpy/d2/shape/topologies/vertex/get_shape_vertex_to_part.py,sha256=Yiv7tRob85glm5OB8ulF-3OJaygW9hszbgdPkVZBEgM,1148
|
|
144
|
+
scadpy/d2/shape/topologies/vertex/get_shape_vertex_to_ring.py,sha256=bs8TS-uS8IZBPIOtghPl1GrNpxOaqc2hVyAkkyQLX-Y,1809
|
|
145
|
+
scadpy/d2/shape/transformations/__init__.py,sha256=Wzfyo08i79pErOoAZ4e7ObdPL0O3kJNQvtP0pgcGbPo,1300
|
|
146
|
+
scadpy/d2/shape/transformations/chamfer_shape.py,sha256=VRVs4qdOgny7GwMzOqmU87svP6JNUEeGKuk9aHBke8Y,9532
|
|
147
|
+
scadpy/d2/shape/transformations/color_shape.py,sha256=w8utzqeV3lEVFWPAqGcmlfwZ0gBLklT0C1osJYQJ-20,1080
|
|
148
|
+
scadpy/d2/shape/transformations/convexify_shape.py,sha256=kGpgAbWK9-AVujzue4r_H2VJ0z6boodWTxfSfcTpnAU,2480
|
|
149
|
+
scadpy/d2/shape/transformations/fill_shape.py,sha256=N4ttXv_FmgC3eXgzS3ue4pDEY5bJ3Qyb72XUu38z3is,1977
|
|
150
|
+
scadpy/d2/shape/transformations/fillet_shape.py,sha256=jLoqhK8NR8kgI2zivKNJ48GmySrDDTQyjQgeIZHdW6E,10833
|
|
151
|
+
scadpy/d2/shape/transformations/grow_shape.py,sha256=e1dCHO3d2jDLuuvt4fTeVG1iuyVYDpST5P0PZQHACgI,2312
|
|
152
|
+
scadpy/d2/shape/transformations/linear_cut_shape.py,sha256=PhuukVMDn4rh_eBz9OQGft5zBi53P3er5u847tAMVpk,3415
|
|
153
|
+
scadpy/d2/shape/transformations/linear_extrude_shape.py,sha256=Vh66fmR9sGadlg3fP9VpnI8Iq0r85TlmXDpo1ErDO9Q,1596
|
|
154
|
+
scadpy/d2/shape/transformations/linear_slice_shape.py,sha256=yQp1tsTIsZvJE2FYVxiMN-AJOmHC74VCqxiTty-tOL4,4559
|
|
155
|
+
scadpy/d2/shape/transformations/mirror_shape.py,sha256=28879tUmnoL5qGr96WlAabVhE8uvd5Q7-xzNDl_BsI8,1519
|
|
156
|
+
scadpy/d2/shape/transformations/pull_shape.py,sha256=bLthR-Kdj9FxWfkXtUtSZAqgmA-O9jQbPCLhRyqVfgQ,2178
|
|
157
|
+
scadpy/d2/shape/transformations/push_shape.py,sha256=eqkAMOkBaoJMG7ElawNiuf17EryXHZP0ee0oedhyfjc,2174
|
|
158
|
+
scadpy/d2/shape/transformations/radial_extrude_shape.py,sha256=fNkEJYpyl3F08j1aaG5I-DnPNGSDLXGoUbjmgh7uwGA,8968
|
|
159
|
+
scadpy/d2/shape/transformations/radial_slice_shape.py,sha256=FkUwFCTY_Q_sj49yM_aSy44w2KT2oRvo6C-SaWN7b_c,3931
|
|
160
|
+
scadpy/d2/shape/transformations/recoordinate_shape.py,sha256=Po_9RAbvmvKxXkS9VIkf37nXnj5eVUMznk_nxF_8HXo,2448
|
|
161
|
+
scadpy/d2/shape/transformations/resize_shape.py,sha256=5oVvvgsdpKRBpiRAHPF9bUlnxXFjUDSP4-y1DiMJGSU,3073
|
|
162
|
+
scadpy/d2/shape/transformations/rotate_shape.py,sha256=aClye1iMu8y1TNOVXpmTZeR4EJDbrgmaQ_qRkYXxKFU,1914
|
|
163
|
+
scadpy/d2/shape/transformations/scale_shape.py,sha256=jMlJQiQV8122KZu2e-YTJtOOL3nz74L6drV3G-ANgnk,1846
|
|
164
|
+
scadpy/d2/shape/transformations/shrink_shape.py,sha256=cPv18R67xFXDCJJwV3Y-IQB2Fwr6H00SU_9xX-Irpbg,1946
|
|
165
|
+
scadpy/d2/shape/transformations/translate_shape.py,sha256=XMRg91pcS3MzTiYlX3M5Js9y3ov0l37fIyScPDsZXlk,1620
|
|
166
|
+
scadpy/d2/shape/types/__init__.py,sha256=kJVYFyLBcqKfmugnGnCeO0RUy8bAR02vwlJdvxUFrTA,46
|
|
167
|
+
scadpy/d2/shape/types/shape.py,sha256=n_LM08ut4OSbuaKcXdhHlzIp2_gNKJZ5oLtkk8aiXWY,23549
|
|
168
|
+
scadpy/d2/shape/types/utils/__init__.py,sha256=V2E8PkQhF1ugu8IreoTexvcDQgwozd1cuL5f2KPm9Tk,163
|
|
169
|
+
scadpy/d2/shape/types/utils/shapely_base_geometry_to_shapely_polygons.py,sha256=_K1dVBYsQnKQR2qYjBiPDU470w5fFZLomfrF84hmhgs,744
|
|
170
|
+
scadpy/d2/shape/utils/__init__.py,sha256=V2E8PkQhF1ugu8IreoTexvcDQgwozd1cuL5f2KPm9Tk,163
|
|
171
|
+
scadpy/d2/shape/utils/shapely_base_geometry_to_shapely_polygons.py,sha256=x9nX1jY1wzm_f0syVFOJV7QsUWGFMscaohXPYDwOKjs,1485
|
|
172
|
+
scadpy/d2/utils/__init__.py,sha256=p23jxTEirI58TVNSS9TLQSq3OvW3XuqwKOCGUdk6qrg,82
|
|
173
|
+
scadpy/d2/utils/resolve_vector_2d.py,sha256=cMMIBem7V8DLtlj02mJF-aznI4G9hpYusBzDVLLXl5s,1440
|
|
174
|
+
scadpy/d3/__init__.py,sha256=0wQd7DNZhgArVOLbSyyrtVbnJnQLqMnPilYpYVHH7Ng,70
|
|
175
|
+
scadpy/d3/solid/__init__.py,sha256=BR4d99FQ1QCMhCkJOTpt95NXMBsuRsRb7aFZlJv34sE,318
|
|
176
|
+
scadpy/d3/solid/combinations/__init__.py,sha256=pxsDj2Ul24uG5o__F38WG0fX-KXLHG7Gi7NboS_Cvow,675
|
|
177
|
+
scadpy/d3/solid/combinations/are_solid_parts_intersecting.py,sha256=JK1P4A8BwydfCSC57MtfjxfXinl243KoLaR1Qd-aYvk,1310
|
|
178
|
+
scadpy/d3/solid/combinations/concat_solid.py,sha256=WD72VyKhssvugTeXLFOwxoFLUdE58Ml4dGU2Jd89GcI,1303
|
|
179
|
+
scadpy/d3/solid/combinations/exclude_solid.py,sha256=-KS5RsBuRyDggayng6TbowavPOmJf-S06CQpa7iXclk,2150
|
|
180
|
+
scadpy/d3/solid/combinations/intersect_solid.py,sha256=1iIcsVaXHQ_j0rVillYFOS58mCeAXy7-B-lg4dsxfkM,1791
|
|
181
|
+
scadpy/d3/solid/combinations/intersect_solid_parts.py,sha256=eV52m9gXZgKAcUD9AELijBTkJg-_EWUsgo07pMdXv14,2567
|
|
182
|
+
scadpy/d3/solid/combinations/subtract_solid.py,sha256=8a80KgNbx5s5yPt9N02hgaEjfa3o0yGRYQ9K-t_NLBs,2144
|
|
183
|
+
scadpy/d3/solid/combinations/subtract_solid_parts.py,sha256=j0yVkzsZIgiDrec9wpusgbdXdy-Xu5dRnBKggB-ljxc,2379
|
|
184
|
+
scadpy/d3/solid/combinations/unify_solid.py,sha256=BBC5r4LHY_PUsqOimWPq_vYi24t8eg6Q0wJTmplKux4,1402
|
|
185
|
+
scadpy/d3/solid/combinations/unify_solid_parts.py,sha256=Q-xPqEvj_uGEtCM2BE33Gvki93D-oeVnqRdsCz-ln34,2489
|
|
186
|
+
scadpy/d3/solid/exporters/__init__.py,sha256=xb4hITyp3gh1ffnG_s7b4_6ZnAbMtWJ8g1DjpZ2OurY,344
|
|
187
|
+
scadpy/d3/solid/exporters/map_solid_to_html.py,sha256=Oe0hbt8Cp4tbsdsab5D7glsSD36ipeUHOK21pEgAXio,12498
|
|
188
|
+
scadpy/d3/solid/exporters/map_solid_to_html_file.py,sha256=798EIO9gXNWT_tHc2tyXyNar6SGRkevdUDVN54zMyGs,1512
|
|
189
|
+
scadpy/d3/solid/exporters/map_solid_to_screen.py,sha256=8hN8OhOb-fYf_z3jek_vhfGQ_5BDUJbuiQYa9XIiGhg,1297
|
|
190
|
+
scadpy/d3/solid/exporters/map_solid_to_stl_file.py,sha256=9oMBipLf1KWpid9j4_eLwPAJnA85Jl9ZjBeihlTDIIM,1172
|
|
191
|
+
scadpy/d3/solid/features/__init__.py,sha256=2pQ2bi3nGob7Aq44VzP-HP3KNse8TyHPFCCz0qkVYEI,323
|
|
192
|
+
scadpy/d3/solid/features/get_solid_bounds.py,sha256=5P1rW-bh9w7Vhvq1WGZ_BreC51jrDfnu1f2Iw-pvwFo,854
|
|
193
|
+
scadpy/d3/solid/features/get_solid_part_bounds.py,sha256=hRjwios1WzitHmpCQrcGpEf3qHHFD-Ms3zn1F1-LGfA,943
|
|
194
|
+
scadpy/d3/solid/features/get_solid_part_colors.py,sha256=aOSKvbeHxl51IF_Gayr6sph1OI7o95k37FJlvSgF77s,888
|
|
195
|
+
scadpy/d3/solid/features/is_solid_empty.py,sha256=zpRgnvRu4pOdOK3aQO9JjBVBQinCNTfgnfaa82WSHIM,693
|
|
196
|
+
scadpy/d3/solid/importers/__init__.py,sha256=n4wE3oi6UxMMF19fqMu_kyzo7p8XiWqDUx6KEYIefJs,341
|
|
197
|
+
scadpy/d3/solid/importers/map_geometries_to_solid.py,sha256=THdFLF-NRavLOtoi3KkoVIS7faA3e6Nq58aXSf6MorE,1056
|
|
198
|
+
scadpy/d3/solid/importers/map_geometry_to_solid.py,sha256=FJZ9CUKtlvWlfbyRFkFCRYaELDb95fzRtLrQH9-Yn1s,1001
|
|
199
|
+
scadpy/d3/solid/importers/map_parts_to_solid.py,sha256=LUYWlTgbjpEdCwo_ZRfUk3C1rFYxmyUBFTzVK_AxaEk,1914
|
|
200
|
+
scadpy/d3/solid/importers/map_stl_to_solid.py,sha256=_zFcJQA1quZKzdDFl0F602fvjTskac40ObXvPpJbSJ4,802
|
|
201
|
+
scadpy/d3/solid/primitives/__init__.py,sha256=1nFbJFPrETNwynYRHQSO8M2N5206QQIiDlkhp_87y3c,209
|
|
202
|
+
scadpy/d3/solid/primitives/cone.py,sha256=AfQAbrHao19sZFMofwNigrY3Dg4tAOLW9hrxPy_XihQ,2122
|
|
203
|
+
scadpy/d3/solid/primitives/cuboid.py,sha256=UNRVLugJo0qxg_XvlOPz_61clX8X4sG_dYr-IOePUIw,2029
|
|
204
|
+
scadpy/d3/solid/primitives/cylinder.py,sha256=pF-FK-CxaBBii31ZeXH31_Ny3adkjh_gwmIzL5B6f8s,2372
|
|
205
|
+
scadpy/d3/solid/primitives/polyhedron.py,sha256=SXtFETKwwPHrqWTFf-wFumJslA_i6sOfMIWmPe8otwA,1846
|
|
206
|
+
scadpy/d3/solid/primitives/sphere.py,sha256=NMboK4URYRpb2LUdOlQ26elGrW4Rh53QSEp_Vo6DRNk,1579
|
|
207
|
+
scadpy/d3/solid/topologies/__init__.py,sha256=qv3JwYooCrzEhc3M0VCCSR2VoCumi_rkMMzpm7FXIKw,245
|
|
208
|
+
scadpy/d3/solid/topologies/triangle/__init__.py,sha256=Q7EpykA_HD49RlvGUlCDXwqkMXNyLlwI2iG0tB9oO9k,122
|
|
209
|
+
scadpy/d3/solid/topologies/triangle/get_solid_triangle_to_vertex.py,sha256=ZLVUAMBSC2YMw-VyBxv5HmczLVJpXNhT2ypKj5afaDA,1285
|
|
210
|
+
scadpy/d3/solid/topologies/vertex/__init__.py,sha256=nZwGYYBq_JQB_MuZ08IvHsMDes4GJVHLBcszX02as_Y,217
|
|
211
|
+
scadpy/d3/solid/topologies/vertex/get_solid_vertex_coordinates.py,sha256=pnY618N95zUWmBLd32tYwNpUOGWKYrNbt9Cg4TKe1d8,940
|
|
212
|
+
scadpy/d3/solid/topologies/vertex/get_solid_vertex_to_part.py,sha256=A1zgcufB6XNlcXwpd0YxLblkYa_8oi4JbYIK7PD_PhA,936
|
|
213
|
+
scadpy/d3/solid/transformations/__init__.py,sha256=GnnG-uPX5JWHjJf9Kc7qL4DdVe-ZTW-MftlseGYRnCI,623
|
|
214
|
+
scadpy/d3/solid/transformations/color_solid.py,sha256=5bZ7FxFgmh4O0g_g-mnlknXkiJmlFfedWsPubms6A78,1080
|
|
215
|
+
scadpy/d3/solid/transformations/convexify_solid.py,sha256=8mL0U7KmuFuRSQSVcu07y_8Y2QsKb1mK4p_WldCMEb4,1932
|
|
216
|
+
scadpy/d3/solid/transformations/mirror_solid.py,sha256=oVgGMM1ioR4eAE2n0Dgfer2PF4wQH6I9QlfGppE_9JI,1535
|
|
217
|
+
scadpy/d3/solid/transformations/pull_solid.py,sha256=IhZGe142IvDkHfGe_vnd_4fnVBrj0OCqvESv_xbyVgs,2177
|
|
218
|
+
scadpy/d3/solid/transformations/push_solid.py,sha256=mitcet2AkgIpccviEB9_x0JAEHOxYE1EUasVCk1y0Es,2173
|
|
219
|
+
scadpy/d3/solid/transformations/recoordinate_solid.py,sha256=pUzBSGaKKozw8pnM3QvpSUxrqOryNlRlHa0CQzmwOBY,1977
|
|
220
|
+
scadpy/d3/solid/transformations/resize_solid.py,sha256=g5DEteJySUKH8ZR5wbcga-b-w9r_gPdy4pcTMNQa0lE,3117
|
|
221
|
+
scadpy/d3/solid/transformations/rotate_solid.py,sha256=vmxWhybNmCCmxmiHxvNw0DeN3-R29sGbCfWy31q3ta0,2948
|
|
222
|
+
scadpy/d3/solid/transformations/scale_solid.py,sha256=hnzc4AykK9b4oGFv6vTqzuIVGy1T2Zolti-eZUzEXCE,1852
|
|
223
|
+
scadpy/d3/solid/transformations/translate_solid.py,sha256=ZEmnzij5PuuNzvLRQkxBEn9HioS6ROWvkPEOCM1Gc9U,1626
|
|
224
|
+
scadpy/d3/solid/types/__init__.py,sha256=8JcKr-9K3uR7_PUBMVqDWC752ZxBwGqOChhgBLLDSY4,46
|
|
225
|
+
scadpy/d3/solid/types/solid.py,sha256=C72lzUD0fHtfbWRjhAKnI-L-oHFonbJThcPeGOH37Tg,13613
|
|
226
|
+
scadpy/d3/utils/__init__.py,sha256=veDz3eh8KyKVtQ7yKaWskxhvg4iZYkKx47gU9z4ZV3I,82
|
|
227
|
+
scadpy/d3/utils/resolve_vector_3d.py,sha256=SHkFSbqvPrJ4U-iRnv1_UAVvAuDWBgzg19xOHdh7Iy8,1434
|
|
228
|
+
scadpy/utils/__init__.py,sha256=yhtvwjbn-YAQDfoLmyYRUeCJxi7KxTagMs4yYhJGDDM,139
|
|
229
|
+
scadpy/utils/resolve_vector.py,sha256=1Cm52cdUr8p8907vR1I55fRyvT8iYcpMMAmxYVugUXI,1894
|
|
230
|
+
scadpy/utils/x.py,sha256=2qmFkDvYf8quWNTe3TE850ydm4zjQkj7SGcTro6uWoI,794
|
|
231
|
+
scadpy/utils/y.py,sha256=2Ik32MRByk5LtFhRLqWyxB5PsXf7S3dgCmSre0_R8_Q,794
|
|
232
|
+
scadpy/utils/z.py,sha256=bJbkZA7vlMtVvgHNaScSe9ovEiSgDCCQlDNtq2DyiBA,794
|
|
233
|
+
scadpy-0.1.0.dist-info/METADATA,sha256=QfsEEMTO1AILY8tVdWf_xFRVPyJMuZzZQlsywjkMrNY,9770
|
|
234
|
+
scadpy-0.1.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
|
|
235
|
+
scadpy-0.1.0.dist-info/licenses/LICENSE.md,sha256=r9ef9LtIVhmhc1DArDlIsYJ2507wsvTDHsAGqkXIsdA,1963
|
|
236
|
+
scadpy-0.1.0.dist-info/RECORD,,
|