mirror of
https://github.com/gumyr/build123d.git
synced 2025-12-15 15:20:37 -08:00
Adding a BuildSketch Shamrock example
This commit is contained in:
parent
a38bc7ed55
commit
7f321a73fe
1 changed files with 53 additions and 0 deletions
53
examples/shamrock.py
Normal file
53
examples/shamrock.py
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
from build123d import *
|
||||
|
||||
|
||||
class Shamrock(BaseSketchObject):
|
||||
"""Sketch Object: Shamrock
|
||||
|
||||
Adds a four leaf clover
|
||||
|
||||
Args:
|
||||
height (float): y axis dimension
|
||||
rotation (float, optional): angle in degrees. Defaults to 0.
|
||||
align (tuple[Align, Align], optional): alignment. Defaults to (Align.CENTER, Align.CENTER).
|
||||
mode (Mode, optional): combination mode. Defaults to Mode.ADD.
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
height: float,
|
||||
rotation: float = 0,
|
||||
align: tuple[Align, Align] = (Align.CENTER, Align.CENTER),
|
||||
mode: Mode = Mode.ADD,
|
||||
):
|
||||
with BuildSketch() as shamrock:
|
||||
with BuildLine():
|
||||
b0 = Bezier((240, 310), (112, 325), (162, 438), (252, 470))
|
||||
b1 = Bezier(b0 @ 1, (136, 431), (73, 589), (179, 643))
|
||||
b2 = Bezier(b1 @ 1, (151, 747), (293, 770), (360, 679))
|
||||
b3 = Bezier(b2 @ 1, (358, 736), (366, 789), (392, 840))
|
||||
l0 = Line(b3 @ 1, (407, 834))
|
||||
b4 = Bezier(l0 @ 1, (366, 781), (374, 670), (374, 670))
|
||||
b5 = Bezier(b4 @ 1, (373, 794), (506, 789), (528, 727))
|
||||
b6 = Bezier(b5 @ 1, (636, 733), (638, 578), (507, 541))
|
||||
b7 = Bezier(b6 @ 1, (628, 559), (651, 380), (575, 365))
|
||||
b8 = Bezier(b7 @ 1, (592, 269), (420, 268), (417, 361))
|
||||
b9 = Bezier(b8 @ 1, (410, 253), (262, 222), b0 @ 0)
|
||||
Mirror(about=Plane.XZ, mode=Mode.REPLACE)
|
||||
MakeFace()
|
||||
Scale(by=height / shamrock.sketch.bounding_box().size.Y)
|
||||
super().__init__(
|
||||
obj=shamrock.sketch.translate(
|
||||
-shamrock.sketch.center(CenterOf.BOUNDING_BOX)
|
||||
),
|
||||
rotation=rotation,
|
||||
align=align,
|
||||
mode=mode,
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__" or "show_object" in locals():
|
||||
shamrock = Shamrock(10)
|
||||
|
||||
if "show_object" in locals():
|
||||
show_object(shamrock)
|
||||
Loading…
Add table
Add a link
Reference in a new issue