# Машина с поверхностными постоянными магнитами
# Шаг 9: Локальные размеры сетки и готовая модель
# Запускайте внутри FEMM 5 через File → Open Python Script.
# Исходные учебные модели не изменяются; новый полевой расчёт не выполняется.
import math
# Новый документ: последующие команды относятся только к нему.
newdocument(0)
mi_probdef(0, "millimeters", "planar", 1e-08, 80, 25, 0)
mi_smartmesh(1)
# Материалы задаются явно, без зависимости от установленной библиотеки.
mi_addmaterial("Воздух", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Обмоточная область", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Линейная сталь", 1000, 1000, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addmaterial("Нелинейная сталь", 1, 1, 0, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
mi_addbhpoint("Нелинейная сталь", 0, 0)
mi_addbhpoint("Нелинейная сталь", 0.25, 100)
mi_addbhpoint("Нелинейная сталь", 0.5, 200)
mi_addbhpoint("Нелинейная сталь", 0.90000000000000002, 400)
mi_addbhpoint("Нелинейная сталь", 1.2, 800)
mi_addbhpoint("Нелинейная сталь", 1.45, 2000)
mi_addbhpoint("Нелинейная сталь", 1.6000000000000001, 5000)
mi_addbhpoint("Нелинейная сталь", 1.7, 10000)
mi_addmaterial("Постоянный магнит", 1.05, 1.05, 909456.81766797334, complex(0, 0), 0, 0, 0, 1, 0, 0, 0, 0, 0)
# Токи комплексные; код 1 означает последовательную цепь.
mi_addcircprop("Фаза А", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза В", complex(1.0000000000000002, 0), 1)
mi_addcircprop("Фаза С", complex(-2, 0), 1)
mi_addboundprop("Нулевой потенциал", 0, 0, 0, 0, 0, 0, complex(0, 0), complex(0, 0), 0, 0, 0)
# Координаты сохранены с исходной точностью; единицы — миллиметры.
_nodes = [
    (-170, -170, 0),
    (170, -170, 0),
    (170, 170, 0),
    (-170, 170, 0),
    (60, 0, 0),
    (59.552769098479317, 7.3121606043088487, 0),
    (55.230291207146422, 23.443867709356425, 0),
    (47.918130602837572, 36.108901389122899, 0),
    (45.962666587138678, 38.567256581192353, 0),
    (38.56725658119236, 45.962666587138678, 0),
    (36.108901389122906, 47.918130602837572, 0),
    (23.443867709356422, 55.230291207146422, 0),
    (7.3121606043088496, 59.552769098479317, 0),
    (3.6738190614671318e-15, 60, 0),
    (-7.3121606043088416, 59.552769098479324, 0),
    (-23.443867709356425, 55.230291207146415, 0),
    (-36.108901389122906, 47.918130602837564, 0),
    (-38.56725658119236, 45.962666587138678, 0),
    (-45.962666587138671, 38.567256581192368, 0),
    (-47.918130602837579, 36.108901389122892, 0),
    (-55.230291207146422, 23.443867709356425, 0),
    (-59.552769098479317, 7.3121606043088523, 0),
    (-60, 7.3476381229342635e-15, 0),
    (-59.552769098479324, -7.312160604308839, 0),
    (-55.230291207146422, -23.443867709356415, 0),
    (-47.918130602837572, -36.108901389122906, 0),
    (-45.962666587138678, -38.567256581192353, 0),
    (-38.567256581192368, -45.962666587138671, 0),
    (-36.108901389122899, -47.918130602837572, 0),
    (-23.443867709356429, -55.230291207146415, 0),
    (-7.3121606043088301, -59.552769098479324, 0),
    (-1.1021457184401395e-14, -60, 0),
    (7.3121606043088612, -59.552769098479317, 0),
    (23.443867709356411, -55.230291207146429, 0),
    (36.108901389122877, -47.918130602837586, 0),
    (38.567256581192353, -45.962666587138685, 0),
    (45.962666587138671, -38.567256581192375, 0),
    (47.918130602837572, -36.108901389122899, 0),
    (55.230291207146415, -23.443867709356432, 0),
    (59.552769098479324, -7.3121606043088336, 0),
    (100, 0, 0),
    (99.254615164132204, 12.186934340514748, 0),
    (92.050485345244041, 39.07311284892738, 0),
    (79.863551004729288, 60.181502315204824, 0),
    (76.604444311897808, 64.278760968653927, 0),
    (64.278760968653941, 76.604444311897808, 0),
    (60.181502315204838, 79.863551004729288, 0),
    (39.073112848927373, 92.050485345244041, 0),
    (12.18693434051475, 99.254615164132204, 0),
    (6.1230317691118863e-15, 100, 0),
    (-12.186934340514737, 99.254615164132204, 0),
    (-39.07311284892738, 92.050485345244027, 0),
    (-60.181502315204838, 79.863551004729274, 0),
    (-64.278760968653941, 76.604444311897808, 0),
    (-76.604444311897794, 64.278760968653941, 0),
    (-79.863551004729288, 60.181502315204817, 0),
    (-92.050485345244041, 39.07311284892738, 0),
    (-99.254615164132204, 12.186934340514755, 0),
    (-100, 1.2246063538223773e-14, 0),
    (-99.254615164132204, -12.18693434051473, 0),
    (-92.050485345244041, -39.073112848927352, 0),
    (-79.863551004729288, -60.181502315204838, 0),
    (-76.604444311897808, -64.278760968653927, 0),
    (-64.278760968653941, -76.604444311897794, 0),
    (-60.181502315204824, -79.863551004729288, 0),
    (-39.07311284892738, -92.050485345244027, 0),
    (-12.186934340514718, -99.254615164132204, 0),
    (-1.8369095307335659e-14, -100, 0),
    (12.186934340514769, -99.254615164132204, 0),
    (39.073112848927352, -92.050485345244056, 0),
    (60.181502315204796, -79.863551004729302, 0),
    (64.278760968653927, -76.604444311897808, 0),
    (76.60444431189778, -64.278760968653955, 0),
    (79.863551004729288, -60.181502315204824, 0),
    (92.050485345244027, -39.073112848927387, 0),
    (99.254615164132204, -12.186934340514723, 0),
    (84.366422889512378, -10.358894189437514, 0),
    (85, -2.0818308014980413e-14, 0),
    (84.366422889512364, 10.358894189437548, 0),
    (78.242912543457436, 33.212145921588274, 0),
    (67.884018354019886, 51.154276967924105, 0),
    (51.154276967924112, 67.884018354019886, 0),
    (33.212145921588267, 78.242912543457436, 0),
    (10.358894189437537, 84.366422889512364, 0),
    (5.2045770037451033e-15, 85, 0),
    (-10.358894189437526, 84.366422889512378, 0),
    (-33.212145921588274, 78.242912543457422, 0),
    (-51.154276967924112, 67.884018354019886, 0),
    (-67.884018354019901, 51.154276967924091, 0),
    (-78.242912543457436, 33.212145921588274, 0),
    (-84.366422889512364, 10.358894189437541, 0),
    (-85, 1.0409154007490207e-14, 0),
    (-84.366422889512378, -10.358894189437521, 0),
    (-78.242912543457436, -33.212145921588252, 0),
    (-67.884018354019886, -51.154276967924112, 0),
    (-51.154276967924105, -67.884018354019886, 0),
    (-33.212145921588274, -78.242912543457422, 0),
    (-10.35889418943751, -84.366422889512378, 0),
    (-1.561373101123531e-14, -85, 0),
    (10.358894189437553, -84.366422889512364, 0),
    (33.212145921588245, -78.242912543457436, 0),
    (51.154276967924076, -67.884018354019915, 0),
    (67.884018354019886, -51.154276967924105, 0),
    (78.242912543457422, -33.212145921588281, 0),
    (18, 0, 2),
    (17.865830729543795, 2.1936481812926547, 2),
    (16.569087362143925, 7.0331603128069275, 2),
    (14.37543918085127, 10.832670416736869, 2),
    (13.788799976141604, 11.570176974357707, 2),
    (11.570176974357709, 13.788799976141604, 2),
    (10.832670416736871, 14.37543918085127, 2),
    (7.0331603128069267, 16.569087362143925, 2),
    (2.1936481812926547, 17.865830729543795, 2),
    (1.1021457184401395e-15, 18, 2),
    (-2.1936481812926525, 17.865830729543799, 2),
    (-7.0331603128069275, 16.569087362143925, 2),
    (-10.832670416736871, 14.375439180851268, 2),
    (-11.570176974357709, 13.788799976141604, 2),
    (-13.788799976141602, 11.570176974357711, 2),
    (-14.375439180851274, 10.832670416736867, 2),
    (-16.569087362143925, 7.0331603128069275, 2),
    (-17.865830729543795, 2.193648181292656, 2),
    (-18, 2.2042914368802791e-15, 2),
    (-17.865830729543799, -2.1936481812926516, 2),
    (-16.569087362143925, -7.033160312806924, 2),
    (-14.37543918085127, -10.832670416736871, 2),
    (-13.788799976141604, -11.570176974357707, 2),
    (-11.570176974357711, -13.788799976141602, 2),
    (-10.832670416736869, -14.37543918085127, 2),
    (-7.0331603128069293, -16.569087362143925, 2),
    (-2.1936481812926489, -17.865830729543799, 2),
    (-3.3064371553204186e-15, -18, 2),
    (2.1936481812926583, -17.865830729543795, 2),
    (7.0331603128069231, -16.569087362143929, 2),
    (10.832670416736862, -14.375439180851275, 2),
    (11.570176974357707, -13.788799976141606, 2),
    (13.7887999761416, -11.570176974357713, 2),
    (14.37543918085127, -10.832670416736869, 2),
    (16.569087362143925, -7.0331603128069302, 2),
    (17.865830729543799, -2.1936481812926503, 2),
    (48, 0, 2),
    (47.642215278783453, 5.8497284834470786, 2),
    (44.184232965717136, 18.75509416748514, 2),
    (38.334504482270056, 28.887121111298317, 2),
    (36.770133269710946, 30.853805264953884, 2),
    (30.853805264953891, 36.770133269710946, 2),
    (28.88712111129832, 38.334504482270056, 2),
    (18.75509416748514, 44.184232965717136, 2),
    (5.8497284834470795, 47.642215278783453, 2),
    (2.9390552491737054e-15, 48, 2),
    (-5.8497284834470733, 47.642215278783461, 2),
    (-18.75509416748514, 44.184232965717129, 2),
    (-28.88712111129832, 38.334504482270049, 2),
    (-30.853805264953891, 36.770133269710946, 2),
    (-36.770133269710939, 30.853805264953895, 2),
    (-38.334504482270063, 28.887121111298313, 2),
    (-44.184232965717136, 18.75509416748514, 2),
    (-47.642215278783453, 5.8497284834470822, 2),
    (-48, 5.8781104983474108e-15, 2),
    (-47.642215278783461, -5.8497284834470706, 2),
    (-44.184232965717136, -18.755094167485129, 2),
    (-38.334504482270056, -28.88712111129832, 2),
    (-36.770133269710946, -30.853805264953884, 2),
    (-30.853805264953895, -36.770133269710939, 2),
    (-28.887121111298317, -38.334504482270056, 2),
    (-18.755094167485144, -44.184232965717129, 2),
    (-5.8497284834470644, -47.642215278783461, 2),
    (-8.8171657475211163e-15, -48, 2),
    (5.8497284834470893, -47.642215278783453, 2),
    (18.755094167485126, -44.184232965717143, 2),
    (28.887121111298299, -38.334504482270063, 2),
    (30.853805264953884, -36.770133269710954, 2),
    (36.770133269710932, -30.853805264953898, 2),
    (38.334504482270056, -28.887121111298317, 2),
    (44.184232965717129, -18.755094167485147, 2),
    (47.642215278783461, -5.8497284834470671, 2),
    (57, 0, 2),
    (56.575130643555354, 6.9465525740934062, 2),
    (52.468776646789102, 22.271674323888604, 2),
    (45.522224072695693, 34.303456319666751, 2),
    (43.664533257781748, 36.638893752132738, 2),
    (36.638893752132745, 43.664533257781748, 2),
    (34.303456319666758, 45.522224072695693, 2),
    (22.2716743238886, 52.468776646789102, 2),
    (6.9465525740934071, 56.575130643555354, 2),
    (3.4901281083937752e-15, 57, 2),
    (-6.9465525740934, 56.575130643555362, 2),
    (-22.271674323888604, 52.468776646789095, 2),
    (-34.303456319666758, 45.522224072695685, 2),
    (-36.638893752132745, 43.664533257781748, 2),
    (-43.664533257781741, 36.638893752132752, 2),
    (-45.5222240726957, 34.303456319666743, 2),
    (-52.468776646789102, 22.271674323888604, 2),
    (-56.575130643555354, 6.9465525740934098, 2),
    (-57, 6.9802562167875504e-15, 2),
    (-56.575130643555362, -6.9465525740933964, 2),
    (-52.468776646789102, -22.271674323888593, 2),
    (-45.522224072695693, -34.303456319666758, 2),
    (-43.664533257781748, -36.638893752132738, 2),
    (-36.638893752132752, -43.664533257781741, 2),
    (-34.303456319666751, -45.522224072695693, 2),
    (-22.271674323888607, -52.468776646789095, 2),
    (-6.9465525740933884, -56.575130643555362, 2),
    (-1.0470384325181326e-14, -57, 2),
    (6.9465525740934178, -56.575130643555354, 2),
    (22.27167432388859, -52.468776646789109, 2),
    (34.303456319666729, -45.522224072695707, 2),
    (36.638893752132738, -43.664533257781756, 2),
    (43.664533257781734, -36.638893752132759, 2),
    (45.522224072695693, -34.303456319666751, 2),
    (52.468776646789095, -22.271674323888611, 2),
    (56.575130643555362, -6.946552574093392, 2),
]
for x, y, group in _nodes:
    mi_addnode(x, y)
    if group:
        mi_selectnode(x, y)
        mi_setnodeprop('', group)
        mi_clearselected()
# Отрезки: индексы узлов, локальный размер, имя границы, видимость, группа.
_segments = [
    (0, 1, -1, "Нулевой потенциал", 0, 0),
    (1, 2, -1, "Нулевой потенциал", 0, 0),
    (2, 3, -1, "Нулевой потенциал", 0, 0),
    (3, 0, -1, "Нулевой потенциал", 0, 0),
    (39, 76, -1, "", 0, 0),
    (5, 78, -1, "", 0, 0),
    (6, 79, -1, "", 0, 0),
    (7, 80, -1, "", 0, 0),
    (10, 81, -1, "", 0, 0),
    (11, 82, -1, "", 0, 0),
    (12, 83, -1, "", 0, 0),
    (14, 85, -1, "", 0, 0),
    (15, 86, -1, "", 0, 0),
    (16, 87, -1, "", 0, 0),
    (19, 88, -1, "", 0, 0),
    (20, 89, -1, "", 0, 0),
    (21, 90, -1, "", 0, 0),
    (23, 92, -1, "", 0, 0),
    (24, 93, -1, "", 0, 0),
    (25, 94, -1, "", 0, 0),
    (28, 95, -1, "", 0, 0),
    (29, 96, -1, "", 0, 0),
    (30, 97, -1, "", 0, 0),
    (32, 99, -1, "", 0, 0),
    (33, 100, -1, "", 0, 0),
    (34, 101, -1, "", 0, 0),
    (37, 102, -1, "", 0, 0),
    (38, 103, -1, "", 0, 0),
    (172, 208, -1, "", 0, 2),
    (144, 180, -1, "", 0, 2),
    (145, 181, -1, "", 0, 2),
    (153, 189, -1, "", 0, 2),
    (154, 190, -1, "", 0, 2),
    (162, 198, -1, "", 0, 2),
    (163, 199, -1, "", 0, 2),
    (171, 207, -1, "", 0, 2),
]
for a, b, size, boundary, hidden, group in _segments:
    x0, y0 = _nodes[a][:2]
    x1, y1 = _nodes[b][:2]
    mi_addsegment(x0, y0, x1, y1)
    mi_selectsegment((x0+x1)/2, (y0+y1)/2)
    mi_setsegmentprop(boundary, size, 1 if size <= 0 else 0, hidden, group)
    mi_clearselected()
# Дуги: угол против часовой стрелки и максимальный угол элемента в градусах.
_arcs = [
    (4, 5, 7, 4, "", 0, 0),
    (5, 6, 16, 4, "", 0, 0),
    (6, 7, 14, 4, "", 0, 0),
    (7, 8, 3, 4, "", 0, 0),
    (8, 9, 10, 4, "", 0, 0),
    (9, 10, 3, 4, "", 0, 0),
    (10, 11, 14, 4, "", 0, 0),
    (11, 12, 16, 4, "", 0, 0),
    (12, 13, 7, 4, "", 0, 0),
    (13, 14, 7, 4, "", 0, 0),
    (14, 15, 16, 4, "", 0, 0),
    (15, 16, 14, 4, "", 0, 0),
    (16, 17, 3, 4, "", 0, 0),
    (17, 18, 10, 4, "", 0, 0),
    (18, 19, 3, 4, "", 0, 0),
    (19, 20, 14, 4, "", 0, 0),
    (20, 21, 16, 4, "", 0, 0),
    (21, 22, 7, 4, "", 0, 0),
    (22, 23, 7, 4, "", 0, 0),
    (23, 24, 16, 4, "", 0, 0),
    (24, 25, 14, 4, "", 0, 0),
    (25, 26, 3, 4, "", 0, 0),
    (26, 27, 10, 4, "", 0, 0),
    (27, 28, 3, 4, "", 0, 0),
    (28, 29, 14, 4, "", 0, 0),
    (29, 30, 16, 4, "", 0, 0),
    (30, 31, 7, 4, "", 0, 0),
    (31, 32, 7, 4, "", 0, 0),
    (32, 33, 16, 4, "", 0, 0),
    (33, 34, 14, 4, "", 0, 0),
    (34, 35, 3, 4, "", 0, 0),
    (35, 36, 10, 4, "", 0, 0),
    (36, 37, 3, 4, "", 0, 0),
    (37, 38, 14, 4, "", 0, 0),
    (38, 39, 16, 4, "", 0, 0),
    (39, 4, 7, 4, "", 0, 0),
    (40, 41, 7, 4, "", 0, 0),
    (41, 42, 16, 4, "", 0, 0),
    (42, 43, 14, 4, "", 0, 0),
    (43, 44, 3, 4, "", 0, 0),
    (44, 45, 10, 4, "", 0, 0),
    (45, 46, 3, 4, "", 0, 0),
    (46, 47, 14, 4, "", 0, 0),
    (47, 48, 16, 4, "", 0, 0),
    (48, 49, 7, 4, "", 0, 0),
    (49, 50, 7, 4, "", 0, 0),
    (50, 51, 16, 4, "", 0, 0),
    (51, 52, 14, 4, "", 0, 0),
    (52, 53, 3, 4, "", 0, 0),
    (53, 54, 10, 4, "", 0, 0),
    (54, 55, 3, 4, "", 0, 0),
    (55, 56, 14, 4, "", 0, 0),
    (56, 57, 16, 4, "", 0, 0),
    (57, 58, 7, 4, "", 0, 0),
    (58, 59, 7, 4, "", 0, 0),
    (59, 60, 16, 4, "", 0, 0),
    (60, 61, 14, 4, "", 0, 0),
    (61, 62, 3, 4, "", 0, 0),
    (62, 63, 10, 4, "", 0, 0),
    (63, 64, 3, 4, "", 0, 0),
    (64, 65, 14, 4, "", 0, 0),
    (65, 66, 16, 4, "", 0, 0),
    (66, 67, 7, 4, "", 0, 0),
    (67, 68, 7, 4, "", 0, 0),
    (68, 69, 16, 4, "", 0, 0),
    (69, 70, 14, 4, "", 0, 0),
    (70, 71, 3, 4, "", 0, 0),
    (71, 72, 10, 4, "", 0, 0),
    (72, 73, 3, 4, "", 0, 0),
    (73, 74, 14, 4, "", 0, 0),
    (74, 75, 16, 4, "", 0, 0),
    (75, 40, 7, 4, "", 0, 0),
    (76, 77, 7, 4, "", 0, 0),
    (77, 78, 7, 4, "", 0, 0),
    (79, 80, 14, 4, "", 0, 0),
    (81, 82, 14, 4, "", 0, 0),
    (83, 84, 7, 4, "", 0, 0),
    (84, 85, 7, 4, "", 0, 0),
    (86, 87, 14, 4, "", 0, 0),
    (88, 89, 14, 4, "", 0, 0),
    (90, 91, 7, 4, "", 0, 0),
    (91, 92, 7, 4, "", 0, 0),
    (93, 94, 14, 4, "", 0, 0),
    (95, 96, 14, 4, "", 0, 0),
    (97, 98, 7, 4, "", 0, 0),
    (98, 99, 7, 4, "", 0, 0),
    (100, 101, 14, 4, "", 0, 0),
    (102, 103, 14, 4, "", 0, 0),
    (104, 105, 7, 4, "", 0, 2),
    (105, 106, 16, 4, "", 0, 2),
    (106, 107, 14, 4, "", 0, 2),
    (107, 108, 3, 4, "", 0, 2),
    (108, 109, 10, 4, "", 0, 2),
    (109, 110, 3, 4, "", 0, 2),
    (110, 111, 14, 4, "", 0, 2),
    (111, 112, 16, 4, "", 0, 2),
    (112, 113, 7, 4, "", 0, 2),
    (113, 114, 7, 4, "", 0, 2),
    (114, 115, 16, 4, "", 0, 2),
    (115, 116, 14, 4, "", 0, 2),
    (116, 117, 3, 4, "", 0, 2),
    (117, 118, 10, 4, "", 0, 2),
    (118, 119, 3, 4, "", 0, 2),
    (119, 120, 14, 4, "", 0, 2),
    (120, 121, 16, 4, "", 0, 2),
    (121, 122, 7, 4, "", 0, 2),
    (122, 123, 7, 4, "", 0, 2),
    (123, 124, 16, 4, "", 0, 2),
    (124, 125, 14, 4, "", 0, 2),
    (125, 126, 3, 4, "", 0, 2),
    (126, 127, 10, 4, "", 0, 2),
    (127, 128, 3, 4, "", 0, 2),
    (128, 129, 14, 4, "", 0, 2),
    (129, 130, 16, 4, "", 0, 2),
    (130, 131, 7, 4, "", 0, 2),
    (131, 132, 7, 4, "", 0, 2),
    (132, 133, 16, 4, "", 0, 2),
    (133, 134, 14, 4, "", 0, 2),
    (134, 135, 3, 4, "", 0, 2),
    (135, 136, 10, 4, "", 0, 2),
    (136, 137, 3, 4, "", 0, 2),
    (137, 138, 14, 4, "", 0, 2),
    (138, 139, 16, 4, "", 0, 2),
    (139, 104, 7, 4, "", 0, 2),
    (140, 141, 7, 4, "", 0, 2),
    (141, 142, 16, 4, "", 0, 2),
    (142, 143, 14, 4, "", 0, 2),
    (143, 144, 3, 4, "", 0, 2),
    (144, 145, 10, 4, "", 0, 2),
    (145, 146, 3, 4, "", 0, 2),
    (146, 147, 14, 4, "", 0, 2),
    (147, 148, 16, 4, "", 0, 2),
    (148, 149, 7, 4, "", 0, 2),
    (149, 150, 7, 4, "", 0, 2),
    (150, 151, 16, 4, "", 0, 2),
    (151, 152, 14, 4, "", 0, 2),
    (152, 153, 3, 4, "", 0, 2),
    (153, 154, 10, 4, "", 0, 2),
    (154, 155, 3, 4, "", 0, 2),
    (155, 156, 14, 4, "", 0, 2),
    (156, 157, 16, 4, "", 0, 2),
    (157, 158, 7, 4, "", 0, 2),
    (158, 159, 7, 4, "", 0, 2),
    (159, 160, 16, 4, "", 0, 2),
    (160, 161, 14, 4, "", 0, 2),
    (161, 162, 3, 4, "", 0, 2),
    (162, 163, 10, 4, "", 0, 2),
    (163, 164, 3, 4, "", 0, 2),
    (164, 165, 14, 4, "", 0, 2),
    (165, 166, 16, 4, "", 0, 2),
    (166, 167, 7, 4, "", 0, 2),
    (167, 168, 7, 4, "", 0, 2),
    (168, 169, 16, 4, "", 0, 2),
    (169, 170, 14, 4, "", 0, 2),
    (170, 171, 3, 4, "", 0, 2),
    (171, 172, 10, 4, "", 0, 2),
    (172, 173, 3, 4, "", 0, 2),
    (173, 174, 14, 4, "", 0, 2),
    (174, 175, 16, 4, "", 0, 2),
    (175, 140, 7, 4, "", 0, 2),
    (176, 177, 7, 4, "", 0, 2),
    (177, 178, 16, 4, "", 0, 2),
    (178, 179, 14, 4, "", 0, 2),
    (179, 180, 3, 4, "", 0, 2),
    (180, 181, 10, 4, "", 0, 2),
    (181, 182, 3, 4, "", 0, 2),
    (182, 183, 14, 4, "", 0, 2),
    (183, 184, 16, 4, "", 0, 2),
    (184, 185, 7, 4, "", 0, 2),
    (185, 186, 7, 4, "", 0, 2),
    (186, 187, 16, 4, "", 0, 2),
    (187, 188, 14, 4, "", 0, 2),
    (188, 189, 3, 4, "", 0, 2),
    (189, 190, 10, 4, "", 0, 2),
    (190, 191, 3, 4, "", 0, 2),
    (191, 192, 14, 4, "", 0, 2),
    (192, 193, 16, 4, "", 0, 2),
    (193, 194, 7, 4, "", 0, 2),
    (194, 195, 7, 4, "", 0, 2),
    (195, 196, 16, 4, "", 0, 2),
    (196, 197, 14, 4, "", 0, 2),
    (197, 198, 3, 4, "", 0, 2),
    (198, 199, 10, 4, "", 0, 2),
    (199, 200, 3, 4, "", 0, 2),
    (200, 201, 14, 4, "", 0, 2),
    (201, 202, 16, 4, "", 0, 2),
    (202, 203, 7, 4, "", 0, 2),
    (203, 204, 7, 4, "", 0, 2),
    (204, 205, 16, 4, "", 0, 2),
    (205, 206, 14, 4, "", 0, 2),
    (206, 207, 3, 4, "", 0, 2),
    (207, 208, 10, 4, "", 0, 2),
    (208, 209, 3, 4, "", 0, 2),
    (209, 210, 14, 4, "", 0, 2),
    (210, 211, 16, 4, "", 0, 2),
    (211, 176, 7, 4, "", 0, 2),
]
for a, b, angle, max_angle, boundary, hidden, group in _arcs:
    x0, y0 = _nodes[a][:2]
    x1, y1 = _nodes[b][:2]
    mi_addarc(x0, y0, x1, y1, angle, max_angle)
    half = math.radians(angle)/2
    cx = (x0+x1)/2 - (y1-y0)/(2*math.tan(half))
    cy = (y0+y1)/2 + (x1-x0)/(2*math.tan(half))
    xm = cx + (x0-cx)*math.cos(half) - (y0-cy)*math.sin(half)
    ym = cy + (x0-cx)*math.sin(half) + (y0-cy)*math.cos(half)
    mi_selectarcsegment(xm, ym)
    mi_setarcsegmentprop(max_angle, boundary, hidden, group)
    mi_clearselected()
# Метки: положение, материал, размер элемента, цепь, намагничивание, группа, витки.
_labels = [
    (144.5, 144.5, "Воздух", 8.5, "", 0, 0, 1),
    (0, 94, "Линейная сталь", 3, "", 0, 1, 1),
    (73, 0, "Обмоточная область", 2, "Фаза А", 0, 1, 40),
    (63.219854476264025, 36.499999999999993, "Обмоточная область", 2, "Фаза С", 0, 1, -40),
    (36.500000000000007, 63.219854476264018, "Обмоточная область", 2, "Фаза В", 0, 1, 40),
    (4.469813191451677e-15, 73, "Обмоточная область", 2, "Фаза А", 0, 1, -40),
    (-36.499999999999986, 63.219854476264025, "Обмоточная область", 2, "Фаза С", 0, 1, 40),
    (-63.219854476264025, 36.499999999999993, "Обмоточная область", 2, "Фаза В", 0, 1, -40),
    (-73, 8.939626382903354e-15, "Обмоточная область", 2, "Фаза А", 0, 1, 40),
    (-63.219854476264018, -36.500000000000007, "Обмоточная область", 2, "Фаза С", 0, 1, -40),
    (-36.500000000000036, -63.219854476264004, "Обмоточная область", 2, "Фаза В", 0, 1, 40),
    (-1.3409439574355031e-14, -73, "Обмоточная область", 2, "Фаза А", 0, 1, -40),
    (36.500000000000007, -63.219854476264018, "Обмоточная область", 2, "Фаза С", 0, 1, 40),
    (63.219854476264004, -36.500000000000036, "Обмоточная область", 2, "Фаза В", 0, 1, -40),
    (22.627416997969522, 22.627416997969519, "Линейная сталь", 2, "", 0, 2, 1),
    (52, 0, "Постоянный магнит", 1.5, "", "theta", 2, 1),
    (36.769552621700477, 36.76955262170047, "Воздух", 1, "", 0, 2, 1),
    (3.1839765199381809e-15, 52, "Постоянный магнит", 1.5, "", "theta+180", 2, 1),
    (-36.76955262170047, 36.769552621700477, "Воздух", 1, "", 0, 2, 1),
    (-52, 6.3679530398763617e-15, "Постоянный магнит", 1.5, "", "theta", 2, 1),
    (-36.769552621700477, -36.76955262170047, "Воздух", 1, "", 0, 2, 1),
    (-9.5519295598145426e-15, -52, "Постоянный магнит", 1.5, "", "theta+180", 2, 1),
    (36.769552621700463, -36.769552621700477, "Воздух", 1, "", 0, 2, 1),
    (0, 0, "Воздух", 2, "", 0, 2, 1),
    (56.421980601819094, 17.249930578641468, "Воздух", 0.34999999999999998, "", 0, 0, 1),
]
for x, y, material, size, circuit, direction, group, turns in _labels:
    mi_addblocklabel(x, y)
    if material:
        mi_selectlabel(x, y)
        mi_setblockprop(material, 1 if size <= 0 else 0, size, circuit, direction, group, turns)
        mi_clearselected()
mi_zoomnatural()
# Скрипт воспроизводит этап в памяти. При необходимости сохраните свою копию через File → Save As.
print("Готов шаг 9. Модель полная; автоматический расчёт не запускался.")
