работа над модулем сборки (в процессе)
This commit is contained in:
parent
ee1afe7869
commit
a59b3a4775
5 changed files with 60 additions and 3 deletions
11
freecad_workbench/freecad/robossembler/README.md
Normal file
11
freecad_workbench/freecad/robossembler/README.md
Normal file
|
@ -0,0 +1,11 @@
|
|||
Общее руководство работы с планировщиком сборки.
|
||||
|
||||
1. Открыть сборку. С помощью команд верстака Robossembler, используя команды "Create Assembly Parameters", "Create fastener set", "Create assembly sequence", произвести разметку элементов сборки. Произвести экспорт настроек с помощью функции
|
||||
export assembly settings. На выходе получим файл assembly_settings.json
|
||||
2. Запустить geometric_feasibility_predicate/main.py, указав в env.json значения cadFilePath (путь к сборке) и outPath (путь вывода). Рекомендуется хранить все файлы в одном месте с проектом На выходе получается файл adjacency_matrix.json
|
||||
|
||||
3. ( опционально) Запустить файл solve_optimizer , получить упрощенную матрицу смежности в виде reduced_adjacency_matrix.json
|
||||
|
||||
4. Произвести расчет последовательности доступным способом, напр. через get_sequences.json или с помощью asp.
|
||||
|
||||
5. (Если применено упрощение) Добавить исключенные компоненты с помощью соотв. функции.
|
|
@ -8,14 +8,17 @@ import json
|
|||
def get_adjacency_matrix_from_file(file_path):
|
||||
with open(file_path, 'r') as f:
|
||||
adjacency_matrix = np.array(json.load(f))
|
||||
#print(adjacency_matrix)
|
||||
return adjacency_matrix
|
||||
|
||||
|
||||
def get_asm_settings(asm_settings_path):
|
||||
with open(asm_settings_path), 'r') as f:
|
||||
asm_settings = np.array(json.load(f))
|
||||
#print(asm_settings)
|
||||
return asm_settings
|
||||
|
||||
def get_parts_with_fasteners(asm_settings):
|
||||
#def get_parts_with_fasteners(asm_settings):
|
||||
'''
|
||||
"Type": "fastener_set",
|
||||
"Parent": obj.Parent.Label,
|
||||
|
@ -23,12 +26,12 @@ def get_parts_with_fasteners(asm_settings):
|
|||
"Fasteners": fasteners '''
|
||||
#вероятно, тут нужно создавать список объектов
|
||||
|
||||
fastener_set = []
|
||||
# fastener_set = []
|
||||
#чтобы это работало, нужно работать с позициями элементов в дереве
|
||||
#возможно, отработает и через лейблы
|
||||
|
||||
|
||||
return part_names, fasteners
|
||||
#return part_names, fasteners
|
||||
|
||||
def remove_fasteners_from_matrix(adjacency_matrix, part_names, fasteners):
|
||||
fastener_connections = {}
|
||||
|
@ -69,3 +72,41 @@ reduced_matrix, reduced_part_names, fastener_connections = remove_fasteners_from
|
|||
save_to_json(reduced_matrix.tolist(), 'reduced_adjacency_matrix.json')
|
||||
save_to_json(reduced_part_names, 'reduced_part_names.json')
|
||||
save_to_json(fastener_connections, 'fastener_connections.json')
|
||||
|
||||
|
||||
import json
|
||||
|
||||
|
||||
with open('adjacency_matrix.json') as f:
|
||||
adjacency_matrix = json.load(f)
|
||||
with open('assembly_settings.json') as f:
|
||||
assembly_settings = json.load(f)
|
||||
|
||||
|
||||
fasteners_to_exclude = set()
|
||||
for setting in assembly_settings:
|
||||
if setting.get('Type') == 'fastener_set':
|
||||
fasteners_to_exclude.update(setting.get('Fasteners'))
|
||||
|
||||
|
||||
#for fastener in fasteners_to_exclude:
|
||||
# del adjacency_matrix[fastener]
|
||||
|
||||
#здесь должен запуститься файл генерации последовательности сборки
|
||||
#на вход поступает упрощенная матрица смежности
|
||||
|
||||
|
||||
|
||||
with open('assembly_sequence.json') as f:
|
||||
assembly_sequence = json.load(f)
|
||||
#TODO: сделать в виде функции, вызываемой отдельно
|
||||
#Добавляем крепежи в посл. сборки
|
||||
for setting in assembly_settings:
|
||||
if setting.get('Type') == 'fastener_set':
|
||||
parent = setting.get('Parent')
|
||||
child = setting.get('Child')
|
||||
fasteners = set(setting.get('Fasteners'))
|
||||
for step in assembly_sequence:
|
||||
if step.get('Parent') == parent and step.get('Child') == child:
|
||||
step['Fasteners'] = list(fasteners.intersection(step.get('Fasteners', [])))
|
||||
break
|
||||
|
|
5
test_models/ ajacency_matrix.json
Normal file
5
test_models/ ajacency_matrix.json
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"body_down":["body_up","bolt1", "bolt2", "bolt3", "bolt4","sol_gear","planet_gear"],
|
||||
"body_up":["body_down","bolt1", "bolt2", "bolt3", "bolt4","sol_gear"],
|
||||
"body_down":["body_up","bolt1", "bolt2", "bolt3", "bolt4","sol_gear","planet_gear"]
|
||||
}
|
Binary file not shown.
0
test_models/env.json
Normal file
0
test_models/env.json
Normal file
Loading…
Add table
Add a link
Reference in a new issue