84 lines
3.1 KiB
Python
84 lines
3.1 KiB
Python
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()
|