"""Проверка размеров и назначение стороны обмотки.

Среда: встроенный MicroPython FEMM 5.
Требуется подготовленный документ или решение из практикума; условия запуска и имена объектов указаны в комментариях.
Параметры, единицы величин и порядок вывода пояснены по стадиям.
"""

# Контроль согласованности размеров: радиус расточки и воздушный зазор в мм.
# В данном примере проверка размеров сама по себе не перестраивает геометрию.
bore_radius_mm = 30.0
gap_mm = 0.8
rotor_radius_mm = bore_radius_mm - gap_mm
if not (0 < gap_mm < bore_radius_mm):
    raise ValueError("Недопустимый воздушный зазор")
# Откройте учебный Поверхностные-магниты-09-Готовая-модель.fem: все четыре стороны фазы А существуют.
# Согласованно изменяем прямые и обратные стороны, сохраняя замкнутую обмотку.
# Откройте модель Поверхностные-магниты-09-Готовая-модель.fem с поверхностными магнитами и фазной цепью «Фаза А».
# До изменения свойств создаём отдельную рабочую копию.
mi_saveas("II01-1_Поверхностные-магниты_рабочая.fem")
# Четыре координаты задают метки сторон фазы А.
# Знак числа витков определяет направление проводников в сечении.
for x, y, turns in [(73, 0, 20), (0, 73, -20), (-73, 0, 20), (0, -73, -20)]:
    mi_selectlabel(x, y)
    # Аргументы: материал; автоматическая сетка; размер сетки, мм; цепь;
    # угол намагничивания; группа; число витков со знаком.
    # «Обмоточная область» и «Фаза А» — имена материала и цепи в русской модели.
    mi_setblockprop("Обмоточная область", 0, 2, "Фаза А", 0, 1, turns)
    # Снимаем выделение, чтобы следующая команда действовала только на новую область.
    mi_clearselected()
