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