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()