Source code for pyleecan.Methods.Machine.Lamination.get_bore_line

# -*- coding: utf-8 -*-
from numpy import pi, exp, linspace

from ....Classes.Arc1 import Arc1
from ....Classes.Arc3 import Arc3
from ....Methods import NotImplementedYetError


[docs]def get_bore_line(self, alpha1, alpha2, label="", ignore_notches=False): """ Parameters ---------- self : Lamination a Lamination object alpha1 : float Starting angle [rad] alpha2 : float Ending angle [rad] label : str the label of the bore line Returns ------- bore_line : list list of bore line """ delta = alpha2 - alpha1 if delta == 0: return [] elif delta > 2 * pi: raise NotImplementedYetError( "Only angle smaller/equal to 2*pi are implemented." ) else: # ignore_notches = 1 if not self.notch or ignore_notches: Rbo = self.get_Rbo() Z1 = Rbo * exp(1j * alpha1) if delta == 2 * pi: Z2 = Rbo * exp(1j * (alpha1 + delta / 2)) line1 = Arc3(begin=Z1, end=Z2, is_trigo_direction=True, label=label) line2 = Arc3(begin=Z2, end=Z1, is_trigo_direction=True, label=label) return [line1, line2] else: Z2 = Rbo * exp(1j * alpha2) return [Arc1(begin=Z1, end=Z2, radius=Rbo, label=label)] else: # === intermediate solution ======================================== # no check for intersection of different notches line_list = self.notch[0].build_geometry(alpha1, alpha2, label=label) # === later ======================================================= """ bore_line = self.get_bore_line(alpha1, alpha2, ignore_notches=True) for notch in notch_shape: notch_line = notch.build_geometry() bore_line = build_intersect_geometry(bore_line, notch_line, inwards=True) """ return line_list