Source code for pyleecan.Methods.Machine.LamHole.build_geometry
# -*- coding: utf-8 -*-
from numpy import pi, exp
from ....Classes.Lamination import Lamination
from ....Classes.Circle import Circle
from ....Classes.SurfLine import SurfLine
from ....Classes.SurfRing import SurfRing
from ....Classes.Arc1 import Arc1
from ....Classes.Segment import Segment
from ....Functions.labels import update_RTS_index
from ....Functions.Geometry.transform_hole_surf import transform_hole_surf
[docs]def build_geometry(self, sym=1, alpha=0, delta=0, is_circular_radius=False):
"""Build the geometry of the LamHole object
Parameters
----------
self : LamHole
The LamHole to build in surface
sym : int
Symmetry factor (1= full machine, 2= half of the machine...)
alpha : float
Angle for rotation [rad]
delta : complex
Complex value for translation
is_circular_radius : bool
True to add surfaces to "close" the Lamination radii
Returns
-------
surf_list : list
list of surfaces needed to draw the lamination
"""
# getting the Lamination surface
surf_list = Lamination.build_geometry(
self, sym=sym, alpha=alpha, delta=delta, is_circular_radius=is_circular_radius
)
# Holes surface(s)
for hole in self.hole:
# Create the first hole surface(s)
surf_hole = hole.build_geometry(alpha=pi / hole.Zh)
surf_list.extend(
transform_hole_surf(
hole_surf_list=surf_hole, Zh=hole.Zh, sym=sym, alpha=0, delta=0
)
)
# Apply the transformations
for surf in surf_list:
surf.rotate(alpha)
surf.translate(delta)
return surf_list