Added Shape.position & orientation properties Issue #40

This commit is contained in:
Roger Maitland 2022-10-31 16:11:30 -04:00
parent db05b01c7a
commit 69563e8716
2 changed files with 428 additions and 381 deletions

View file

@ -4,441 +4,444 @@
<!-- Generated by graphviz version 2.43.0 (0)
-->
<!-- Title: classes Pages: 1 -->
<svg width="9110pt" height="1369pt"
viewBox="0.00 0.00 9110.00 1369.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1365)">
<svg width="9110pt" height="1414pt"
viewBox="0.00 0.00 9110.00 1414.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1410)">
<title>classes</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-1365 9106,-1365 9106,4 -4,4"/>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-1410 9106,-1410 9106,4 -4,4"/>
<!-- build123d.direct_api.Axis -->
<g id="node1" class="node">
<title>build123d.direct_api.Axis</title>
<polygon fill="none" stroke="black" points="0,-789 0,-1068 555,-1068 555,-789 0,-789"/>
<text text-anchor="middle" x="277.5" y="-1052.8" font-family="Times,serif" font-size="14.00">Axis</text>
<polyline fill="none" stroke="black" points="0,-1045 555,-1045 "/>
<text text-anchor="start" x="8" y="-1029.8" font-family="Times,serif" font-size="14.00">X</text>
<text text-anchor="start" x="8" y="-1014.8" font-family="Times,serif" font-size="14.00">Y</text>
<text text-anchor="start" x="8" y="-999.8" font-family="Times,serif" font-size="14.00">Z</text>
<text text-anchor="start" x="8" y="-984.8" font-family="Times,serif" font-size="14.00">direction</text>
<text text-anchor="start" x="8" y="-969.8" font-family="Times,serif" font-size="14.00">position</text>
<text text-anchor="start" x="8" y="-954.8" font-family="Times,serif" font-size="14.00">wrapped</text>
<polyline fill="none" stroke="black" points="0,-947 555,-947 "/>
<text text-anchor="start" x="8" y="-931.8" font-family="Times,serif" font-size="14.00">angle_between(other: Axis): float</text>
<text text-anchor="start" x="8" y="-916.8" font-family="Times,serif" font-size="14.00">copy(): Axis</text>
<text text-anchor="start" x="8" y="-901.8" font-family="Times,serif" font-size="14.00">from_occt(cls: gp_Ax1, axis): Axis</text>
<text text-anchor="start" x="8" y="-886.8" font-family="Times,serif" font-size="14.00">is_coaxial(other: Axis, angular_tolerance: float, linear_tolerance: float): bool</text>
<text text-anchor="start" x="8" y="-871.8" font-family="Times,serif" font-size="14.00">is_normal(other: Axis, angular_tolerance: float): bool</text>
<text text-anchor="start" x="8" y="-856.8" font-family="Times,serif" font-size="14.00">is_opposite(other: Axis, angular_tolerance: float): bool</text>
<text text-anchor="start" x="8" y="-841.8" font-family="Times,serif" font-size="14.00">is_parallel(other: Axis, angular_tolerance: float): bool</text>
<text text-anchor="start" x="8" y="-826.8" font-family="Times,serif" font-size="14.00">reversed(): Axis</text>
<text text-anchor="start" x="8" y="-811.8" font-family="Times,serif" font-size="14.00">to_location(): Location</text>
<text text-anchor="start" x="8" y="-796.8" font-family="Times,serif" font-size="14.00">to_plane(): Plane</text>
<polygon fill="none" stroke="black" points="0,-819 0,-1098 555,-1098 555,-819 0,-819"/>
<text text-anchor="middle" x="277.5" y="-1082.8" font-family="Times,serif" font-size="14.00">Axis</text>
<polyline fill="none" stroke="black" points="0,-1075 555,-1075 "/>
<text text-anchor="start" x="8" y="-1059.8" font-family="Times,serif" font-size="14.00">X</text>
<text text-anchor="start" x="8" y="-1044.8" font-family="Times,serif" font-size="14.00">Y</text>
<text text-anchor="start" x="8" y="-1029.8" font-family="Times,serif" font-size="14.00">Z</text>
<text text-anchor="start" x="8" y="-1014.8" font-family="Times,serif" font-size="14.00">direction</text>
<text text-anchor="start" x="8" y="-999.8" font-family="Times,serif" font-size="14.00">position</text>
<text text-anchor="start" x="8" y="-984.8" font-family="Times,serif" font-size="14.00">wrapped</text>
<polyline fill="none" stroke="black" points="0,-977 555,-977 "/>
<text text-anchor="start" x="8" y="-961.8" font-family="Times,serif" font-size="14.00">angle_between(other: Axis): float</text>
<text text-anchor="start" x="8" y="-946.8" font-family="Times,serif" font-size="14.00">copy(): Axis</text>
<text text-anchor="start" x="8" y="-931.8" font-family="Times,serif" font-size="14.00">from_occt(cls: gp_Ax1, axis): Axis</text>
<text text-anchor="start" x="8" y="-916.8" font-family="Times,serif" font-size="14.00">is_coaxial(other: Axis, angular_tolerance: float, linear_tolerance: float): bool</text>
<text text-anchor="start" x="8" y="-901.8" font-family="Times,serif" font-size="14.00">is_normal(other: Axis, angular_tolerance: float): bool</text>
<text text-anchor="start" x="8" y="-886.8" font-family="Times,serif" font-size="14.00">is_opposite(other: Axis, angular_tolerance: float): bool</text>
<text text-anchor="start" x="8" y="-871.8" font-family="Times,serif" font-size="14.00">is_parallel(other: Axis, angular_tolerance: float): bool</text>
<text text-anchor="start" x="8" y="-856.8" font-family="Times,serif" font-size="14.00">reversed(): Axis</text>
<text text-anchor="start" x="8" y="-841.8" font-family="Times,serif" font-size="14.00">to_location(): Location</text>
<text text-anchor="start" x="8" y="-826.8" font-family="Times,serif" font-size="14.00">to_plane(): Plane</text>
</g>
<!-- build123d.direct_api.BoundBox -->
<g id="node2" class="node">
<title>build123d.direct_api.BoundBox</title>
<polygon fill="none" stroke="black" points="656,-90.5 656,-354.5 1241,-354.5 1241,-90.5 656,-90.5"/>
<text text-anchor="middle" x="948.5" y="-339.3" font-family="Times,serif" font-size="14.00">BoundBox</text>
<polyline fill="none" stroke="black" points="656,-331.5 1241,-331.5 "/>
<text text-anchor="start" x="664" y="-316.3" font-family="Times,serif" font-size="14.00">wrapped</text>
<text text-anchor="start" x="664" y="-301.3" font-family="Times,serif" font-size="14.00">xlen</text>
<text text-anchor="start" x="664" y="-286.3" font-family="Times,serif" font-size="14.00">xmax</text>
<text text-anchor="start" x="664" y="-271.3" font-family="Times,serif" font-size="14.00">xmin</text>
<text text-anchor="start" x="664" y="-256.3" font-family="Times,serif" font-size="14.00">ylen</text>
<text text-anchor="start" x="664" y="-241.3" font-family="Times,serif" font-size="14.00">ymax</text>
<text text-anchor="start" x="664" y="-226.3" font-family="Times,serif" font-size="14.00">ymin</text>
<text text-anchor="start" x="664" y="-211.3" font-family="Times,serif" font-size="14.00">zlen</text>
<text text-anchor="start" x="664" y="-196.3" font-family="Times,serif" font-size="14.00">zmax</text>
<text text-anchor="start" x="664" y="-181.3" font-family="Times,serif" font-size="14.00">zmin</text>
<polyline fill="none" stroke="black" points="656,-173.5 1241,-173.5 "/>
<text text-anchor="start" x="664" y="-158.3" font-family="Times,serif" font-size="14.00">add(obj: Union[tuple[float, float, float], Vector, BoundBox], tol: float): BoundBox</text>
<text text-anchor="start" x="664" y="-143.3" font-family="Times,serif" font-size="14.00">center(): Vector</text>
<text text-anchor="start" x="664" y="-128.3" font-family="Times,serif" font-size="14.00">diagonal_length(): float</text>
<text text-anchor="start" x="664" y="-113.3" font-family="Times,serif" font-size="14.00">find_outside_box_2d(bb1: BoundBox, bb2): Optional[BoundBox]</text>
<text text-anchor="start" x="664" y="-98.3" font-family="Times,serif" font-size="14.00">is_inside(b2: BoundBox): bool</text>
<polygon fill="none" stroke="black" points="656,-98 656,-362 1241,-362 1241,-98 656,-98"/>
<text text-anchor="middle" x="948.5" y="-346.8" font-family="Times,serif" font-size="14.00">BoundBox</text>
<polyline fill="none" stroke="black" points="656,-339 1241,-339 "/>
<text text-anchor="start" x="664" y="-323.8" font-family="Times,serif" font-size="14.00">wrapped</text>
<text text-anchor="start" x="664" y="-308.8" font-family="Times,serif" font-size="14.00">xlen</text>
<text text-anchor="start" x="664" y="-293.8" font-family="Times,serif" font-size="14.00">xmax</text>
<text text-anchor="start" x="664" y="-278.8" font-family="Times,serif" font-size="14.00">xmin</text>
<text text-anchor="start" x="664" y="-263.8" font-family="Times,serif" font-size="14.00">ylen</text>
<text text-anchor="start" x="664" y="-248.8" font-family="Times,serif" font-size="14.00">ymax</text>
<text text-anchor="start" x="664" y="-233.8" font-family="Times,serif" font-size="14.00">ymin</text>
<text text-anchor="start" x="664" y="-218.8" font-family="Times,serif" font-size="14.00">zlen</text>
<text text-anchor="start" x="664" y="-203.8" font-family="Times,serif" font-size="14.00">zmax</text>
<text text-anchor="start" x="664" y="-188.8" font-family="Times,serif" font-size="14.00">zmin</text>
<polyline fill="none" stroke="black" points="656,-181 1241,-181 "/>
<text text-anchor="start" x="664" y="-165.8" font-family="Times,serif" font-size="14.00">add(obj: Union[tuple[float, float, float], Vector, BoundBox], tol: float): BoundBox</text>
<text text-anchor="start" x="664" y="-150.8" font-family="Times,serif" font-size="14.00">center(): Vector</text>
<text text-anchor="start" x="664" y="-135.8" font-family="Times,serif" font-size="14.00">diagonal_length(): float</text>
<text text-anchor="start" x="664" y="-120.8" font-family="Times,serif" font-size="14.00">find_outside_box_2d(bb1: BoundBox, bb2): Optional[BoundBox]</text>
<text text-anchor="start" x="664" y="-105.8" font-family="Times,serif" font-size="14.00">is_inside(b2: BoundBox): bool</text>
</g>
<!-- build123d.direct_api.Plane -->
<g id="node10" class="node">
<title>build123d.direct_api.Plane</title>
<polygon fill="none" stroke="black" points="573.5,-691.5 573.5,-1165.5 1037.5,-1165.5 1037.5,-691.5 573.5,-691.5"/>
<text text-anchor="middle" x="805.5" y="-1150.3" font-family="Times,serif" font-size="14.00">Plane</text>
<polyline fill="none" stroke="black" points="573.5,-1142.5 1037.5,-1142.5 "/>
<text text-anchor="start" x="581.5" y="-1127.3" font-family="Times,serif" font-size="14.00">XY</text>
<text text-anchor="start" x="581.5" y="-1112.3" font-family="Times,serif" font-size="14.00">XZ</text>
<text text-anchor="start" x="581.5" y="-1097.3" font-family="Times,serif" font-size="14.00">YX</text>
<text text-anchor="start" x="581.5" y="-1082.3" font-family="Times,serif" font-size="14.00">YZ</text>
<text text-anchor="start" x="581.5" y="-1067.3" font-family="Times,serif" font-size="14.00">ZX</text>
<text text-anchor="start" x="581.5" y="-1052.3" font-family="Times,serif" font-size="14.00">ZY</text>
<text text-anchor="start" x="581.5" y="-1037.3" font-family="Times,serif" font-size="14.00">back</text>
<text text-anchor="start" x="581.5" y="-1022.3" font-family="Times,serif" font-size="14.00">bottom</text>
<text text-anchor="start" x="581.5" y="-1007.3" font-family="Times,serif" font-size="14.00">f_g</text>
<text text-anchor="start" x="581.5" y="-992.3" font-family="Times,serif" font-size="14.00">f_g</text>
<text text-anchor="start" x="581.5" y="-977.3" font-family="Times,serif" font-size="14.00">front</text>
<text text-anchor="start" x="581.5" y="-962.3" font-family="Times,serif" font-size="14.00">lcs</text>
<text text-anchor="start" x="581.5" y="-947.3" font-family="Times,serif" font-size="14.00">lcs</text>
<text text-anchor="start" x="581.5" y="-932.3" font-family="Times,serif" font-size="14.00">left</text>
<text text-anchor="start" x="581.5" y="-917.3" font-family="Times,serif" font-size="14.00">origin</text>
<text text-anchor="start" x="581.5" y="-902.3" font-family="Times,serif" font-size="14.00">origin</text>
<text text-anchor="start" x="581.5" y="-887.3" font-family="Times,serif" font-size="14.00">r_g</text>
<text text-anchor="start" x="581.5" y="-872.3" font-family="Times,serif" font-size="14.00">r_g</text>
<text text-anchor="start" x="581.5" y="-857.3" font-family="Times,serif" font-size="14.00">right</text>
<text text-anchor="start" x="581.5" y="-842.3" font-family="Times,serif" font-size="14.00">top</text>
<text text-anchor="start" x="581.5" y="-827.3" font-family="Times,serif" font-size="14.00">wrapped</text>
<text text-anchor="start" x="581.5" y="-812.3" font-family="Times,serif" font-size="14.00">x_dir</text>
<text text-anchor="start" x="581.5" y="-797.3" font-family="Times,serif" font-size="14.00">y_dir</text>
<text text-anchor="start" x="581.5" y="-782.3" font-family="Times,serif" font-size="14.00">z_dir</text>
<polyline fill="none" stroke="black" points="573.5,-774.5 1037.5,-774.5 "/>
<text text-anchor="start" x="581.5" y="-759.3" font-family="Times,serif" font-size="14.00">from_local_coords(obj: Union[tuple, Vector, Shape, BoundBox])</text>
<text text-anchor="start" x="581.5" y="-744.3" font-family="Times,serif" font-size="14.00">rotated(rotate)</text>
<text text-anchor="start" x="581.5" y="-729.3" font-family="Times,serif" font-size="14.00">set_origin2d(x, y)</text>
<text text-anchor="start" x="581.5" y="-714.3" font-family="Times,serif" font-size="14.00">to_local_coords(obj: Union[VectorLike, Shape, BoundBox])</text>
<text text-anchor="start" x="581.5" y="-699.3" font-family="Times,serif" font-size="14.00">to_location(): Location</text>
<polygon fill="none" stroke="black" points="573.5,-721.5 573.5,-1195.5 1037.5,-1195.5 1037.5,-721.5 573.5,-721.5"/>
<text text-anchor="middle" x="805.5" y="-1180.3" font-family="Times,serif" font-size="14.00">Plane</text>
<polyline fill="none" stroke="black" points="573.5,-1172.5 1037.5,-1172.5 "/>
<text text-anchor="start" x="581.5" y="-1157.3" font-family="Times,serif" font-size="14.00">XY</text>
<text text-anchor="start" x="581.5" y="-1142.3" font-family="Times,serif" font-size="14.00">XZ</text>
<text text-anchor="start" x="581.5" y="-1127.3" font-family="Times,serif" font-size="14.00">YX</text>
<text text-anchor="start" x="581.5" y="-1112.3" font-family="Times,serif" font-size="14.00">YZ</text>
<text text-anchor="start" x="581.5" y="-1097.3" font-family="Times,serif" font-size="14.00">ZX</text>
<text text-anchor="start" x="581.5" y="-1082.3" font-family="Times,serif" font-size="14.00">ZY</text>
<text text-anchor="start" x="581.5" y="-1067.3" font-family="Times,serif" font-size="14.00">back</text>
<text text-anchor="start" x="581.5" y="-1052.3" font-family="Times,serif" font-size="14.00">bottom</text>
<text text-anchor="start" x="581.5" y="-1037.3" font-family="Times,serif" font-size="14.00">f_g</text>
<text text-anchor="start" x="581.5" y="-1022.3" font-family="Times,serif" font-size="14.00">f_g</text>
<text text-anchor="start" x="581.5" y="-1007.3" font-family="Times,serif" font-size="14.00">front</text>
<text text-anchor="start" x="581.5" y="-992.3" font-family="Times,serif" font-size="14.00">lcs</text>
<text text-anchor="start" x="581.5" y="-977.3" font-family="Times,serif" font-size="14.00">lcs</text>
<text text-anchor="start" x="581.5" y="-962.3" font-family="Times,serif" font-size="14.00">left</text>
<text text-anchor="start" x="581.5" y="-947.3" font-family="Times,serif" font-size="14.00">origin</text>
<text text-anchor="start" x="581.5" y="-932.3" font-family="Times,serif" font-size="14.00">origin</text>
<text text-anchor="start" x="581.5" y="-917.3" font-family="Times,serif" font-size="14.00">r_g</text>
<text text-anchor="start" x="581.5" y="-902.3" font-family="Times,serif" font-size="14.00">r_g</text>
<text text-anchor="start" x="581.5" y="-887.3" font-family="Times,serif" font-size="14.00">right</text>
<text text-anchor="start" x="581.5" y="-872.3" font-family="Times,serif" font-size="14.00">top</text>
<text text-anchor="start" x="581.5" y="-857.3" font-family="Times,serif" font-size="14.00">wrapped</text>
<text text-anchor="start" x="581.5" y="-842.3" font-family="Times,serif" font-size="14.00">x_dir</text>
<text text-anchor="start" x="581.5" y="-827.3" font-family="Times,serif" font-size="14.00">y_dir</text>
<text text-anchor="start" x="581.5" y="-812.3" font-family="Times,serif" font-size="14.00">z_dir</text>
<polyline fill="none" stroke="black" points="573.5,-804.5 1037.5,-804.5 "/>
<text text-anchor="start" x="581.5" y="-789.3" font-family="Times,serif" font-size="14.00">from_local_coords(obj: Union[tuple, Vector, Shape, BoundBox])</text>
<text text-anchor="start" x="581.5" y="-774.3" font-family="Times,serif" font-size="14.00">rotated(rotate: VectorLike): Plane</text>
<text text-anchor="start" x="581.5" y="-759.3" font-family="Times,serif" font-size="14.00">set_origin2d(x, y)</text>
<text text-anchor="start" x="581.5" y="-744.3" font-family="Times,serif" font-size="14.00">to_local_coords(obj: Union[VectorLike, Shape, BoundBox])</text>
<text text-anchor="start" x="581.5" y="-729.3" font-family="Times,serif" font-size="14.00">to_location(): Location</text>
</g>
<!-- build123d.direct_api.BoundBox&#45;&gt;build123d.direct_api.Plane -->
<g id="edge13" class="edge">
<title>build123d.direct_api.BoundBox&#45;&gt;build123d.direct_api.Plane</title>
<path fill="none" stroke="black" d="M941.63,-354.53C938.34,-394.37 933.53,-438.15 926.5,-478 914.85,-544.07 898.03,-614.56 880.62,-679.65"/>
<polygon fill="black" stroke="black" points="880.6,-679.73 882.9,-686.56 877.48,-691.32 875.17,-684.48 880.6,-679.73"/>
<text text-anchor="middle" x="954" y="-466.8" font-family="Times,serif" font-size="14.00" fill="green">_origin</text>
<path fill="none" stroke="black" d="M941.91,-362.16C938.62,-404.15 933.73,-450.71 926.5,-493 914.37,-563.95 896.65,-639.91 878.5,-709.41"/>
<polygon fill="black" stroke="black" points="878.39,-709.8 880.74,-716.62 875.34,-721.41 873,-714.59 878.39,-709.8"/>
<text text-anchor="middle" x="954" y="-481.8" font-family="Times,serif" font-size="14.00" fill="green">_origin</text>
</g>
<!-- build123d.direct_api.Compound -->
<g id="node3" class="node">
<title>build123d.direct_api.Compound</title>
<polygon fill="none" stroke="black" points="1534.5,-135 1534.5,-310 2854.5,-310 2854.5,-135 1534.5,-135"/>
<text text-anchor="middle" x="2194.5" y="-294.8" font-family="Times,serif" font-size="14.00">Compound</text>
<polyline fill="none" stroke="black" points="1534.5,-287 2854.5,-287 "/>
<polyline fill="none" stroke="black" points="1534.5,-263 2854.5,-263 "/>
<text text-anchor="start" x="1542.5" y="-247.8" font-family="Times,serif" font-size="14.00">cut(): Compound</text>
<text text-anchor="start" x="1542.5" y="-232.8" font-family="Times,serif" font-size="14.00">fuse(): Compound</text>
<text text-anchor="start" x="1542.5" y="-217.8" font-family="Times,serif" font-size="14.00">get_type(obj_type: Union[Edge, Wire, Face, Solid]): list[Union[Edge, Wire, Face, Solid]]</text>
<text text-anchor="start" x="1542.5" y="-202.8" font-family="Times,serif" font-size="14.00">intersect(): Compound</text>
<text text-anchor="start" x="1542.5" y="-187.8" font-family="Times,serif" font-size="14.00">make_2d_text(cls: str, txt: float, fontsize: str, font: Optional[str], font_path: FontStyle, font_style: Halign, halign: Valign, valign: float, position_on_path: Union[Edge, Wire], text_path): </text>
<text text-anchor="start" x="1542.5" y="-172.8" font-family="Times,serif" font-size="14.00">make_compound(cls: Iterable[Shape], list_of_shapes): Compound</text>
<text text-anchor="start" x="1542.5" y="-157.8" font-family="Times,serif" font-size="14.00">make_text(cls: str, text: float, size: float, height: str, font: str, font_path: FontStyle, kind: Halign, halign: Valign, valign: Plane, position): Compound</text>
<text text-anchor="start" x="1542.5" y="-142.8" font-family="Times,serif" font-size="14.00">remove(shape: Shape): Compound</text>
<polygon fill="none" stroke="black" points="1534.5,-142.5 1534.5,-317.5 2854.5,-317.5 2854.5,-142.5 1534.5,-142.5"/>
<text text-anchor="middle" x="2194.5" y="-302.3" font-family="Times,serif" font-size="14.00">Compound</text>
<polyline fill="none" stroke="black" points="1534.5,-294.5 2854.5,-294.5 "/>
<polyline fill="none" stroke="black" points="1534.5,-270.5 2854.5,-270.5 "/>
<text text-anchor="start" x="1542.5" y="-255.3" font-family="Times,serif" font-size="14.00">cut(): Compound</text>
<text text-anchor="start" x="1542.5" y="-240.3" font-family="Times,serif" font-size="14.00">fuse(): Compound</text>
<text text-anchor="start" x="1542.5" y="-225.3" font-family="Times,serif" font-size="14.00">get_type(obj_type: Union[Edge, Wire, Face, Solid]): list[Union[Edge, Wire, Face, Solid]]</text>
<text text-anchor="start" x="1542.5" y="-210.3" font-family="Times,serif" font-size="14.00">intersect(): Compound</text>
<text text-anchor="start" x="1542.5" y="-195.3" font-family="Times,serif" font-size="14.00">make_2d_text(cls: str, txt: float, fontsize: str, font: Optional[str], font_path: FontStyle, font_style: Halign, halign: Valign, valign: float, position_on_path: Union[Edge, Wire], text_path): </text>
<text text-anchor="start" x="1542.5" y="-180.3" font-family="Times,serif" font-size="14.00">make_compound(cls: Iterable[Shape], list_of_shapes): Compound</text>
<text text-anchor="start" x="1542.5" y="-165.3" font-family="Times,serif" font-size="14.00">make_text(cls: str, text: float, size: float, height: str, font: str, font_path: FontStyle, kind: Halign, halign: Valign, valign: Plane, position): Compound</text>
<text text-anchor="start" x="1542.5" y="-150.3" font-family="Times,serif" font-size="14.00">remove(shape: Shape): Compound</text>
</g>
<!-- build123d.direct_api.Mixin3D -->
<g id="node9" class="node">
<title>build123d.direct_api.Mixin3D</title>
<polygon fill="none" stroke="black" points="2532.5,-863.5 2532.5,-993.5 3548.5,-993.5 3548.5,-863.5 2532.5,-863.5"/>
<text text-anchor="middle" x="3040.5" y="-978.3" font-family="Times,serif" font-size="14.00">Mixin3D</text>
<polyline fill="none" stroke="black" points="2532.5,-970.5 3548.5,-970.5 "/>
<polyline fill="none" stroke="black" points="2532.5,-946.5 3548.5,-946.5 "/>
<text text-anchor="start" x="2540.5" y="-931.3" font-family="Times,serif" font-size="14.00">chamfer(length: float, length2: Optional[float], edge_list: Iterable[Edge])</text>
<text text-anchor="start" x="2540.5" y="-916.3" font-family="Times,serif" font-size="14.00">dprism(basis: Optional[Face], bounds: list[Union[Face, Wire]], depth: float, taper: float, up_to_face: Face, thru_all: bool, additive: bool): Solid</text>
<text text-anchor="start" x="2540.5" y="-901.3" font-family="Times,serif" font-size="14.00">fillet(radius: float, edge_list: Iterable[Edge])</text>
<text text-anchor="start" x="2540.5" y="-886.3" font-family="Times,serif" font-size="14.00">is_inside(point: VectorLike, tolerance: float): bool</text>
<text text-anchor="start" x="2540.5" y="-871.3" font-family="Times,serif" font-size="14.00">shell(face_list: Optional[Iterable[Face]], thickness: float, tolerance: float, kind: Kind): Solid</text>
<polygon fill="none" stroke="black" points="2532.5,-893.5 2532.5,-1023.5 3548.5,-1023.5 3548.5,-893.5 2532.5,-893.5"/>
<text text-anchor="middle" x="3040.5" y="-1008.3" font-family="Times,serif" font-size="14.00">Mixin3D</text>
<polyline fill="none" stroke="black" points="2532.5,-1000.5 3548.5,-1000.5 "/>
<polyline fill="none" stroke="black" points="2532.5,-976.5 3548.5,-976.5 "/>
<text text-anchor="start" x="2540.5" y="-961.3" font-family="Times,serif" font-size="14.00">chamfer(length: float, length2: Optional[float], edge_list: Iterable[Edge])</text>
<text text-anchor="start" x="2540.5" y="-946.3" font-family="Times,serif" font-size="14.00">dprism(basis: Optional[Face], bounds: list[Union[Face, Wire]], depth: float, taper: float, up_to_face: Face, thru_all: bool, additive: bool): Solid</text>
<text text-anchor="start" x="2540.5" y="-931.3" font-family="Times,serif" font-size="14.00">fillet(radius: float, edge_list: Iterable[Edge])</text>
<text text-anchor="start" x="2540.5" y="-916.3" font-family="Times,serif" font-size="14.00">is_inside(point: VectorLike, tolerance: float): bool</text>
<text text-anchor="start" x="2540.5" y="-901.3" font-family="Times,serif" font-size="14.00">shell(face_list: Optional[Iterable[Face]], thickness: float, tolerance: float, kind: Kind): Solid</text>
</g>
<!-- build123d.direct_api.Compound&#45;&gt;build123d.direct_api.Mixin3D -->
<g id="edge1" class="edge">
<title>build123d.direct_api.Compound&#45;&gt;build123d.direct_api.Mixin3D</title>
<path fill="none" stroke="black" d="M2298.66,-310.18C2468.05,-451.13 2799.92,-727.3 2955.81,-857.02"/>
<polygon fill="none" stroke="black" points="2953.63,-859.76 2963.55,-863.47 2958.1,-854.38 2953.63,-859.76"/>
<path fill="none" stroke="black" d="M2295.29,-317.55C2464.4,-462.78 2802.06,-752.74 2958.03,-886.68"/>
<polygon fill="none" stroke="black" points="2955.9,-889.46 2965.77,-893.32 2960.46,-884.15 2955.9,-889.46"/>
</g>
<!-- build123d.direct_api.Shape -->
<g id="node12" class="node">
<title>build123d.direct_api.Shape</title>
<polygon fill="none" stroke="black" points="4921,-496.5 4921,-1360.5 6026,-1360.5 6026,-496.5 4921,-496.5"/>
<text text-anchor="middle" x="5473.5" y="-1345.3" font-family="Times,serif" font-size="14.00">Shape</text>
<polyline fill="none" stroke="black" points="4921,-1337.5 6026,-1337.5 "/>
<text text-anchor="start" x="4929" y="-1322.3" font-family="Times,serif" font-size="14.00">for_construction : bool</text>
<text text-anchor="start" x="4929" y="-1307.3" font-family="Times,serif" font-size="14.00">label : str</text>
<text text-anchor="start" x="4929" y="-1292.3" font-family="Times,serif" font-size="14.00">wrapped</text>
<polyline fill="none" stroke="black" points="4921,-1284.5 6026,-1284.5 "/>
<text text-anchor="start" x="4929" y="-1269.3" font-family="Times,serif" font-size="14.00">area(): float</text>
<text text-anchor="start" x="4929" y="-1254.3" font-family="Times,serif" font-size="14.00">bounding_box(tolerance: float): BoundBox</text>
<text text-anchor="start" x="4929" y="-1239.3" font-family="Times,serif" font-size="14.00">cast(cls: TopoDS_Shape, obj: bool, for_construction): Shape</text>
<text text-anchor="start" x="4929" y="-1224.3" font-family="Times,serif" font-size="14.00">clean(): Shape</text>
<text text-anchor="start" x="4929" y="-1209.3" font-family="Times,serif" font-size="14.00">combined_center(objects: CenterOf, center_of): Vector</text>
<text text-anchor="start" x="4929" y="-1194.3" font-family="Times,serif" font-size="14.00">compounds(): ShapeList[&#39;Compound&#39;]</text>
<text text-anchor="start" x="4929" y="-1179.3" font-family="Times,serif" font-size="14.00">compute_mass(obj): float</text>
<text text-anchor="start" x="4929" y="-1164.3" font-family="Times,serif" font-size="14.00">copy(): Shape</text>
<text text-anchor="start" x="4929" y="-1149.3" font-family="Times,serif" font-size="14.00">cut(): Shape</text>
<text text-anchor="start" x="4929" y="-1134.3" font-family="Times,serif" font-size="14.00">distance(other: Shape): float</text>
<text text-anchor="start" x="4929" y="-1119.3" font-family="Times,serif" font-size="14.00">distances(): Iterator[float]</text>
<text text-anchor="start" x="4929" y="-1104.3" font-family="Times,serif" font-size="14.00">edges(): ShapeList[&#39;Edge&#39;]</text>
<text text-anchor="start" x="4929" y="-1089.3" font-family="Times,serif" font-size="14.00">export_brep(f: Union[str, BytesIO]): bool</text>
<text text-anchor="start" x="4929" y="-1074.3" font-family="Times,serif" font-size="14.00">export_step(file_name: str): IFSelect_ReturnStatus</text>
<text text-anchor="start" x="4929" y="-1059.3" font-family="Times,serif" font-size="14.00">export_stl(file_name: str, tolerance: float, angular_tolerance: float, ascii: bool): bool</text>
<text text-anchor="start" x="4929" y="-1044.3" font-family="Times,serif" font-size="14.00">faces(): ShapeList[&#39;Face&#39;]</text>
<text text-anchor="start" x="4929" y="-1029.3" font-family="Times,serif" font-size="14.00">faces_intersected_by_line(point: VectorLike, axis: VectorLike, tol: float, direction: Direction): ShapeList[Face]</text>
<text text-anchor="start" x="4929" y="-1014.3" font-family="Times,serif" font-size="14.00">find_intersection(point: Vector, direction: Vector): list[tuple[Vector, Vector]]</text>
<text text-anchor="start" x="4929" y="-999.3" font-family="Times,serif" font-size="14.00">fix(): Shape</text>
<text text-anchor="start" x="4929" y="-984.3" font-family="Times,serif" font-size="14.00">fuse(): Shape</text>
<text text-anchor="start" x="4929" y="-969.3" font-family="Times,serif" font-size="14.00">geom_type(): Geoms</text>
<text text-anchor="start" x="4929" y="-954.3" font-family="Times,serif" font-size="14.00">hash_code(): int</text>
<text text-anchor="start" x="4929" y="-939.3" font-family="Times,serif" font-size="14.00">import_brep(cls: Union[str, BytesIO], f): Shape</text>
<text text-anchor="start" x="4929" y="-924.3" font-family="Times,serif" font-size="14.00">intersect(): Shape</text>
<text text-anchor="start" x="4929" y="-909.3" font-family="Times,serif" font-size="14.00">is_equal(other: Shape): bool</text>
<text text-anchor="start" x="4929" y="-894.3" font-family="Times,serif" font-size="14.00">is_null(): bool</text>
<text text-anchor="start" x="4929" y="-879.3" font-family="Times,serif" font-size="14.00">is_same(other: Shape): bool</text>
<text text-anchor="start" x="4929" y="-864.3" font-family="Times,serif" font-size="14.00">is_valid(): bool</text>
<text text-anchor="start" x="4929" y="-849.3" font-family="Times,serif" font-size="14.00">locate(loc: Location): Shape</text>
<text text-anchor="start" x="4929" y="-834.3" font-family="Times,serif" font-size="14.00">located(loc: Location): Shape</text>
<text text-anchor="start" x="4929" y="-819.3" font-family="Times,serif" font-size="14.00">location(): Location</text>
<text text-anchor="start" x="4929" y="-804.3" font-family="Times,serif" font-size="14.00">max_fillet(edge_list: Iterable[Edge], tolerance, max_iterations: int): float</text>
<text text-anchor="start" x="4929" y="-789.3" font-family="Times,serif" font-size="14.00">mesh(tolerance: float, angular_tolerance: float)</text>
<text text-anchor="start" x="4929" y="-774.3" font-family="Times,serif" font-size="14.00">mirror(mirror_plane: Plane): Shape</text>
<text text-anchor="start" x="4929" y="-759.3" font-family="Times,serif" font-size="14.00">move(loc: Location): Shape</text>
<text text-anchor="start" x="4929" y="-744.3" font-family="Times,serif" font-size="14.00">moved(loc: Location): Shape</text>
<text text-anchor="start" x="4929" y="-729.3" font-family="Times,serif" font-size="14.00">project_text(txt: str, fontsize: float, depth: float, path: Union[Wire, Edge], font: str, font_path: str, kind: FontStyle, valign: Valign, start: float): Compound</text>
<text text-anchor="start" x="4929" y="-714.3" font-family="Times,serif" font-size="14.00">rotate(axis: Axis, angle: float): Shape</text>
<text text-anchor="start" x="4929" y="-699.3" font-family="Times,serif" font-size="14.00">scale(factor: float): Shape</text>
<text text-anchor="start" x="4929" y="-684.3" font-family="Times,serif" font-size="14.00">shape_type(): Shapes</text>
<text text-anchor="start" x="4929" y="-669.3" font-family="Times,serif" font-size="14.00">shells(): ShapeList[&#39;Shell&#39;]</text>
<text text-anchor="start" x="4929" y="-654.3" font-family="Times,serif" font-size="14.00">solids(): ShapeList[&#39;Solid&#39;]</text>
<text text-anchor="start" x="4929" y="-639.3" font-family="Times,serif" font-size="14.00">split(): Shape</text>
<text text-anchor="start" x="4929" y="-624.3" font-family="Times,serif" font-size="14.00">tessellate(tolerance: float, angular_tolerance: float): Tuple[list[Vector], list[Tuple[int, int, int]]]</text>
<text text-anchor="start" x="4929" y="-609.3" font-family="Times,serif" font-size="14.00">to_vtk_poly_data(tolerance: float, angular_tolerance: float, normals: bool): vtkPolyData</text>
<text text-anchor="start" x="4929" y="-594.3" font-family="Times,serif" font-size="14.00">transform_geometry(t_matrix: Matrix): Shape</text>
<text text-anchor="start" x="4929" y="-579.3" font-family="Times,serif" font-size="14.00">transform_shape(t_matrix: Matrix): Shape</text>
<text text-anchor="start" x="4929" y="-564.3" font-family="Times,serif" font-size="14.00">transformed(rotate: VectorLike, offset: VectorLike): Shape</text>
<text text-anchor="start" x="4929" y="-549.3" font-family="Times,serif" font-size="14.00">translate(vector: VectorLike): Shape</text>
<text text-anchor="start" x="4929" y="-534.3" font-family="Times,serif" font-size="14.00">vertices(): ShapeList[&#39;Vertex&#39;]</text>
<text text-anchor="start" x="4929" y="-519.3" font-family="Times,serif" font-size="14.00">volume(): float</text>
<text text-anchor="start" x="4929" y="-504.3" font-family="Times,serif" font-size="14.00">wires(): ShapeList[&#39;Wire&#39;]</text>
<polygon fill="none" stroke="black" points="4921,-511.5 4921,-1405.5 6026,-1405.5 6026,-511.5 4921,-511.5"/>
<text text-anchor="middle" x="5473.5" y="-1390.3" font-family="Times,serif" font-size="14.00">Shape</text>
<polyline fill="none" stroke="black" points="4921,-1382.5 6026,-1382.5 "/>
<text text-anchor="start" x="4929" y="-1367.3" font-family="Times,serif" font-size="14.00">for_construction : bool</text>
<text text-anchor="start" x="4929" y="-1352.3" font-family="Times,serif" font-size="14.00">label : str</text>
<text text-anchor="start" x="4929" y="-1337.3" font-family="Times,serif" font-size="14.00">orientation</text>
<text text-anchor="start" x="4929" y="-1322.3" font-family="Times,serif" font-size="14.00">position</text>
<text text-anchor="start" x="4929" y="-1307.3" font-family="Times,serif" font-size="14.00">wrapped</text>
<polyline fill="none" stroke="black" points="4921,-1299.5 6026,-1299.5 "/>
<text text-anchor="start" x="4929" y="-1284.3" font-family="Times,serif" font-size="14.00">area(): float</text>
<text text-anchor="start" x="4929" y="-1269.3" font-family="Times,serif" font-size="14.00">bounding_box(tolerance: float): BoundBox</text>
<text text-anchor="start" x="4929" y="-1254.3" font-family="Times,serif" font-size="14.00">cast(cls: TopoDS_Shape, obj: bool, for_construction): Shape</text>
<text text-anchor="start" x="4929" y="-1239.3" font-family="Times,serif" font-size="14.00">clean(): Shape</text>
<text text-anchor="start" x="4929" y="-1224.3" font-family="Times,serif" font-size="14.00">combined_center(objects: CenterOf, center_of): Vector</text>
<text text-anchor="start" x="4929" y="-1209.3" font-family="Times,serif" font-size="14.00">compounds(): ShapeList[&#39;Compound&#39;]</text>
<text text-anchor="start" x="4929" y="-1194.3" font-family="Times,serif" font-size="14.00">compute_mass(obj): float</text>
<text text-anchor="start" x="4929" y="-1179.3" font-family="Times,serif" font-size="14.00">copy(): Shape</text>
<text text-anchor="start" x="4929" y="-1164.3" font-family="Times,serif" font-size="14.00">cut(): Shape</text>
<text text-anchor="start" x="4929" y="-1149.3" font-family="Times,serif" font-size="14.00">distance(other: Shape): float</text>
<text text-anchor="start" x="4929" y="-1134.3" font-family="Times,serif" font-size="14.00">distances(): Iterator[float]</text>
<text text-anchor="start" x="4929" y="-1119.3" font-family="Times,serif" font-size="14.00">edges(): ShapeList[&#39;Edge&#39;]</text>
<text text-anchor="start" x="4929" y="-1104.3" font-family="Times,serif" font-size="14.00">export_brep(f: Union[str, BytesIO]): bool</text>
<text text-anchor="start" x="4929" y="-1089.3" font-family="Times,serif" font-size="14.00">export_step(file_name: str): IFSelect_ReturnStatus</text>
<text text-anchor="start" x="4929" y="-1074.3" font-family="Times,serif" font-size="14.00">export_stl(file_name: str, tolerance: float, angular_tolerance: float, ascii: bool): bool</text>
<text text-anchor="start" x="4929" y="-1059.3" font-family="Times,serif" font-size="14.00">faces(): ShapeList[&#39;Face&#39;]</text>
<text text-anchor="start" x="4929" y="-1044.3" font-family="Times,serif" font-size="14.00">faces_intersected_by_line(point: VectorLike, axis: VectorLike, tol: float, direction: Direction): ShapeList[Face]</text>
<text text-anchor="start" x="4929" y="-1029.3" font-family="Times,serif" font-size="14.00">find_intersection(point: VectorLike, direction: VectorLike): list[tuple[Vector, Vector]]</text>
<text text-anchor="start" x="4929" y="-1014.3" font-family="Times,serif" font-size="14.00">fix(): Shape</text>
<text text-anchor="start" x="4929" y="-999.3" font-family="Times,serif" font-size="14.00">fuse(): Shape</text>
<text text-anchor="start" x="4929" y="-984.3" font-family="Times,serif" font-size="14.00">geom_type(): Geoms</text>
<text text-anchor="start" x="4929" y="-969.3" font-family="Times,serif" font-size="14.00">hash_code(): int</text>
<text text-anchor="start" x="4929" y="-954.3" font-family="Times,serif" font-size="14.00">import_brep(cls: Union[str, BytesIO], f): Shape</text>
<text text-anchor="start" x="4929" y="-939.3" font-family="Times,serif" font-size="14.00">intersect(): Shape</text>
<text text-anchor="start" x="4929" y="-924.3" font-family="Times,serif" font-size="14.00">is_equal(other: Shape): bool</text>
<text text-anchor="start" x="4929" y="-909.3" font-family="Times,serif" font-size="14.00">is_null(): bool</text>
<text text-anchor="start" x="4929" y="-894.3" font-family="Times,serif" font-size="14.00">is_same(other: Shape): bool</text>
<text text-anchor="start" x="4929" y="-879.3" font-family="Times,serif" font-size="14.00">is_valid(): bool</text>
<text text-anchor="start" x="4929" y="-864.3" font-family="Times,serif" font-size="14.00">locate(loc: Location): Shape</text>
<text text-anchor="start" x="4929" y="-849.3" font-family="Times,serif" font-size="14.00">located(loc: Location): Shape</text>
<text text-anchor="start" x="4929" y="-834.3" font-family="Times,serif" font-size="14.00">location(): Location</text>
<text text-anchor="start" x="4929" y="-819.3" font-family="Times,serif" font-size="14.00">max_fillet(edge_list: Iterable[Edge], tolerance, max_iterations: int): float</text>
<text text-anchor="start" x="4929" y="-804.3" font-family="Times,serif" font-size="14.00">mesh(tolerance: float, angular_tolerance: float)</text>
<text text-anchor="start" x="4929" y="-789.3" font-family="Times,serif" font-size="14.00">mirror(mirror_plane: Plane): Shape</text>
<text text-anchor="start" x="4929" y="-774.3" font-family="Times,serif" font-size="14.00">move(loc: Location): Shape</text>
<text text-anchor="start" x="4929" y="-759.3" font-family="Times,serif" font-size="14.00">moved(loc: Location): Shape</text>
<text text-anchor="start" x="4929" y="-744.3" font-family="Times,serif" font-size="14.00">project_text(txt: str, fontsize: float, depth: float, path: Union[Wire, Edge], font: str, font_path: str, kind: FontStyle, valign: Valign, start: float): Compound</text>
<text text-anchor="start" x="4929" y="-729.3" font-family="Times,serif" font-size="14.00">rotate(axis: Axis, angle: float): Shape</text>
<text text-anchor="start" x="4929" y="-714.3" font-family="Times,serif" font-size="14.00">scale(factor: float): Shape</text>
<text text-anchor="start" x="4929" y="-699.3" font-family="Times,serif" font-size="14.00">shape_type(): Shapes</text>
<text text-anchor="start" x="4929" y="-684.3" font-family="Times,serif" font-size="14.00">shells(): ShapeList[&#39;Shell&#39;]</text>
<text text-anchor="start" x="4929" y="-669.3" font-family="Times,serif" font-size="14.00">solids(): ShapeList[&#39;Solid&#39;]</text>
<text text-anchor="start" x="4929" y="-654.3" font-family="Times,serif" font-size="14.00">split(): Shape</text>
<text text-anchor="start" x="4929" y="-639.3" font-family="Times,serif" font-size="14.00">tessellate(tolerance: float, angular_tolerance: float): Tuple[list[Vector], list[Tuple[int, int, int]]]</text>
<text text-anchor="start" x="4929" y="-624.3" font-family="Times,serif" font-size="14.00">to_vtk_poly_data(tolerance: float, angular_tolerance: float, normals: bool): vtkPolyData</text>
<text text-anchor="start" x="4929" y="-609.3" font-family="Times,serif" font-size="14.00">transform_geometry(t_matrix: Matrix): Shape</text>
<text text-anchor="start" x="4929" y="-594.3" font-family="Times,serif" font-size="14.00">transform_shape(t_matrix: Matrix): Shape</text>
<text text-anchor="start" x="4929" y="-579.3" font-family="Times,serif" font-size="14.00">transformed(rotate: VectorLike, offset: VectorLike): Shape</text>
<text text-anchor="start" x="4929" y="-564.3" font-family="Times,serif" font-size="14.00">translate(vector: VectorLike): Shape</text>
<text text-anchor="start" x="4929" y="-549.3" font-family="Times,serif" font-size="14.00">vertices(): ShapeList[&#39;Vertex&#39;]</text>
<text text-anchor="start" x="4929" y="-534.3" font-family="Times,serif" font-size="14.00">volume(): float</text>
<text text-anchor="start" x="4929" y="-519.3" font-family="Times,serif" font-size="14.00">wires(): ShapeList[&#39;Wire&#39;]</text>
</g>
<!-- build123d.direct_api.Compound&#45;&gt;build123d.direct_api.Shape -->
<g id="edge2" class="edge">
<title>build123d.direct_api.Compound&#45;&gt;build123d.direct_api.Shape</title>
<path fill="none" stroke="black" d="M2410.42,-310.06C2539.72,-358.07 2708.56,-414.15 2863.5,-445 3166.82,-505.4 3251.58,-450.57 3557.5,-496 4017.6,-564.33 4531.42,-682.37 4911.05,-777.73"/>
<polygon fill="none" stroke="black" points="4910.28,-781.15 4920.83,-780.19 4911.99,-774.36 4910.28,-781.15"/>
<path fill="none" stroke="black" d="M2402.32,-317.58C2532.49,-367.91 2705.04,-427.62 2863.5,-460 3166.51,-521.92 3251.75,-464.43 3557.5,-511 4018.02,-581.14 4531.67,-703.28 4911.13,-802.1"/>
<polygon fill="none" stroke="black" points="4910.36,-805.51 4920.92,-804.65 4912.12,-798.74 4910.36,-805.51"/>
</g>
<!-- build123d.direct_api.Edge -->
<g id="node4" class="node">
<title>build123d.direct_api.Edge</title>
<polygon fill="none" stroke="black" points="5952.5,-105 5952.5,-340 7172.5,-340 7172.5,-105 5952.5,-105"/>
<text text-anchor="middle" x="6562.5" y="-324.8" font-family="Times,serif" font-size="14.00">Edge</text>
<polyline fill="none" stroke="black" points="5952.5,-317 7172.5,-317 "/>
<polyline fill="none" stroke="black" points="5952.5,-293 7172.5,-293 "/>
<text text-anchor="start" x="5960.5" y="-277.8" font-family="Times,serif" font-size="14.00">arc_center(): Vector</text>
<text text-anchor="start" x="5960.5" y="-262.8" font-family="Times,serif" font-size="14.00">close(): Union[Edge, Wire]</text>
<text text-anchor="start" x="5960.5" y="-247.8" font-family="Times,serif" font-size="14.00">distribute_locations(count: int, start: float, stop: float, positions_only: bool): list[Location]</text>
<text text-anchor="start" x="5960.5" y="-232.8" font-family="Times,serif" font-size="14.00">make_circle(cls: float, radius: VectorLike, pnt: VectorLike, dir: float, angle1: float, angle2, orientation): Edge</text>
<text text-anchor="start" x="5960.5" y="-217.8" font-family="Times,serif" font-size="14.00">make_ellipse(cls: float, x_radius: float, y_radius: VectorLike, pnt: VectorLike, dir: VectorLike, xdir: float, angle1: float, angle2: AngularDirection, angular_direction): Edge</text>
<text text-anchor="start" x="5960.5" y="-202.8" font-family="Times,serif" font-size="14.00">make_line(cls: VectorLike, v1: VectorLike, v2): Edge</text>
<text text-anchor="start" x="5960.5" y="-187.8" font-family="Times,serif" font-size="14.00">make_spline(cls: list[VectorLike], points: list[VectorLike], tangents: bool, periodic: list[float], parameters: bool, scale: float, tol): Edge</text>
<text text-anchor="start" x="5960.5" y="-172.8" font-family="Times,serif" font-size="14.00">make_spline_approx(cls: list[VectorLike], points: float, tol: Tuple[float, float, float], smoothing: int, min_deg: int, max_deg): Edge</text>
<text text-anchor="start" x="5960.5" y="-157.8" font-family="Times,serif" font-size="14.00">make_tangent_arc(cls: VectorLike, start: VectorLike, tangent: VectorLike, end): Edge</text>
<text text-anchor="start" x="5960.5" y="-142.8" font-family="Times,serif" font-size="14.00">make_three_point_arc(cls: VectorLike, v1: VectorLike, v2: VectorLike, v3): Edge</text>
<text text-anchor="start" x="5960.5" y="-127.8" font-family="Times,serif" font-size="14.00">project_to_shape(target_object: Shape, direction: VectorLike, center: VectorLike): list[Edge]</text>
<text text-anchor="start" x="5960.5" y="-112.8" font-family="Times,serif" font-size="14.00">to_wire(): Wire</text>
<polygon fill="none" stroke="black" points="5952.5,-112.5 5952.5,-347.5 7172.5,-347.5 7172.5,-112.5 5952.5,-112.5"/>
<text text-anchor="middle" x="6562.5" y="-332.3" font-family="Times,serif" font-size="14.00">Edge</text>
<polyline fill="none" stroke="black" points="5952.5,-324.5 7172.5,-324.5 "/>
<polyline fill="none" stroke="black" points="5952.5,-300.5 7172.5,-300.5 "/>
<text text-anchor="start" x="5960.5" y="-285.3" font-family="Times,serif" font-size="14.00">arc_center(): Vector</text>
<text text-anchor="start" x="5960.5" y="-270.3" font-family="Times,serif" font-size="14.00">close(): Union[Edge, Wire]</text>
<text text-anchor="start" x="5960.5" y="-255.3" font-family="Times,serif" font-size="14.00">distribute_locations(count: int, start: float, stop: float, positions_only: bool): list[Location]</text>
<text text-anchor="start" x="5960.5" y="-240.3" font-family="Times,serif" font-size="14.00">make_circle(cls: float, radius: VectorLike, pnt: VectorLike, dir: float, angle1: float, angle2, orientation): Edge</text>
<text text-anchor="start" x="5960.5" y="-225.3" font-family="Times,serif" font-size="14.00">make_ellipse(cls: float, x_radius: float, y_radius: VectorLike, pnt: VectorLike, dir: VectorLike, xdir: float, angle1: float, angle2: AngularDirection, angular_direction): Edge</text>
<text text-anchor="start" x="5960.5" y="-210.3" font-family="Times,serif" font-size="14.00">make_line(cls: VectorLike, v1: VectorLike, v2): Edge</text>
<text text-anchor="start" x="5960.5" y="-195.3" font-family="Times,serif" font-size="14.00">make_spline(cls: list[VectorLike], points: list[VectorLike], tangents: bool, periodic: list[float], parameters: bool, scale: float, tol): Edge</text>
<text text-anchor="start" x="5960.5" y="-180.3" font-family="Times,serif" font-size="14.00">make_spline_approx(cls: list[VectorLike], points: float, tol: Tuple[float, float, float], smoothing: int, min_deg: int, max_deg): Edge</text>
<text text-anchor="start" x="5960.5" y="-165.3" font-family="Times,serif" font-size="14.00">make_tangent_arc(cls: VectorLike, start: VectorLike, tangent: VectorLike, end): Edge</text>
<text text-anchor="start" x="5960.5" y="-150.3" font-family="Times,serif" font-size="14.00">make_three_point_arc(cls: VectorLike, v1: VectorLike, v2: VectorLike, v3): Edge</text>
<text text-anchor="start" x="5960.5" y="-135.3" font-family="Times,serif" font-size="14.00">project_to_shape(target_object: Shape, direction: VectorLike, center: VectorLike): list[Edge]</text>
<text text-anchor="start" x="5960.5" y="-120.3" font-family="Times,serif" font-size="14.00">to_wire(): Wire</text>
</g>
<!-- build123d.direct_api.Mixin1D -->
<g id="node8" class="node">
<title>build123d.direct_api.Mixin1D</title>
<polygon fill="none" stroke="black" points="6656,-796 6656,-1061 7507,-1061 7507,-796 6656,-796"/>
<text text-anchor="middle" x="7081.5" y="-1045.8" font-family="Times,serif" font-size="14.00">Mixin1D</text>
<polyline fill="none" stroke="black" points="6656,-1038 7507,-1038 "/>
<polyline fill="none" stroke="black" points="6656,-1014 7507,-1014 "/>
<text text-anchor="start" x="6664" y="-998.8" font-family="Times,serif" font-size="14.00">center(center_of: CenterOf): Vector</text>
<text text-anchor="start" x="6664" y="-983.8" font-family="Times,serif" font-size="14.00">end_point(): Vector</text>
<text text-anchor="start" x="6664" y="-968.8" font-family="Times,serif" font-size="14.00">is_closed(): bool</text>
<text text-anchor="start" x="6664" y="-953.8" font-family="Times,serif" font-size="14.00">length(): float</text>
<text text-anchor="start" x="6664" y="-938.8" font-family="Times,serif" font-size="14.00">location_at(distance: float, position_mode: PositionMode, frame_method: FrameMethod, planar: bool): Location</text>
<text text-anchor="start" x="6664" y="-923.8" font-family="Times,serif" font-size="14.00">locations(ds: Iterable[float], position_mode: PositionMode, frame_method: FrameMethod, planar: bool): list[Location]</text>
<text text-anchor="start" x="6664" y="-908.8" font-family="Times,serif" font-size="14.00">normal(): Vector</text>
<text text-anchor="start" x="6664" y="-893.8" font-family="Times,serif" font-size="14.00">param_at(d: float): float</text>
<text text-anchor="start" x="6664" y="-878.8" font-family="Times,serif" font-size="14.00">position_at(d: float, position_mode: PositionMode): Vector</text>
<text text-anchor="start" x="6664" y="-863.8" font-family="Times,serif" font-size="14.00">positions(ds: Iterable[float], position_mode: PositionMode): list[Vector]</text>
<text text-anchor="start" x="6664" y="-848.8" font-family="Times,serif" font-size="14.00">project(face: Face, d: VectorLike, closest: bool): Union[Mixin1D, list[Mixin1D]]</text>
<text text-anchor="start" x="6664" y="-833.8" font-family="Times,serif" font-size="14.00">radius(): float</text>
<text text-anchor="start" x="6664" y="-818.8" font-family="Times,serif" font-size="14.00">start_point(): Vector</text>
<text text-anchor="start" x="6664" y="-803.8" font-family="Times,serif" font-size="14.00">tangent_at(location_param: float, position_mode: PositionMode): Vector</text>
<polygon fill="none" stroke="black" points="6656,-826 6656,-1091 7507,-1091 7507,-826 6656,-826"/>
<text text-anchor="middle" x="7081.5" y="-1075.8" font-family="Times,serif" font-size="14.00">Mixin1D</text>
<polyline fill="none" stroke="black" points="6656,-1068 7507,-1068 "/>
<polyline fill="none" stroke="black" points="6656,-1044 7507,-1044 "/>
<text text-anchor="start" x="6664" y="-1028.8" font-family="Times,serif" font-size="14.00">center(center_of: CenterOf): Vector</text>
<text text-anchor="start" x="6664" y="-1013.8" font-family="Times,serif" font-size="14.00">end_point(): Vector</text>
<text text-anchor="start" x="6664" y="-998.8" font-family="Times,serif" font-size="14.00">is_closed(): bool</text>
<text text-anchor="start" x="6664" y="-983.8" font-family="Times,serif" font-size="14.00">length(): float</text>
<text text-anchor="start" x="6664" y="-968.8" font-family="Times,serif" font-size="14.00">location_at(distance: float, position_mode: PositionMode, frame_method: FrameMethod, planar: bool): Location</text>
<text text-anchor="start" x="6664" y="-953.8" font-family="Times,serif" font-size="14.00">locations(ds: Iterable[float], position_mode: PositionMode, frame_method: FrameMethod, planar: bool): list[Location]</text>
<text text-anchor="start" x="6664" y="-938.8" font-family="Times,serif" font-size="14.00">normal(): Vector</text>
<text text-anchor="start" x="6664" y="-923.8" font-family="Times,serif" font-size="14.00">param_at(d: float): float</text>
<text text-anchor="start" x="6664" y="-908.8" font-family="Times,serif" font-size="14.00">position_at(d: float, position_mode: PositionMode): Vector</text>
<text text-anchor="start" x="6664" y="-893.8" font-family="Times,serif" font-size="14.00">positions(ds: Iterable[float], position_mode: PositionMode): list[Vector]</text>
<text text-anchor="start" x="6664" y="-878.8" font-family="Times,serif" font-size="14.00">project(face: Face, d: VectorLike, closest: bool): Union[Mixin1D, list[Mixin1D]]</text>
<text text-anchor="start" x="6664" y="-863.8" font-family="Times,serif" font-size="14.00">radius(): float</text>
<text text-anchor="start" x="6664" y="-848.8" font-family="Times,serif" font-size="14.00">start_point(): Vector</text>
<text text-anchor="start" x="6664" y="-833.8" font-family="Times,serif" font-size="14.00">tangent_at(location_param: float, position_mode: PositionMode): Vector</text>
</g>
<!-- build123d.direct_api.Edge&#45;&gt;build123d.direct_api.Mixin1D -->
<g id="edge3" class="edge">
<title>build123d.direct_api.Edge&#45;&gt;build123d.direct_api.Mixin1D</title>
<path fill="none" stroke="black" d="M6648.49,-340.15C6739.14,-463.1 6881.92,-656.77 6978.51,-787.8"/>
<polygon fill="none" stroke="black" points="6975.76,-789.97 6984.51,-795.94 6981.4,-785.82 6975.76,-789.97"/>
<path fill="none" stroke="black" d="M6645.89,-347.72C6737.24,-475.61 6883.74,-680.67 6981.28,-817.21"/>
<polygon fill="none" stroke="black" points="6978.68,-819.59 6987.34,-825.69 6984.37,-815.52 6978.68,-819.59"/>
</g>
<!-- build123d.direct_api.Edge&#45;&gt;build123d.direct_api.Shape -->
<g id="edge4" class="edge">
<title>build123d.direct_api.Edge&#45;&gt;build123d.direct_api.Shape</title>
<path fill="none" stroke="black" d="M6382.06,-340.15C6285.53,-402.55 6160.81,-483.18 6034.9,-564.58"/>
<polygon fill="none" stroke="black" points="6032.71,-561.82 6026.21,-570.19 6036.51,-567.7 6032.71,-561.82"/>
<path fill="none" stroke="black" d="M6387.84,-347.52C6290.42,-412.51 6163.07,-497.47 6034.49,-583.25"/>
<polygon fill="none" stroke="black" points="6032.39,-580.44 6026.02,-588.9 6036.28,-586.26 6032.39,-580.44"/>
</g>
<!-- build123d.direct_api.Face -->
<g id="node5" class="node">
<title>build123d.direct_api.Face</title>
<polygon fill="none" stroke="black" points="4262.5,-45 4262.5,-400 5268.5,-400 5268.5,-45 4262.5,-45"/>
<text text-anchor="middle" x="4765.5" y="-384.8" font-family="Times,serif" font-size="14.00">Face</text>
<polyline fill="none" stroke="black" points="4262.5,-377 5268.5,-377 "/>
<polyline fill="none" stroke="black" points="4262.5,-353 5268.5,-353 "/>
<text text-anchor="start" x="4270.5" y="-337.8" font-family="Times,serif" font-size="14.00">center(center_of: CenterOf): Vector</text>
<text text-anchor="start" x="4270.5" y="-322.8" font-family="Times,serif" font-size="14.00">chamfer_2d(d: float, vertices: Iterable[Vertex]): Face</text>
<text text-anchor="start" x="4270.5" y="-307.8" font-family="Times,serif" font-size="14.00">construct_on(cls: Face, f: Wire, outer): Face</text>
<text text-anchor="start" x="4270.5" y="-292.8" font-family="Times,serif" font-size="14.00">fillet_2d(radius: float, vertices: Iterable[Vertex]): Face</text>
<text text-anchor="start" x="4270.5" y="-277.8" font-family="Times,serif" font-size="14.00">inner_wires(): list[Wire]</text>
<text text-anchor="start" x="4270.5" y="-262.8" font-family="Times,serif" font-size="14.00">is_inside(point: VectorLike, tolerance: float): bool</text>
<text text-anchor="start" x="4270.5" y="-247.8" font-family="Times,serif" font-size="14.00">make_from_wires(cls: Wire, outer_wire: list[Wire], inner_wires): Face</text>
<text text-anchor="start" x="4270.5" y="-232.8" font-family="Times,serif" font-size="14.00">make_holes(interior_wires: list[Wire]): Face</text>
<text text-anchor="start" x="4270.5" y="-217.8" font-family="Times,serif" font-size="14.00">make_plane(cls: VectorLike, pnt: VectorLike, dir): Face</text>
<text text-anchor="start" x="4270.5" y="-202.8" font-family="Times,serif" font-size="14.00">make_rect(cls: float, width: float, height: VectorLike, pnt: VectorLike, normal): Face</text>
<text text-anchor="start" x="4270.5" y="-187.8" font-family="Times,serif" font-size="14.00">make_ruled_surface(cls: Edge, edge1: Edge, edge2): Face</text>
<text text-anchor="start" x="4270.5" y="-172.8" font-family="Times,serif" font-size="14.00">make_surface(cls: Union[Wire, list[Edge]], exterior: list[VectorLike], surface_points: list[Wire], interior_wires): Face</text>
<text text-anchor="start" x="4270.5" y="-157.8" font-family="Times,serif" font-size="14.00">make_surface_from_curves(cls, curve1, curve2): Face</text>
<text text-anchor="start" x="4270.5" y="-142.8" font-family="Times,serif" font-size="14.00">make_surface_from_points(cls: list[list[VectorLike]], points: float, tol: Tuple[float, float, float], smoothing: int, min_deg: int, max_deg): Face</text>
<text text-anchor="start" x="4270.5" y="-127.8" font-family="Times,serif" font-size="14.00">normal_at(location_vector: Vector): Vector</text>
<text text-anchor="start" x="4270.5" y="-112.8" font-family="Times,serif" font-size="14.00">outer_wire(): Wire</text>
<text text-anchor="start" x="4270.5" y="-97.8" font-family="Times,serif" font-size="14.00">project(other: Face, d: VectorLike): Face</text>
<text text-anchor="start" x="4270.5" y="-82.8" font-family="Times,serif" font-size="14.00">project_to_shape(target_object: Shape, direction: VectorLike, center: VectorLike, internal_face_points: list[Vector]): list[Face]</text>
<text text-anchor="start" x="4270.5" y="-67.8" font-family="Times,serif" font-size="14.00">thicken(depth: float, direction: Vector): Solid</text>
<text text-anchor="start" x="4270.5" y="-52.8" font-family="Times,serif" font-size="14.00">to_pln(): gp_Pln</text>
<polygon fill="none" stroke="black" points="4262.5,-52.5 4262.5,-407.5 5268.5,-407.5 5268.5,-52.5 4262.5,-52.5"/>
<text text-anchor="middle" x="4765.5" y="-392.3" font-family="Times,serif" font-size="14.00">Face</text>
<polyline fill="none" stroke="black" points="4262.5,-384.5 5268.5,-384.5 "/>
<polyline fill="none" stroke="black" points="4262.5,-360.5 5268.5,-360.5 "/>
<text text-anchor="start" x="4270.5" y="-345.3" font-family="Times,serif" font-size="14.00">center(center_of: CenterOf): Vector</text>
<text text-anchor="start" x="4270.5" y="-330.3" font-family="Times,serif" font-size="14.00">chamfer_2d(d: float, vertices: Iterable[Vertex]): Face</text>
<text text-anchor="start" x="4270.5" y="-315.3" font-family="Times,serif" font-size="14.00">construct_on(cls: Face, f: Wire, outer): Face</text>
<text text-anchor="start" x="4270.5" y="-300.3" font-family="Times,serif" font-size="14.00">fillet_2d(radius: float, vertices: Iterable[Vertex]): Face</text>
<text text-anchor="start" x="4270.5" y="-285.3" font-family="Times,serif" font-size="14.00">inner_wires(): list[Wire]</text>
<text text-anchor="start" x="4270.5" y="-270.3" font-family="Times,serif" font-size="14.00">is_inside(point: VectorLike, tolerance: float): bool</text>
<text text-anchor="start" x="4270.5" y="-255.3" font-family="Times,serif" font-size="14.00">make_from_wires(cls: Wire, outer_wire: list[Wire], inner_wires): Face</text>
<text text-anchor="start" x="4270.5" y="-240.3" font-family="Times,serif" font-size="14.00">make_holes(interior_wires: list[Wire]): Face</text>
<text text-anchor="start" x="4270.5" y="-225.3" font-family="Times,serif" font-size="14.00">make_plane(cls: VectorLike, pnt: VectorLike, dir): Face</text>
<text text-anchor="start" x="4270.5" y="-210.3" font-family="Times,serif" font-size="14.00">make_rect(cls: float, width: float, height: VectorLike, pnt: VectorLike, normal): Face</text>
<text text-anchor="start" x="4270.5" y="-195.3" font-family="Times,serif" font-size="14.00">make_ruled_surface(cls: Edge, edge1: Edge, edge2): Face</text>
<text text-anchor="start" x="4270.5" y="-180.3" font-family="Times,serif" font-size="14.00">make_surface(cls: Union[Wire, list[Edge]], exterior: list[VectorLike], surface_points: list[Wire], interior_wires): Face</text>
<text text-anchor="start" x="4270.5" y="-165.3" font-family="Times,serif" font-size="14.00">make_surface_from_curves(cls, curve1, curve2): Face</text>
<text text-anchor="start" x="4270.5" y="-150.3" font-family="Times,serif" font-size="14.00">make_surface_from_points(cls: list[list[VectorLike]], points: float, tol: Tuple[float, float, float], smoothing: int, min_deg: int, max_deg): Face</text>
<text text-anchor="start" x="4270.5" y="-135.3" font-family="Times,serif" font-size="14.00">normal_at(surface_point: VectorLike): Vector</text>
<text text-anchor="start" x="4270.5" y="-120.3" font-family="Times,serif" font-size="14.00">outer_wire(): Wire</text>
<text text-anchor="start" x="4270.5" y="-105.3" font-family="Times,serif" font-size="14.00">project(other: Face, d: VectorLike): Face</text>
<text text-anchor="start" x="4270.5" y="-90.3" font-family="Times,serif" font-size="14.00">project_to_shape(target_object: Shape, direction: VectorLike, center: VectorLike, internal_face_points: list[Vector]): list[Face]</text>
<text text-anchor="start" x="4270.5" y="-75.3" font-family="Times,serif" font-size="14.00">thicken(depth: float, direction: VectorLike): Solid</text>
<text text-anchor="start" x="4270.5" y="-60.3" font-family="Times,serif" font-size="14.00">to_pln(): gp_Pln</text>
</g>
<!-- build123d.direct_api.Face&#45;&gt;build123d.direct_api.Shape -->
<g id="edge5" class="edge">
<title>build123d.direct_api.Face&#45;&gt;build123d.direct_api.Shape</title>
<path fill="none" stroke="black" d="M4943.24,-400.24C4971.31,-428.14 5001.35,-458.02 5032.35,-488.84"/>
<polygon fill="none" stroke="black" points="5030.26,-491.7 5039.82,-496.27 5035.2,-486.74 5030.26,-491.7"/>
<path fill="none" stroke="black" d="M4937.79,-407.79C4967.22,-437.99 4998.94,-470.54 5031.73,-504.19"/>
<polygon fill="none" stroke="black" points="5029.26,-506.67 5038.75,-511.39 5034.27,-501.78 5029.26,-506.67"/>
</g>
<!-- build123d.direct_api.Location -->
<g id="node6" class="node">
<title>build123d.direct_api.Location</title>
<polygon fill="none" stroke="black" points="8134.5,-871.5 8134.5,-985.5 8608.5,-985.5 8608.5,-871.5 8134.5,-871.5"/>
<text text-anchor="middle" x="8371.5" y="-970.3" font-family="Times,serif" font-size="14.00">Location</text>
<polyline fill="none" stroke="black" points="8134.5,-962.5 8608.5,-962.5 "/>
<text text-anchor="start" x="8142.5" y="-947.3" font-family="Times,serif" font-size="14.00">orientation</text>
<text text-anchor="start" x="8142.5" y="-932.3" font-family="Times,serif" font-size="14.00">position</text>
<text text-anchor="start" x="8142.5" y="-917.3" font-family="Times,serif" font-size="14.00">wrapped</text>
<polyline fill="none" stroke="black" points="8134.5,-909.5 8608.5,-909.5 "/>
<text text-anchor="start" x="8142.5" y="-894.3" font-family="Times,serif" font-size="14.00">inverse(): Location</text>
<text text-anchor="start" x="8142.5" y="-879.3" font-family="Times,serif" font-size="14.00">to_tuple(): tuple[tuple[float, float, float], tuple[float, float, float]]</text>
<polygon fill="none" stroke="black" points="8134.5,-901.5 8134.5,-1015.5 8608.5,-1015.5 8608.5,-901.5 8134.5,-901.5"/>
<text text-anchor="middle" x="8371.5" y="-1000.3" font-family="Times,serif" font-size="14.00">Location</text>
<polyline fill="none" stroke="black" points="8134.5,-992.5 8608.5,-992.5 "/>
<text text-anchor="start" x="8142.5" y="-977.3" font-family="Times,serif" font-size="14.00">orientation</text>
<text text-anchor="start" x="8142.5" y="-962.3" font-family="Times,serif" font-size="14.00">position</text>
<text text-anchor="start" x="8142.5" y="-947.3" font-family="Times,serif" font-size="14.00">wrapped</text>
<polyline fill="none" stroke="black" points="8134.5,-939.5 8608.5,-939.5 "/>
<text text-anchor="start" x="8142.5" y="-924.3" font-family="Times,serif" font-size="14.00">inverse(): Location</text>
<text text-anchor="start" x="8142.5" y="-909.3" font-family="Times,serif" font-size="14.00">to_tuple(): tuple[tuple[float, float, float], tuple[float, float, float]]</text>
</g>
<!-- build123d.direct_api.Matrix -->
<g id="node7" class="node">
<title>build123d.direct_api.Matrix</title>
<polygon fill="none" stroke="black" points="1259,-150.5 1259,-294.5 1516,-294.5 1516,-150.5 1259,-150.5"/>
<text text-anchor="middle" x="1387.5" y="-279.3" font-family="Times,serif" font-size="14.00">Matrix</text>
<polyline fill="none" stroke="black" points="1259,-271.5 1516,-271.5 "/>
<text text-anchor="start" x="1267" y="-256.3" font-family="Times,serif" font-size="14.00">wrapped : NoneType</text>
<polyline fill="none" stroke="black" points="1259,-248.5 1516,-248.5 "/>
<text text-anchor="start" x="1267" y="-233.3" font-family="Times,serif" font-size="14.00">inverse(): Matrix</text>
<text text-anchor="start" x="1267" y="-218.3" font-family="Times,serif" font-size="14.00">multiply(other: Vector): Vector</text>
<text text-anchor="start" x="1267" y="-203.3" font-family="Times,serif" font-size="14.00">rotate_x(angle: float)</text>
<text text-anchor="start" x="1267" y="-188.3" font-family="Times,serif" font-size="14.00">rotate_y(angle: float)</text>
<text text-anchor="start" x="1267" y="-173.3" font-family="Times,serif" font-size="14.00">rotate_z(angle: float)</text>
<text text-anchor="start" x="1267" y="-158.3" font-family="Times,serif" font-size="14.00">transposed_list(): Sequence[float]</text>
<polygon fill="none" stroke="black" points="1259,-158 1259,-302 1516,-302 1516,-158 1259,-158"/>
<text text-anchor="middle" x="1387.5" y="-286.8" font-family="Times,serif" font-size="14.00">Matrix</text>
<polyline fill="none" stroke="black" points="1259,-279 1516,-279 "/>
<text text-anchor="start" x="1267" y="-263.8" font-family="Times,serif" font-size="14.00">wrapped : NoneType</text>
<polyline fill="none" stroke="black" points="1259,-256 1516,-256 "/>
<text text-anchor="start" x="1267" y="-240.8" font-family="Times,serif" font-size="14.00">inverse(): Matrix</text>
<text text-anchor="start" x="1267" y="-225.8" font-family="Times,serif" font-size="14.00">multiply(other: Vector): Vector</text>
<text text-anchor="start" x="1267" y="-210.8" font-family="Times,serif" font-size="14.00">rotate_x(angle: float)</text>
<text text-anchor="start" x="1267" y="-195.8" font-family="Times,serif" font-size="14.00">rotate_y(angle: float)</text>
<text text-anchor="start" x="1267" y="-180.8" font-family="Times,serif" font-size="14.00">rotate_z(angle: float)</text>
<text text-anchor="start" x="1267" y="-165.8" font-family="Times,serif" font-size="14.00">transposed_list(): Sequence[float]</text>
</g>
<!-- build123d.direct_api.Matrix&#45;&gt;build123d.direct_api.Plane -->
<g id="edge14" class="edge">
<title>build123d.direct_api.Matrix&#45;&gt;build123d.direct_api.Plane</title>
<path fill="none" stroke="black" d="M1362.57,-294.62C1340.89,-345.3 1304.25,-410.35 1249.5,-445 1190.53,-482.32 1152.43,-425.61 1093.5,-463 1012.05,-514.67 949.88,-598.54 904.51,-680.9"/>
<polygon fill="black" stroke="black" points="904.51,-680.91 905.16,-688.09 898.78,-691.46 898.13,-684.28 904.51,-680.91"/>
<text text-anchor="middle" x="1105" y="-466.8" font-family="Times,serif" font-size="14.00" fill="green">r_g</text>
<path fill="none" stroke="black" d="M1364.2,-302.01C1342.99,-354.72 1306.2,-423.52 1249.5,-460 1190.8,-497.76 1152.17,-440.2 1093.5,-478 1008.09,-533.04 944.38,-623.19 898.91,-710.56"/>
<polygon fill="black" stroke="black" points="898.79,-710.79 899.61,-717.96 893.31,-721.47 892.49,-714.31 898.79,-710.79"/>
<text text-anchor="middle" x="1105" y="-481.8" font-family="Times,serif" font-size="14.00" fill="green">r_g</text>
</g>
<!-- build123d.direct_api.Matrix&#45;&gt;build123d.direct_api.Plane -->
<g id="edge15" class="edge">
<title>build123d.direct_api.Matrix&#45;&gt;build123d.direct_api.Plane</title>
<path fill="none" stroke="black" d="M1360.78,-294.56C1338.46,-344.19 1301.82,-407.95 1249.5,-445 1219.4,-466.31 1199.69,-443.32 1168.5,-463 1081.8,-517.73 1007.37,-600.75 948.88,-681.55"/>
<polygon fill="black" stroke="black" points="948.82,-681.63 948.57,-688.84 941.83,-691.39 942.07,-684.18 948.82,-681.63"/>
<text text-anchor="middle" x="1179.5" y="-466.8" font-family="Times,serif" font-size="14.00" fill="green">f_g</text>
<path fill="none" stroke="black" d="M1362.41,-302C1340.52,-353.63 1303.67,-421.04 1249.5,-460 1219.56,-481.53 1199.53,-458.08 1168.5,-478 1077.86,-536.19 1001.32,-625.36 942.24,-711.08"/>
<polygon fill="black" stroke="black" points="942.07,-711.33 941.99,-718.54 935.3,-721.24 935.38,-714.03 942.07,-711.33"/>
<text text-anchor="middle" x="1179.5" y="-481.8" font-family="Times,serif" font-size="14.00" fill="green">f_g</text>
</g>
<!-- build123d.direct_api.Matrix&#45;&gt;build123d.direct_api.Plane -->
<g id="edge16" class="edge">
<title>build123d.direct_api.Matrix&#45;&gt;build123d.direct_api.Plane</title>
<path fill="none" stroke="black" d="M1351.08,-294.64C1325.92,-340.19 1289.81,-399.15 1249.5,-445 1241.16,-454.49 1236.66,-454.3 1227.5,-463 1155.71,-531.17 1081.72,-609.46 1016.13,-682.11"/>
<polygon fill="black" stroke="black" points="1015.79,-682.48 1014.75,-689.62 1007.76,-691.4 1008.81,-684.26 1015.79,-682.48"/>
<text text-anchor="middle" x="1239" y="-466.8" font-family="Times,serif" font-size="14.00" fill="green">r_g</text>
<path fill="none" stroke="black" d="M1352.89,-302.02C1327.86,-349.5 1291.21,-411.84 1249.5,-460 1241.23,-469.55 1236.59,-469.23 1227.5,-478 1152.34,-550.5 1075.37,-634.55 1008.1,-711.84"/>
<polygon fill="black" stroke="black" points="1007.81,-712.17 1006.89,-719.32 999.94,-721.23 1000.85,-714.08 1007.81,-712.17"/>
<text text-anchor="middle" x="1239" y="-481.8" font-family="Times,serif" font-size="14.00" fill="green">r_g</text>
</g>
<!-- build123d.direct_api.Matrix&#45;&gt;build123d.direct_api.Plane -->
<g id="edge17" class="edge">
<title>build123d.direct_api.Matrix&#45;&gt;build123d.direct_api.Plane</title>
<path fill="none" stroke="black" d="M1355.94,-294.77C1330.93,-347.67 1293.19,-420.32 1250.5,-478 1190.63,-558.9 1116.6,-639.48 1046.21,-709.61"/>
<polygon fill="black" stroke="black" points="1046.16,-709.66 1044.72,-716.73 1037.64,-718.11 1039.08,-711.05 1046.16,-709.66"/>
<text text-anchor="middle" x="1271.5" y="-466.8" font-family="Times,serif" font-size="14.00" fill="green">f_g</text>
<path fill="none" stroke="black" d="M1356.93,-302.24C1331.97,-356.79 1293.84,-432.65 1250.5,-493 1190.71,-576.24 1116.6,-659.49 1046.13,-732.05"/>
<polygon fill="black" stroke="black" points="1045.93,-732.25 1044.6,-739.34 1037.55,-740.84 1038.88,-733.75 1045.93,-732.25"/>
<text text-anchor="middle" x="1271.5" y="-481.8" font-family="Times,serif" font-size="14.00" fill="green">f_g</text>
</g>
<!-- build123d.direct_api.Rotation -->
<g id="node11" class="node">
<title>build123d.direct_api.Rotation</title>
<polygon fill="none" stroke="black" points="8312.5,-173 8312.5,-272 8430.5,-272 8430.5,-173 8312.5,-173"/>
<text text-anchor="middle" x="8371.5" y="-256.8" font-family="Times,serif" font-size="14.00">Rotation</text>
<polyline fill="none" stroke="black" points="8312.5,-249 8430.5,-249 "/>
<text text-anchor="start" x="8320.5" y="-233.8" font-family="Times,serif" font-size="14.00">about_x : float</text>
<text text-anchor="start" x="8320.5" y="-218.8" font-family="Times,serif" font-size="14.00">about_y : float</text>
<text text-anchor="start" x="8320.5" y="-203.8" font-family="Times,serif" font-size="14.00">about_z : float</text>
<polyline fill="none" stroke="black" points="8312.5,-196 8430.5,-196 "/>
<text text-anchor="middle" x="8371.5" y="-180.8" font-family="Times,serif" font-size="14.00"> </text>
<polygon fill="none" stroke="black" points="8312.5,-180.5 8312.5,-279.5 8430.5,-279.5 8430.5,-180.5 8312.5,-180.5"/>
<text text-anchor="middle" x="8371.5" y="-264.3" font-family="Times,serif" font-size="14.00">Rotation</text>
<polyline fill="none" stroke="black" points="8312.5,-256.5 8430.5,-256.5 "/>
<text text-anchor="start" x="8320.5" y="-241.3" font-family="Times,serif" font-size="14.00">about_x : float</text>
<text text-anchor="start" x="8320.5" y="-226.3" font-family="Times,serif" font-size="14.00">about_y : float</text>
<text text-anchor="start" x="8320.5" y="-211.3" font-family="Times,serif" font-size="14.00">about_z : float</text>
<polyline fill="none" stroke="black" points="8312.5,-203.5 8430.5,-203.5 "/>
<text text-anchor="middle" x="8371.5" y="-188.3" font-family="Times,serif" font-size="14.00"> </text>
</g>
<!-- build123d.direct_api.Rotation&#45;&gt;build123d.direct_api.Location -->
<g id="edge6" class="edge">
<title>build123d.direct_api.Rotation&#45;&gt;build123d.direct_api.Location</title>
<path fill="none" stroke="black" d="M8371.5,-272.17C8371.5,-395.44 8371.5,-720.18 8371.5,-860.9"/>
<polygon fill="none" stroke="black" points="8368,-861.11 8371.5,-871.11 8375,-861.11 8368,-861.11"/>
<path fill="none" stroke="black" d="M8371.5,-279.51C8371.5,-406.18 8371.5,-747.05 8371.5,-891.44"/>
<polygon fill="none" stroke="black" points="8368,-891.49 8371.5,-901.49 8375,-891.49 8368,-891.49"/>
</g>
<!-- build123d.direct_api.ShapeList -->
<g id="node13" class="node">
<title>build123d.direct_api.ShapeList</title>
<polygon fill="none" stroke="black" points="8449,-165 8449,-280 9102,-280 9102,-165 8449,-165"/>
<text text-anchor="middle" x="8775.5" y="-264.8" font-family="Times,serif" font-size="14.00">ShapeList</text>
<polyline fill="none" stroke="black" points="8449,-257 9102,-257 "/>
<polyline fill="none" stroke="black" points="8449,-233 9102,-233 "/>
<text text-anchor="start" x="8457" y="-217.8" font-family="Times,serif" font-size="14.00">filter_by(filter_by: Union[Axis, GeomType], reverse: bool, tolerance: float): ShapeList</text>
<text text-anchor="start" x="8457" y="-202.8" font-family="Times,serif" font-size="14.00">filter_by_position(axis: Axis, minimum: float, maximum: float, inclusive: tuple[bool, bool])</text>
<text text-anchor="start" x="8457" y="-187.8" font-family="Times,serif" font-size="14.00">group_by(group_by: Union[Axis, SortBy], reverse, tol_digits)</text>
<text text-anchor="start" x="8457" y="-172.8" font-family="Times,serif" font-size="14.00">sort_by(sort_by: Union[Axis, SortBy], reverse: bool)</text>
<polygon fill="none" stroke="black" points="8449,-172.5 8449,-287.5 9102,-287.5 9102,-172.5 8449,-172.5"/>
<text text-anchor="middle" x="8775.5" y="-272.3" font-family="Times,serif" font-size="14.00">ShapeList</text>
<polyline fill="none" stroke="black" points="8449,-264.5 9102,-264.5 "/>
<polyline fill="none" stroke="black" points="8449,-240.5 9102,-240.5 "/>
<text text-anchor="start" x="8457" y="-225.3" font-family="Times,serif" font-size="14.00">filter_by(filter_by: Union[Axis, GeomType], reverse: bool, tolerance: float): ShapeList</text>
<text text-anchor="start" x="8457" y="-210.3" font-family="Times,serif" font-size="14.00">filter_by_position(axis: Axis, minimum: float, maximum: float, inclusive: tuple[bool, bool])</text>
<text text-anchor="start" x="8457" y="-195.3" font-family="Times,serif" font-size="14.00">group_by(group_by: Union[Axis, SortBy], reverse, tol_digits)</text>
<text text-anchor="start" x="8457" y="-180.3" font-family="Times,serif" font-size="14.00">sort_by(sort_by: Union[Axis, SortBy], reverse: bool)</text>
</g>
<!-- build123d.direct_api.Shell -->
<g id="node14" class="node">
<title>build123d.direct_api.Shell</title>
<polygon fill="none" stroke="black" points="5286.5,-187.5 5286.5,-257.5 5660.5,-257.5 5660.5,-187.5 5286.5,-187.5"/>
<text text-anchor="middle" x="5473.5" y="-242.3" font-family="Times,serif" font-size="14.00">Shell</text>
<polyline fill="none" stroke="black" points="5286.5,-234.5 5660.5,-234.5 "/>
<polyline fill="none" stroke="black" points="5286.5,-210.5 5660.5,-210.5 "/>
<text text-anchor="start" x="5294.5" y="-195.3" font-family="Times,serif" font-size="14.00">make_shell(cls: Iterable[Face], list_of_faces): Shell</text>
<polygon fill="none" stroke="black" points="5286.5,-195 5286.5,-265 5660.5,-265 5660.5,-195 5286.5,-195"/>
<text text-anchor="middle" x="5473.5" y="-249.8" font-family="Times,serif" font-size="14.00">Shell</text>
<polyline fill="none" stroke="black" points="5286.5,-242 5660.5,-242 "/>
<polyline fill="none" stroke="black" points="5286.5,-218 5660.5,-218 "/>
<text text-anchor="start" x="5294.5" y="-202.8" font-family="Times,serif" font-size="14.00">make_shell(cls: Iterable[Face], list_of_faces): Shell</text>
</g>
<!-- build123d.direct_api.Shell&#45;&gt;build123d.direct_api.Shape -->
<g id="edge7" class="edge">
<title>build123d.direct_api.Shell&#45;&gt;build123d.direct_api.Shape</title>
<path fill="none" stroke="black" d="M5473.5,-257.93C5473.5,-303.72 5473.5,-390.13 5473.5,-486.02"/>
<polygon fill="none" stroke="black" points="5470,-486.23 5473.5,-496.23 5477,-486.23 5470,-486.23"/>
<path fill="none" stroke="black" d="M5473.5,-265.07C5473.5,-311.78 5473.5,-401.36 5473.5,-500.98"/>
<polygon fill="none" stroke="black" points="5470,-501.28 5473.5,-511.28 5477,-501.28 5470,-501.28"/>
</g>
<!-- build123d.direct_api.Solid -->
<g id="node15" class="node">
<title>build123d.direct_api.Solid</title>
<polygon fill="none" stroke="black" points="2872.5,-82.5 2872.5,-362.5 4244.5,-362.5 4244.5,-82.5 2872.5,-82.5"/>
<text text-anchor="middle" x="3558.5" y="-347.3" font-family="Times,serif" font-size="14.00">Solid</text>
<polyline fill="none" stroke="black" points="2872.5,-339.5 4244.5,-339.5 "/>
<polyline fill="none" stroke="black" points="2872.5,-315.5 4244.5,-315.5 "/>
<text text-anchor="start" x="2880.5" y="-300.3" font-family="Times,serif" font-size="14.00">center(center_of: CenterOf): Vector</text>
<text text-anchor="start" x="2880.5" y="-285.3" font-family="Times,serif" font-size="14.00">extrude_linear(cls: Union[Face, Wire], section: VectorLike, normal: list[Wire], inner_wires: float, taper): Solid</text>
<text text-anchor="start" x="2880.5" y="-270.3" font-family="Times,serif" font-size="14.00">extrude_linear_with_rotation(cls: Union[Face, Wire], section: VectorLike, center: VectorLike, normal: float, angle: list[Wire], inner_wires): Solid</text>
<text text-anchor="start" x="2880.5" y="-255.3" font-family="Times,serif" font-size="14.00">is_solid(obj): bool</text>
<text text-anchor="start" x="2880.5" y="-240.3" font-family="Times,serif" font-size="14.00">make_box(cls: float, length: float, width: float, height: VectorLike, pnt: VectorLike, dir): Solid</text>
<text text-anchor="start" x="2880.5" y="-225.3" font-family="Times,serif" font-size="14.00">make_cone(cls: float, radius1: float, radius2: float, height: VectorLike, pnt: VectorLike, dir: float, angle): Solid</text>
<text text-anchor="start" x="2880.5" y="-210.3" font-family="Times,serif" font-size="14.00">make_cylinder(cls: float, radius: float, height: VectorLike, pnt: VectorLike, dir: float, angle): Solid</text>
<text text-anchor="start" x="2880.5" y="-195.3" font-family="Times,serif" font-size="14.00">make_loft(cls: list[Wire], list_of_wire: bool, ruled): Solid</text>
<text text-anchor="start" x="2880.5" y="-180.3" font-family="Times,serif" font-size="14.00">make_solid(cls: Shell, shell): Solid</text>
<text text-anchor="start" x="2880.5" y="-165.3" font-family="Times,serif" font-size="14.00">make_sphere(cls: float, radius: VectorLike, pnt: VectorLike, dir: float, angle1: float, angle2: float, angle3): Shape</text>
<text text-anchor="start" x="2880.5" y="-150.3" font-family="Times,serif" font-size="14.00">make_torus(cls: float, radius1: float, radius2: VectorLike, pnt: VectorLike, dir: float, angle1: float, angle2): Solid</text>
<text text-anchor="start" x="2880.5" y="-135.3" font-family="Times,serif" font-size="14.00">make_wedge(cls: float, dx: float, dy: float, dz: float, xmin: float, zmin: float, xmax: float, zmax: VectorLike, pnt: VectorLike, dir): Solid</text>
<text text-anchor="start" x="2880.5" y="-120.3" font-family="Times,serif" font-size="14.00">revolve(cls: Union[Face, Wire], section: float, angle: Axis, axis: list[Wire], inner_wires): Solid</text>
<text text-anchor="start" x="2880.5" y="-105.3" font-family="Times,serif" font-size="14.00">sweep(cls: Union[Face, Wire], section: Union[Wire, Edge], path: list[Wire], inner_wires: bool, make_solid: bool, is_frenet: Union[Vector, Wire, Edge, None], mode: Transition, transition): Solid</text>
<text text-anchor="start" x="2880.5" y="-90.3" font-family="Times,serif" font-size="14.00">sweep_multi(cls: Iterable[Union[Wire, Face]], profiles: Union[Wire, Edge], path: bool, make_solid: bool, is_frenet: Union[Vector, Wire, Edge, None], mode): Solid</text>
<polygon fill="none" stroke="black" points="2872.5,-90 2872.5,-370 4244.5,-370 4244.5,-90 2872.5,-90"/>
<text text-anchor="middle" x="3558.5" y="-354.8" font-family="Times,serif" font-size="14.00">Solid</text>
<polyline fill="none" stroke="black" points="2872.5,-347 4244.5,-347 "/>
<polyline fill="none" stroke="black" points="2872.5,-323 4244.5,-323 "/>
<text text-anchor="start" x="2880.5" y="-307.8" font-family="Times,serif" font-size="14.00">center(center_of: CenterOf): Vector</text>
<text text-anchor="start" x="2880.5" y="-292.8" font-family="Times,serif" font-size="14.00">extrude_linear(cls: Union[Face, Wire], section: VectorLike, normal: list[Wire], inner_wires: float, taper): Solid</text>
<text text-anchor="start" x="2880.5" y="-277.8" font-family="Times,serif" font-size="14.00">extrude_linear_with_rotation(cls: Union[Face, Wire], section: VectorLike, center: VectorLike, normal: float, angle: list[Wire], inner_wires): Solid</text>
<text text-anchor="start" x="2880.5" y="-262.8" font-family="Times,serif" font-size="14.00">is_solid(obj): bool</text>
<text text-anchor="start" x="2880.5" y="-247.8" font-family="Times,serif" font-size="14.00">make_box(cls: float, length: float, width: float, height: VectorLike, pnt: VectorLike, dir): Solid</text>
<text text-anchor="start" x="2880.5" y="-232.8" font-family="Times,serif" font-size="14.00">make_cone(cls: float, radius1: float, radius2: float, height: VectorLike, pnt: VectorLike, dir: float, angle): Solid</text>
<text text-anchor="start" x="2880.5" y="-217.8" font-family="Times,serif" font-size="14.00">make_cylinder(cls: float, radius: float, height: VectorLike, pnt: VectorLike, dir: float, angle): Solid</text>
<text text-anchor="start" x="2880.5" y="-202.8" font-family="Times,serif" font-size="14.00">make_loft(cls: list[Wire], list_of_wire: bool, ruled): Solid</text>
<text text-anchor="start" x="2880.5" y="-187.8" font-family="Times,serif" font-size="14.00">make_solid(cls: Shell, shell): Solid</text>
<text text-anchor="start" x="2880.5" y="-172.8" font-family="Times,serif" font-size="14.00">make_sphere(cls: float, radius: VectorLike, pnt: VectorLike, dir: float, angle1: float, angle2: float, angle3): Shape</text>
<text text-anchor="start" x="2880.5" y="-157.8" font-family="Times,serif" font-size="14.00">make_torus(cls: float, radius1: float, radius2: VectorLike, pnt: VectorLike, dir: float, angle1: float, angle2): Solid</text>
<text text-anchor="start" x="2880.5" y="-142.8" font-family="Times,serif" font-size="14.00">make_wedge(cls: float, dx: float, dy: float, dz: float, xmin: float, zmin: float, xmax: float, zmax: VectorLike, pnt: VectorLike, dir): Solid</text>
<text text-anchor="start" x="2880.5" y="-127.8" font-family="Times,serif" font-size="14.00">revolve(cls: Union[Face, Wire], section: float, angle: Axis, axis: list[Wire], inner_wires): Solid</text>
<text text-anchor="start" x="2880.5" y="-112.8" font-family="Times,serif" font-size="14.00">sweep(cls: Union[Face, Wire], section: Union[Wire, Edge], path: list[Wire], inner_wires: bool, make_solid: bool, is_frenet: Union[Vector, Wire, Edge, None], mode: Transition, transition): Solid</text>
<text text-anchor="start" x="2880.5" y="-97.8" font-family="Times,serif" font-size="14.00">sweep_multi(cls: Iterable[Union[Wire, Face]], profiles: Union[Wire, Edge], path: bool, make_solid: bool, is_frenet: Union[Vector, Wire, Edge, None], mode): Solid</text>
</g>
<!-- build123d.direct_api.Solid&#45;&gt;build123d.direct_api.Mixin3D -->
<g id="edge8" class="edge">
<title>build123d.direct_api.Solid&#45;&gt;build123d.direct_api.Mixin3D</title>
<path fill="none" stroke="black" d="M3456.16,-362.59C3347.18,-510.7 3178.91,-739.38 3093.76,-855.11"/>
<polygon fill="none" stroke="black" points="3090.89,-853.12 3087.78,-863.24 3096.52,-857.26 3090.89,-853.12"/>
<path fill="none" stroke="black" d="M3459.24,-370.22C3349.79,-523.72 3177.91,-764.78 3092.41,-884.7"/>
<polygon fill="none" stroke="black" points="3089.36,-882.95 3086.4,-893.12 3095.06,-887.01 3089.36,-882.95"/>
</g>
<!-- build123d.direct_api.Solid&#45;&gt;build123d.direct_api.Shape -->
<g id="edge9" class="edge">
<title>build123d.direct_api.Solid&#45;&gt;build123d.direct_api.Shape</title>
<path fill="none" stroke="black" d="M3936.84,-362.59C4214.91,-464.81 4597.37,-605.41 4911.16,-720.77"/>
<polygon fill="none" stroke="black" points="4910.3,-724.18 4920.89,-724.35 4912.71,-717.61 4910.3,-724.18"/>
<path fill="none" stroke="black" d="M3924.9,-370C4203.92,-475.86 4592.95,-623.44 4911.27,-744.21"/>
<polygon fill="none" stroke="black" points="4910.08,-747.5 4920.67,-747.77 4912.56,-740.95 4910.08,-747.5"/>
</g>
<!-- build123d.direct_api.Vector -->
<g id="node16" class="node">
<title>build123d.direct_api.Vector</title>
<polygon fill="none" stroke="black" points="271,-0.5 271,-444.5 638,-444.5 638,-0.5 271,-0.5"/>
<text text-anchor="middle" x="454.5" y="-429.3" font-family="Times,serif" font-size="14.00">Vector</text>
<polyline fill="none" stroke="black" points="271,-421.5 638,-421.5 "/>
<polygon fill="none" stroke="black" points="271,-0.5 271,-459.5 638,-459.5 638,-0.5 271,-0.5"/>
<text text-anchor="middle" x="454.5" y="-444.3" font-family="Times,serif" font-size="14.00">Vector</text>
<polyline fill="none" stroke="black" points="271,-436.5 638,-436.5 "/>
<text text-anchor="start" x="279" y="-421.3" font-family="Times,serif" font-size="14.00">X</text>
<text text-anchor="start" x="279" y="-406.3" font-family="Times,serif" font-size="14.00">X</text>
<text text-anchor="start" x="279" y="-391.3" font-family="Times,serif" font-size="14.00">X</text>
<text text-anchor="start" x="279" y="-391.3" font-family="Times,serif" font-size="14.00">Y</text>
<text text-anchor="start" x="279" y="-376.3" font-family="Times,serif" font-size="14.00">Y</text>
<text text-anchor="start" x="279" y="-361.3" font-family="Times,serif" font-size="14.00">Y</text>
<text text-anchor="start" x="279" y="-346.3" font-family="Times,serif" font-size="14.00">Z</text>
<text text-anchor="start" x="279" y="-361.3" font-family="Times,serif" font-size="14.00">Z</text>
<text text-anchor="start" x="279" y="-346.3" font-family="Times,serif" font-size="14.00">vector_index : int</text>
<text text-anchor="start" x="279" y="-331.3" font-family="Times,serif" font-size="14.00">wrapped</text>
<polyline fill="none" stroke="black" points="271,-323.5 638,-323.5 "/>
<text text-anchor="start" x="279" y="-308.3" font-family="Times,serif" font-size="14.00">add(v: Vector): Vector</text>
@ -466,128 +469,128 @@
<!-- build123d.direct_api.Vector&#45;&gt;build123d.direct_api.Axis -->
<g id="edge18" class="edge">
<title>build123d.direct_api.Vector&#45;&gt;build123d.direct_api.Axis</title>
<path fill="none" stroke="black" d="M285.19,-444.71C282.76,-450.77 280.52,-456.87 278.5,-463 245.29,-563.9 245.99,-683.95 254.5,-776.72"/>
<polygon fill="black" stroke="black" points="254.51,-776.82 259.07,-782.41 255.66,-788.76 251.1,-783.17 254.51,-776.82"/>
<text text-anchor="middle" x="307.5" y="-466.8" font-family="Times,serif" font-size="14.00" fill="green">position</text>
<path fill="none" stroke="black" d="M285.03,-459.65C282.66,-465.74 280.47,-471.86 278.5,-478 244.43,-584.13 245.73,-710.42 254.72,-806.74"/>
<polygon fill="black" stroke="black" points="254.74,-806.99 259.31,-812.57 255.91,-818.93 251.34,-813.35 254.74,-806.99"/>
<text text-anchor="middle" x="307.5" y="-481.8" font-family="Times,serif" font-size="14.00" fill="green">position</text>
</g>
<!-- build123d.direct_api.Vector&#45;&gt;build123d.direct_api.Axis -->
<g id="edge19" class="edge">
<title>build123d.direct_api.Vector&#45;&gt;build123d.direct_api.Axis</title>
<path fill="none" stroke="black" d="M364.9,-444.78C363.01,-450.89 361.21,-456.97 359.5,-463 330.27,-566.12 309.5,-685.22 296.17,-777"/>
<polygon fill="black" stroke="black" points="296.17,-777.03 299.27,-783.54 294.46,-788.91 291.35,-782.4 296.17,-777.03"/>
<text text-anchor="middle" x="391.5" y="-466.8" font-family="Times,serif" font-size="14.00" fill="green">direction</text>
<path fill="none" stroke="black" d="M364.79,-459.58C362.94,-465.76 361.17,-471.91 359.5,-478 329.71,-586.36 308.74,-711.61 295.46,-806.93"/>
<polygon fill="black" stroke="black" points="295.44,-807.1 298.58,-813.59 293.8,-818.99 290.66,-812.5 295.44,-807.1"/>
<text text-anchor="middle" x="391.5" y="-481.8" font-family="Times,serif" font-size="14.00" fill="green">direction</text>
</g>
<!-- build123d.direct_api.Vector&#45;&gt;build123d.direct_api.Plane -->
<g id="edge20" class="edge">
<title>build123d.direct_api.Vector&#45;&gt;build123d.direct_api.Plane</title>
<path fill="none" stroke="black" d="M426.5,-444.5C431.26,-456.55 437.79,-467.85 446.5,-478 480.76,-517.93 520.26,-466.03 563.5,-496 629.05,-541.44 678.88,-610.69 715.78,-680.49"/>
<polygon fill="black" stroke="black" points="715.83,-680.59 722.15,-684.08 721.36,-691.24 715.05,-687.76 715.83,-680.59"/>
<text text-anchor="middle" x="464" y="-466.8" font-family="Times,serif" font-size="14.00" fill="green">z_dir</text>
<path fill="none" stroke="black" d="M426.39,-459.74C431.25,-471.68 437.83,-482.9 446.5,-493 480.76,-532.93 520.48,-480.71 563.5,-511 632.99,-559.92 684.46,-635.3 721.63,-710.27"/>
<polygon fill="black" stroke="black" points="721.76,-710.54 727.98,-714.18 727.01,-721.33 720.78,-717.68 721.76,-710.54"/>
<text text-anchor="middle" x="464" y="-481.8" font-family="Times,serif" font-size="14.00" fill="green">z_dir</text>
</g>
<!-- build123d.direct_api.Vector&#45;&gt;build123d.direct_api.Plane -->
<g id="edge21" class="edge">
<title>build123d.direct_api.Vector&#45;&gt;build123d.direct_api.Plane</title>
<path fill="none" stroke="black" d="M481.28,-444.59C487.7,-456.61 495.37,-467.89 504.5,-478 522.87,-498.35 542.15,-478.81 563.5,-496 623.99,-544.7 671.93,-612.83 708.65,-680.58"/>
<polygon fill="black" stroke="black" points="708.8,-680.86 715.16,-684.27 714.45,-691.45 708.1,-688.03 708.8,-680.86"/>
<text text-anchor="middle" x="522" y="-466.8" font-family="Times,serif" font-size="14.00" fill="green">z_dir</text>
<path fill="none" stroke="black" d="M481.39,-459.8C487.82,-471.73 495.45,-482.92 504.5,-493 522.82,-513.4 542.27,-493.65 563.5,-511 627.76,-563.51 677.48,-637.77 714.67,-710.68"/>
<polygon fill="black" stroke="black" points="714.68,-710.7 720.94,-714.26 720.06,-721.42 713.8,-717.85 714.68,-710.7"/>
<text text-anchor="middle" x="522" y="-481.8" font-family="Times,serif" font-size="14.00" fill="green">z_dir</text>
</g>
<!-- build123d.direct_api.Vector&#45;&gt;build123d.direct_api.Plane -->
<g id="edge22" class="edge">
<title>build123d.direct_api.Vector&#45;&gt;build123d.direct_api.Plane</title>
<path fill="none" stroke="black" d="M546.9,-444.78C552.08,-456.06 557.3,-467.19 562.5,-478 594.52,-544.54 631.41,-615.34 666.61,-680.58"/>
<polygon fill="black" stroke="black" points="666.77,-680.87 673.14,-684.24 672.47,-691.42 666.1,-688.05 666.77,-680.87"/>
<text text-anchor="middle" x="580.5" y="-466.8" font-family="Times,serif" font-size="14.00" fill="green">x_dir</text>
<path fill="none" stroke="black" d="M547.38,-459.81C552.4,-471.07 557.46,-482.19 562.5,-493 595.89,-564.59 634.58,-641.02 671.12,-710.8"/>
<polygon fill="black" stroke="black" points="671.16,-710.86 677.49,-714.32 676.73,-721.49 670.4,-718.03 671.16,-710.86"/>
<text text-anchor="middle" x="580.5" y="-481.8" font-family="Times,serif" font-size="14.00" fill="green">x_dir</text>
</g>
<!-- build123d.direct_api.Vector&#45;&gt;build123d.direct_api.Plane -->
<g id="edge23" class="edge">
<title>build123d.direct_api.Vector&#45;&gt;build123d.direct_api.Plane</title>
<path fill="none" stroke="black" d="M588.84,-444.78C592.14,-450.89 595.36,-456.98 598.5,-463 634.56,-532.21 670.4,-609.01 701.86,-679.9"/>
<polygon fill="black" stroke="black" points="702.02,-680.25 708.11,-684.12 706.88,-691.23 700.79,-687.36 702.02,-680.25"/>
<text text-anchor="middle" x="623.5" y="-466.8" font-family="Times,serif" font-size="14.00" fill="green">x_dir</text>
<path fill="none" stroke="black" d="M589.03,-459.57C592.26,-465.76 595.42,-471.91 598.5,-478 636,-552.25 673.2,-634.86 705.51,-710.3"/>
<polygon fill="black" stroke="black" points="705.53,-710.34 711.56,-714.29 710.24,-721.38 704.21,-717.43 705.53,-710.34"/>
<text text-anchor="middle" x="623.5" y="-481.8" font-family="Times,serif" font-size="14.00" fill="green">x_dir</text>
</g>
<!-- build123d.direct_api.Vector&#45;&gt;build123d.direct_api.Plane -->
<g id="edge24" class="edge">
<title>build123d.direct_api.Vector&#45;&gt;build123d.direct_api.Plane</title>
<path fill="none" stroke="black" d="M635.07,-444.83C638.69,-450.88 642.17,-456.94 645.5,-463 682.49,-530.32 713.26,-607.76 737.6,-679.86"/>
<polygon fill="black" stroke="black" points="737.65,-680.01 743.34,-684.43 741.45,-691.39 735.76,-686.97 737.65,-680.01"/>
<text text-anchor="middle" x="670.5" y="-466.8" font-family="Times,serif" font-size="14.00" fill="green">y_dir</text>
<path fill="none" stroke="black" d="M635.31,-459.71C638.84,-465.8 642.25,-471.9 645.5,-478 683.96,-550.08 715.61,-633.15 740.31,-709.68"/>
<polygon fill="black" stroke="black" points="740.41,-709.98 746.04,-714.48 744.06,-721.41 738.42,-716.91 740.41,-709.98"/>
<text text-anchor="middle" x="670.5" y="-481.8" font-family="Times,serif" font-size="14.00" fill="green">y_dir</text>
</g>
<!-- build123d.direct_api.Vector&#45;&gt;build123d.direct_api.Plane -->
<g id="edge25" class="edge">
<title>build123d.direct_api.Vector&#45;&gt;build123d.direct_api.Plane</title>
<path fill="none" stroke="black" d="M638.13,-438.91C640.9,-440.99 643.69,-443.02 646.5,-445 664.43,-457.66 678.05,-446.47 692.5,-463 744.77,-522.81 773.75,-602.83 789.55,-679.58"/>
<polygon fill="black" stroke="black" points="789.56,-679.6 794.64,-684.71 791.88,-691.37 786.8,-686.26 789.56,-679.6"/>
<text text-anchor="middle" x="723" y="-466.8" font-family="Times,serif" font-size="14.00" fill="green">origin</text>
<path fill="none" stroke="black" d="M638.02,-453.72C640.83,-455.86 643.66,-457.96 646.5,-460 664.33,-472.81 678.11,-461.42 692.5,-478 747.86,-541.81 777.32,-627.75 792.63,-709.26"/>
<polygon fill="black" stroke="black" points="792.66,-709.43 797.66,-714.63 794.79,-721.25 789.79,-716.05 792.66,-709.43"/>
<text text-anchor="middle" x="723" y="-481.8" font-family="Times,serif" font-size="14.00" fill="green">origin</text>
</g>
<!-- build123d.direct_api.Vector&#45;&gt;build123d.direct_api.Plane -->
<g id="edge26" class="edge">
<title>build123d.direct_api.Vector&#45;&gt;build123d.direct_api.Plane</title>
<path fill="none" stroke="black" d="M638.26,-440.13C640.99,-441.81 643.73,-443.43 646.5,-445 686.55,-467.7 716.82,-429.6 748.5,-463 802.89,-520.32 824.18,-601.13 829.67,-679.31"/>
<polygon fill="black" stroke="black" points="829.67,-679.35 834.02,-685.1 830.39,-691.33 826.04,-685.58 829.67,-679.35"/>
<text text-anchor="middle" x="782" y="-466.8" font-family="Times,serif" font-size="14.00" fill="green">_origin</text>
<path fill="none" stroke="black" d="M638.15,-454.97C640.91,-456.7 643.69,-458.38 646.5,-460 686.36,-483.03 716.88,-444.55 748.5,-478 806.27,-539.12 827.51,-625.97 831.99,-708.99"/>
<polygon fill="black" stroke="black" points="832,-709.22 836.26,-715.04 832.53,-721.21 828.27,-715.4 832,-709.22"/>
<text text-anchor="middle" x="782" y="-481.8" font-family="Times,serif" font-size="14.00" fill="green">_origin</text>
</g>
<!-- build123d.direct_api.Vector&#45;&gt;build123d.direct_api.Plane -->
<g id="edge27" class="edge">
<title>build123d.direct_api.Vector&#45;&gt;build123d.direct_api.Plane</title>
<path fill="none" stroke="black" d="M638.12,-440.39C640.89,-441.99 643.68,-443.52 646.5,-445 678.97,-462.03 786.03,-435.7 810.5,-463 862.49,-521 874.53,-601.36 869.38,-678.94"/>
<polygon fill="black" stroke="black" points="869.34,-679.4 872.86,-685.69 868.41,-691.36 864.89,-685.07 869.34,-679.4"/>
<text text-anchor="middle" x="843" y="-466.8" font-family="Times,serif" font-size="14.00" fill="green">_origin</text>
<path fill="none" stroke="black" d="M638.34,-455.43C641.03,-457.01 643.76,-458.53 646.5,-460 678.83,-477.29 786.03,-450.7 810.5,-478 866.04,-539.97 877.45,-626.65 870.71,-709.3"/>
<polygon fill="black" stroke="black" points="870.69,-709.51 874.13,-715.85 869.59,-721.46 866.16,-715.12 870.69,-709.51"/>
<text text-anchor="middle" x="844" y="-481.8" font-family="Times,serif" font-size="14.00" fill="green">_origin</text>
</g>
<!-- build123d.direct_api.Vertex -->
<g id="node17" class="node">
<title>build123d.direct_api.Vertex</title>
<polygon fill="none" stroke="black" points="5678.5,-143 5678.5,-302 5934.5,-302 5934.5,-143 5678.5,-143"/>
<text text-anchor="middle" x="5806.5" y="-286.8" font-family="Times,serif" font-size="14.00">Vertex</text>
<polyline fill="none" stroke="black" points="5678.5,-279 5934.5,-279 "/>
<text text-anchor="start" x="5686.5" y="-263.8" font-family="Times,serif" font-size="14.00">X</text>
<text text-anchor="start" x="5686.5" y="-248.8" font-family="Times,serif" font-size="14.00">Y</text>
<text text-anchor="start" x="5686.5" y="-233.8" font-family="Times,serif" font-size="14.00">Z</text>
<text text-anchor="start" x="5686.5" y="-218.8" font-family="Times,serif" font-size="14.00">for_construction : bool</text>
<text text-anchor="start" x="5686.5" y="-203.8" font-family="Times,serif" font-size="14.00">wrapped</text>
<polyline fill="none" stroke="black" points="5678.5,-196 5934.5,-196 "/>
<text text-anchor="start" x="5686.5" y="-180.8" font-family="Times,serif" font-size="14.00">center(): Vector</text>
<text text-anchor="start" x="5686.5" y="-165.8" font-family="Times,serif" font-size="14.00">to_tuple(): tuple[float, float, float]</text>
<text text-anchor="start" x="5686.5" y="-150.8" font-family="Times,serif" font-size="14.00">to_vector(): Vector</text>
<polygon fill="none" stroke="black" points="5678.5,-150.5 5678.5,-309.5 5934.5,-309.5 5934.5,-150.5 5678.5,-150.5"/>
<text text-anchor="middle" x="5806.5" y="-294.3" font-family="Times,serif" font-size="14.00">Vertex</text>
<polyline fill="none" stroke="black" points="5678.5,-286.5 5934.5,-286.5 "/>
<text text-anchor="start" x="5686.5" y="-271.3" font-family="Times,serif" font-size="14.00">X</text>
<text text-anchor="start" x="5686.5" y="-256.3" font-family="Times,serif" font-size="14.00">Y</text>
<text text-anchor="start" x="5686.5" y="-241.3" font-family="Times,serif" font-size="14.00">Z</text>
<text text-anchor="start" x="5686.5" y="-226.3" font-family="Times,serif" font-size="14.00">for_construction : bool</text>
<text text-anchor="start" x="5686.5" y="-211.3" font-family="Times,serif" font-size="14.00">wrapped</text>
<polyline fill="none" stroke="black" points="5678.5,-203.5 5934.5,-203.5 "/>
<text text-anchor="start" x="5686.5" y="-188.3" font-family="Times,serif" font-size="14.00">center(): Vector</text>
<text text-anchor="start" x="5686.5" y="-173.3" font-family="Times,serif" font-size="14.00">to_tuple(): tuple[float, float, float]</text>
<text text-anchor="start" x="5686.5" y="-158.3" font-family="Times,serif" font-size="14.00">to_vector(): Vector</text>
</g>
<!-- build123d.direct_api.Vertex&#45;&gt;build123d.direct_api.Shape -->
<g id="edge10" class="edge">
<title>build123d.direct_api.Vertex&#45;&gt;build123d.direct_api.Shape</title>
<path fill="none" stroke="black" d="M5769.27,-302.21C5746.48,-350.38 5715.31,-416.28 5681.72,-487.31"/>
<polygon fill="none" stroke="black" points="5678.5,-485.91 5677.39,-496.45 5684.83,-488.91 5678.5,-485.91"/>
<path fill="none" stroke="black" d="M5770.39,-309.78C5747.66,-359.37 5716.28,-427.82 5682.4,-501.75"/>
<polygon fill="none" stroke="black" points="5679.02,-500.72 5678.04,-511.27 5685.38,-503.64 5679.02,-500.72"/>
</g>
<!-- build123d.direct_api.Wire -->
<g id="node18" class="node">
<title>build123d.direct_api.Wire</title>
<polygon fill="none" stroke="black" points="7191,-90 7191,-355 8294,-355 8294,-90 7191,-90"/>
<text text-anchor="middle" x="7742.5" y="-339.8" font-family="Times,serif" font-size="14.00">Wire</text>
<polyline fill="none" stroke="black" points="7191,-332 8294,-332 "/>
<polyline fill="none" stroke="black" points="7191,-308 8294,-308 "/>
<text text-anchor="start" x="7199" y="-292.8" font-family="Times,serif" font-size="14.00">chamfer_2d(d: float, vertices: Iterable[Vertex]): Wire</text>
<text text-anchor="start" x="7199" y="-277.8" font-family="Times,serif" font-size="14.00">close(): Wire</text>
<text text-anchor="start" x="7199" y="-262.8" font-family="Times,serif" font-size="14.00">combine(cls: Iterable[Union[Wire, Edge]], list_of_wires: float, tol): list[Wire]</text>
<text text-anchor="start" x="7199" y="-247.8" font-family="Times,serif" font-size="14.00">fillet_2d(radius: float, vertices: Iterable[Vertex]): Wire</text>
<text text-anchor="start" x="7199" y="-232.8" font-family="Times,serif" font-size="14.00">make_circle(cls: float, radius: VectorLike, center: VectorLike, normal): Wire</text>
<text text-anchor="start" x="7199" y="-217.8" font-family="Times,serif" font-size="14.00">make_ellipse(cls: float, x_radius: float, y_radius: VectorLike, center: VectorLike, normal: VectorLike, x_dir: float, angle1: float, angle2: bool, closed): Wire</text>
<text text-anchor="start" x="7199" y="-202.8" font-family="Times,serif" font-size="14.00">make_helix(cls: float, pitch: float, height: float, radius: VectorLike, center: VectorLike, normal: float, angle: bool, lefthand): Wire</text>
<text text-anchor="start" x="7199" y="-187.8" font-family="Times,serif" font-size="14.00">make_polygon(cls: Iterable[VectorLike], vertices: bool, close): Wire</text>
<text text-anchor="start" x="7199" y="-172.8" font-family="Times,serif" font-size="14.00">make_rect(width: float, height: VectorLike, pnt: VectorLike, normal): Wire</text>
<text text-anchor="start" x="7199" y="-157.8" font-family="Times,serif" font-size="14.00">make_wire(cls: Iterable[Edge], edges: bool, sequenced): Wire</text>
<text text-anchor="start" x="7199" y="-142.8" font-family="Times,serif" font-size="14.00">offset_2d(d: float, kind: Kind): list[Wire]</text>
<text text-anchor="start" x="7199" y="-127.8" font-family="Times,serif" font-size="14.00">project_to_shape(target_object: Shape, direction: VectorLike, center: VectorLike): list[Wire]</text>
<text text-anchor="start" x="7199" y="-112.8" font-family="Times,serif" font-size="14.00">stitch(other: Wire): Wire</text>
<text text-anchor="start" x="7199" y="-97.8" font-family="Times,serif" font-size="14.00">to_wire(): Wire</text>
<polygon fill="none" stroke="black" points="7191,-97.5 7191,-362.5 8294,-362.5 8294,-97.5 7191,-97.5"/>
<text text-anchor="middle" x="7742.5" y="-347.3" font-family="Times,serif" font-size="14.00">Wire</text>
<polyline fill="none" stroke="black" points="7191,-339.5 8294,-339.5 "/>
<polyline fill="none" stroke="black" points="7191,-315.5 8294,-315.5 "/>
<text text-anchor="start" x="7199" y="-300.3" font-family="Times,serif" font-size="14.00">chamfer_2d(d: float, vertices: Iterable[Vertex]): Wire</text>
<text text-anchor="start" x="7199" y="-285.3" font-family="Times,serif" font-size="14.00">close(): Wire</text>
<text text-anchor="start" x="7199" y="-270.3" font-family="Times,serif" font-size="14.00">combine(cls: Iterable[Union[Wire, Edge]], list_of_wires: float, tol): list[Wire]</text>
<text text-anchor="start" x="7199" y="-255.3" font-family="Times,serif" font-size="14.00">fillet_2d(radius: float, vertices: Iterable[Vertex]): Wire</text>
<text text-anchor="start" x="7199" y="-240.3" font-family="Times,serif" font-size="14.00">make_circle(cls: float, radius: VectorLike, center: VectorLike, normal): Wire</text>
<text text-anchor="start" x="7199" y="-225.3" font-family="Times,serif" font-size="14.00">make_ellipse(cls: float, x_radius: float, y_radius: VectorLike, center: VectorLike, normal: VectorLike, x_dir: float, angle1: float, angle2: bool, closed): Wire</text>
<text text-anchor="start" x="7199" y="-210.3" font-family="Times,serif" font-size="14.00">make_helix(cls: float, pitch: float, height: float, radius: VectorLike, center: VectorLike, normal: float, angle: bool, lefthand): Wire</text>
<text text-anchor="start" x="7199" y="-195.3" font-family="Times,serif" font-size="14.00">make_polygon(cls: Iterable[VectorLike], vertices: bool, close): Wire</text>
<text text-anchor="start" x="7199" y="-180.3" font-family="Times,serif" font-size="14.00">make_rect(width: float, height: VectorLike, pnt: VectorLike, normal): Wire</text>
<text text-anchor="start" x="7199" y="-165.3" font-family="Times,serif" font-size="14.00">make_wire(cls: Iterable[Edge], edges: bool, sequenced): Wire</text>
<text text-anchor="start" x="7199" y="-150.3" font-family="Times,serif" font-size="14.00">offset_2d(d: float, kind: Kind): list[Wire]</text>
<text text-anchor="start" x="7199" y="-135.3" font-family="Times,serif" font-size="14.00">project_to_shape(target_object: Shape, direction: VectorLike, center: VectorLike): list[Wire]</text>
<text text-anchor="start" x="7199" y="-120.3" font-family="Times,serif" font-size="14.00">stitch(other: Wire): Wire</text>
<text text-anchor="start" x="7199" y="-105.3" font-family="Times,serif" font-size="14.00">to_wire(): Wire</text>
</g>
<!-- build123d.direct_api.Wire&#45;&gt;build123d.direct_api.Mixin1D -->
<g id="edge11" class="edge">
<title>build123d.direct_api.Wire&#45;&gt;build123d.direct_api.Mixin1D</title>
<path fill="none" stroke="black" d="M7618.95,-355.09C7502.99,-478.59 7330.17,-662.66 7212,-788.51"/>
<polygon fill="none" stroke="black" points="7209.3,-786.27 7205.01,-795.96 7214.4,-791.06 7209.3,-786.27"/>
<path fill="none" stroke="black" d="M7622.8,-362.56C7505.62,-491.36 7327.75,-686.84 7208.22,-818.22"/>
<polygon fill="none" stroke="black" points="7205.29,-816.24 7201.15,-826 7210.47,-820.96 7205.29,-816.24"/>
</g>
<!-- build123d.direct_api.Wire&#45;&gt;build123d.direct_api.Shape -->
<g id="edge12" class="edge">
<title>build123d.direct_api.Wire&#45;&gt;build123d.direct_api.Shape</title>
<path fill="none" stroke="black" d="M7454.55,-355.1C7368.34,-389.57 7272.5,-423.16 7181.5,-445 6949.24,-500.74 6879.4,-443 6646.5,-496 6442.76,-542.37 6226.31,-614.91 6035.56,-687.37"/>
<polygon fill="none" stroke="black" points="6034.31,-684.1 6026.21,-690.93 6036.8,-690.64 6034.31,-684.1"/>
<path fill="none" stroke="black" d="M7466.08,-362.56C7377.05,-399.81 7276.75,-436.56 7181.5,-460 6949.56,-517.08 6879.1,-456.69 6646.5,-511 6442.42,-558.65 6226.13,-633.51 6035.6,-708.42"/>
<polygon fill="none" stroke="black" points="6034.28,-705.18 6026.26,-712.1 6036.85,-711.69 6034.28,-705.18"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Before After
Before After

View file

@ -7,7 +7,7 @@ TODO:
from __future__ import annotations
import os
import sys
from math import pi, sqrt, inf, radians
from math import pi, sqrt, inf, radians, degrees
import warnings
import logging
import copy
@ -1222,7 +1222,7 @@ class Rotation(Location):
rot_y.SetRotation(gp_Ax1(gp_Pnt(0, 0, 0), gp_Dir(0, 1, 0)), radians(about_y))
rot_z = gp_Trsf()
rot_z.SetRotation(gp_Ax1(gp_Pnt(0, 0, 0), gp_Dir(0, 0, 1)), radians(about_z))
super().__init__(Location(rot_x * rot_y * rot_z).wrapped)
super().__init__(rot_x * rot_y * rot_z)
#:TypeVar("RotationLike"): Three tuple of angles about x, y, z or Rotation
@ -1927,6 +1927,50 @@ class Shape:
# Helps identify this solid through the use of an ID
self.label: str = ""
@property
def position(self) -> Vector:
"""Get the position component of this Shape's Location"""
return Location(self.wrapped.Location()).position
@position.setter
def position(self, value: VectorLike):
"""Set the position component of this Shape's Location to value"""
gp_trsf = self.wrapped.Location().Transformation()
gp_trsf.SetTranslation(Vector(value).wrapped)
new_location = Location(gp_trsf)
self.wrapped.Location(new_location.wrapped)
@property
def orientation(self) -> Vector:
"""Get the orientation component of this Shape's Location"""
return Vector(
*[degrees(v) for v in Location(self.wrapped.Location()).orientation]
)
@orientation.setter
def orientation(self, rotations: RotationLike):
"""Set the orientation component of this Shape's Location to rotations"""
rotations = Rotation(*rotations) if isinstance(rotations, tuple) else rotations
t_o = gp_Trsf()
t_o.SetTranslationPart(self.position.wrapped)
t_rx = gp_Trsf()
t_rx.SetRotation(
gp_Ax1(gp_Pnt(0, 0, 0), gp_Dir(1, 0, 0)), radians(rotations.about_x)
)
t_ry = gp_Trsf()
t_ry.SetRotation(
gp_Ax1(gp_Pnt(0, 0, 0), gp_Dir(0, 1, 0)), radians(rotations.about_y)
)
t_rz = gp_Trsf()
t_rz.SetRotation(
gp_Ax1(gp_Pnt(0, 0, 0), gp_Dir(0, 0, 1)), radians(rotations.about_z)
)
new_location = Location(t_o * t_rx * t_ry * t_rz)
self.wrapped.Location(new_location.wrapped)
def clean(self) -> Shape:
"""clean