import FreeCAD as App
import FreeCADGui as Gui



#создаем вкладку с материалами

#концептуально нам нужен лишь обьект, в котором перечислены тела, связанные с материалами

#создаем объект
#указываем референсный материал
#указываем референсное тело
#добавляем все остальные тела, которые имеют такой же цвет


#план-минимум
'''
План:

Сделать приемлемым работу FEM:
1. Проверка на уникальность и повторяемость материалов
2. Проверка на детали, которые не имеют материала
3. Проверка материалов на соответствие требованиям
4. Назначение деталям цвета, соответствующего материалам
5. Черный материал - тем, кто без материала
6. BoM считает плотности деталей и пишет массы. Здесь должна быть функция, считающая массу детали и записывающая ее в свойства детали


'''

doc = App.ActiveDocument
obj = doc.Objects


def partsCheckup(doc):
    for obj in 
    
material = doc.addObject('App::Document')

doc.addObject("App::DocumentObjectGroup", "Materials") #создаем папку с материалами

group.addObject(material)

#открываем и выбираем MaterialEditor

import MaterialEditor
MaterialEditor.openEditor()

doc.addObject('App::')
'''
Нам нужно указать материал в обьекте 
'''

# Создаем папку "Материалы"
material_group = doc.addObject("App::DocumentObjectGroup", "Materials")

'''
нужно импортировать материалы
самое простое - взять целиком блок fem и работать с этим инструментом
в fem они вставляются тупо строкой
мы можем считать, что материал задан a.k.a json или что-то такое


'''

# Создаем файл материалов fcmat
material_file = "путь_к_файлу.fcmat"  # Укажите путь к файлу материалов

# Создаем объект "Материал"
material_obj = doc.addObject("App::MaterialObject", "Материал")
material_obj.Material = material_file

# Получаем список тел в сборке, состоящих из данного материала
part_names = ["Тело1", "Тело2", "Тело3"]  # Укажите имена тел
for part_name in part_names:
    part_obj = doc.getObject(part_name)
    if part_obj:
        material_obj.addObject(part_obj)

# Добавляем объект "Материал" в папку "Материалы"
material_group.addObject(material_obj)

# Обновляем вид дерева построения FreeCAD
FreeCADGui.updateGui()
