Source code for pyleecan.Methods.Machine.LamHole.plot

# -*- coding: utf-8 -*-

from matplotlib.patches import Circle, Patch
from matplotlib.pyplot import axis, legend

from ....Functions.init_fig import init_fig
from ....definitions import config_dict


PATCH_COLOR = config_dict["PLOT"]["COLOR_DICT"]["PATCH_COLOR"]
MAGNET_COLOR = config_dict["PLOT"]["COLOR_DICT"]["MAGNET_COLOR"]
ROTOR_COLOR = config_dict["PLOT"]["COLOR_DICT"]["ROTOR_COLOR"]
STATOR_COLOR = config_dict["PLOT"]["COLOR_DICT"]["STATOR_COLOR"]


[docs]def plot( self, fig=None, ax=None, is_lam_only=False, sym=1, alpha=0, delta=0, is_edge_only=False, is_show_fig=True, ): """Plot a Lamination with Buried Magnets in a matplotlib fig Parameters ---------- self : LamHole A LamHole object fig : Matplotlib.figure.Figure existing figure to use if None create a new one ax : Matplotlib.axes.Axes object Axis on which to plot the data is_lam_only: bool True to plot only the lamination (remove the magnets) sym : int Symmetry factor (1= plot full machine, 2= half of the machine...) alpha : float angle for rotation (Default value = 0) [rad] delta : complex complex for translation (Default value = 0) is_edge_only: bool To plot transparent Patches is_show_fig : bool To call show at the end of the method Returns ------- None """ # Lamination bore if self.is_stator: lam_color = STATOR_COLOR else: lam_color = ROTOR_COLOR # List of surface to plot the lamination surf_list = self.build_geometry(sym=sym, alpha=alpha, delta=delta) patches = list() for surf in surf_list: if surf.label is not None and "Lamination" in surf.label: patches.extend(surf.get_patches(color=lam_color, is_edge_only=is_edge_only)) elif surf.label is not None and "Magnet" in surf.label and not is_lam_only: patches.extend( surf.get_patches(color=MAGNET_COLOR, is_edge_only=is_edge_only) ) else: patches.extend(surf.get_patches(is_edge_only=is_edge_only)) (fig, axes, patch_leg, label_leg) = init_fig(fig=fig, ax=ax, shape="rectangle") axes.set_xlabel("(m)") axes.set_ylabel("(m)") for patch in patches: axes.add_patch(patch) # Axis Setup axes.axis("equal") # The Lamination is centered in the figure Lim = self.Rext * 1.5 axes.set_xlim(-Lim, Lim) axes.set_ylim(-Lim, Lim) # Set legend if not is_edge_only: if self.is_stator: patch_leg.append(Patch(color=STATOR_COLOR)) label_leg.append("Stator") axes.set_title("Stator with Interior Magnet") else: patch_leg.append(Patch(color=ROTOR_COLOR)) label_leg.append("Rotor") axes.set_title("Rotor with Interior Magnet") if not is_lam_only: patch_leg.append(Patch(color=MAGNET_COLOR)) label_leg.append("Magnet") legend(patch_leg, label_leg) if is_show_fig: fig.show()