framework/cg/freecad/Frames/materialOperator.py

85 lines
3.1 KiB
Python
Raw Normal View History

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