Segment (class)

Method code available at https://github.com/Eomys/pyleecan/tree/master/pyleecan/Methods/Geometry/Segment

class Segment(begin=0, end=0, label='', init_dict=None, init_str=None)[source]

Bases: pyleecan.Classes.Line.Line

A segment between two points

VERSION = 1
check()

assert that the line is correct (begin != end)

Parameters

self (Segment) – A Segment object

Returns

Return type

None

Raises

PointSegmentError – The beginning point and the ending point of an Segment can’t be the same

comp_distance(Z)

Compute the distance of a point to the Segment

Parameters
  • self (Segment) – A Segment object

  • Z (complex) – Complex coordinate of the point

Returns

D – distance of a point to the Segment

Return type

float

comp_length()

Compute the length of the line

Parameters

self (Segment) – A Segment object

Returns

length – lenght of the line [m]

Return type

float

Raises

PointSegmentError – Call Segment.check()

discretize(nb_point=0)

Return the discretize version of the Segment. Begin and end are always returned

Parameters
  • self (Segment) – A Segment object

  • nb_point (int) – Number of points to add to discretize the line (Default value = LINE_NPOINT_D)

Returns

list_point – List of complex coordinate of the points

Return type

list

Raises

NbPointSegmentDError – nb_point must be an integer >=

draw_FEMM(femm, nodeprop=None, propname=None, element_size=None, automesh=None, hide=False, group=None)

< Draw the segment in FEMM and assign the property

Parameters
  • femm (FEMMHandler) – client to send command to a FEMM instance

  • nodeprop

    Nodal property

    (Default value = None)

  • propname

    Boundary property ’propname’

    (Default value = None)

  • element_size

    Local element size along segment no greater than element_size

    (Default value = None)

  • automesh – 0 = mesher defers to the element constraint defined by element_size, 1 = mesher automatically chooses mesh size along the selected segments (Default value = None)

  • hide

    0 = not hidden in post-processor, 1 == hidden in post processorc

    (Default value = False)

  • group

    group the segment belongs

    (Default value = None)

get_begin()

Return the begin point of the segment

Parameters

self (Segment) – A Segment object

Returns

begin – Begin point of the Segment

Return type

complex

get_end()

Return the end point of the segment

Parameters

self (Segment) – A Segment object

Returns

end – End point of the Segment

Return type

complex

get_middle()

Return the point at the middle of the Segment

Parameters

self (Segment) – A Segment object

Returns

Zmid – Complex coordinates of the middle of the Segment

Return type

complex

intersect_line(Z1, Z2)

Return a list (0, 1 or 2 complex) of coordinates of the intersection of the segment with a line defined by two complex

Parameters

self (Segment) – A Segment object

Returns

Z_list – Complex coordinates of the intersection (if any, return [begin, end] if the segment is part of the line)

Return type

list

is_on_line(Z)

Check is a point defined by its complex coordinate is on the segment

Parameters
  • self (Segment) – A Segment object

  • Z (complex) – Complex coordinate of the point

Returns

is_on_line – True if the point is on the segment

Return type

bool

plot(fig=None, ax=None, is_arrow=False, linestyle='solid', linewidth=1, color='black', label=None, offset_label=0, fontsize=12)

Plot the segment

Parameters
  • self (Segment) – A Segment 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_arrow (bool) – True to draw a double headed arrow instead of a line

  • linestyle (str) – Line of the line (solid, dotted…)

  • linewidth (int) – Line Width

  • color (str) – Color of the line

  • label (str) – To add a label at the middle of the line

  • offset_label (complex) – Complex value to shift the label from the middle

  • fontsize (int) – Size of the font for the label (if any)

reverse()

Reverse the begin and end point of the Line

Parameters

self (Segment) – An Segment object

rotate(angle)

Rotation of the Segment of angle

Parameters
  • self (Segment) – An Segment Object

  • angle (float) – the angle of rotation [rad]

Returns

Return type

None

scale(scale_factor)

Scale the coordinates of the begin/end

Parameters
  • self (Segment) – A Segment Object

  • scale_factor (float) – the Scale factor [-]

Returns

Return type

None

split_half(is_begin=True)

Cut the line in half (modify the object)

Parameters
  • self (Segment) – An Segment object

  • is_begin (bool) – True to keep the part begin=>middle, False for the part middle=>end

split_line(Z1, Z2, is_top=True, is_join=False, label_join='')

Cut the Segment according to a line defined by two complex

Parameters
  • self (Segment) – An Segment object

  • Z1 (complex) – First point of the cutting Line

  • Z2 (complex) – Second point of the cutting Line

  • is_top (bool) – True to keep the part above the cutting line. “Above” is in the coordinate system with Z1 in 0 and Z2 on the X>0 axis

  • is_join (bool) – True to join the split_list with Segment if there is more that one remaining parts

  • label_join (str) – Label of the join line

Returns

split_list – The selected part of the Segment (0 or 1 segment depending on cutting point)

Return type

list(Segment)

translate(Zt)

Translate the Segment object

Parameters
  • self (Segment) – An Segment object

  • Zt (complex) – Complex value for translation

Returns

Return type

None

save(save_path='', is_folder=False)

Save the object to the save_path

Parameters
  • self – A pyleecan object

  • save_path (str) – path to the folder to save the object

  • is_folder (bool) – to split the object in different files: separate simulation machine and materials

copy(**kwargs)

Return a copy of the class

get_logger()

Get the object logger or its parent’s one

Parameters

obj – A pyleecan object

Returns

logger – Pyleecan object dedicated logger

Return type

logging.Logger

compare(other, name='self')[source]

Compare two objects and return list of differences

as_dict(**kwargs)[source]

Convert this object in a json serializable dict (can be use in __init__). Optional keyword input parameter is for internal use only and may prevent json serializability.

property begin

begin point of the line

Type

complex

property end

end point of the line

Type

complex