Если после открытия одного .blend файла нам нужно просматривать данные из другого .blend фала, можно воспользоваться контекстом временных данных temp_data.
Для начала определим путь к просматриваемому файлу:
1 |
filepath = bpy.path.abspath("//") + 'external_blend_file.blend' |
Создадим временный контекст данных temp_data для указанного файла:
1 |
with bpy.data.temp_data(filepath=filepath) as temp_data: |
Однако если мы сейчас попытаемся просмотреть содержание временного файла, мы получим пустой список:
1 2 3 |
print(temp_data.objects[:]) # [] |
Чтобы получить доступ к содержимому temp_data его нужно загрузить при помощи функции temp_data.libraries.load():
1 2 |
with temp_data.libraries.load(filepath) as (data_from, data_to): data_to.objects = data_from.objects |
Теперь мы можем просматривать содержимое temp_data
1 2 3 |
print(temp_data.objects[:]) # [bpy.data.objects['Cube'], bpy.data.objects['Empty'], bpy.data.objects['Suzanne']] |
После завершения блока with bpy.data.temp_data(filepath=filepath) as temp_data все временные данные и временный контекст будут очищены.
Полный код:
1 2 3 4 5 6 7 8 9 10 |
filepath = bpy.path.abspath("//") + 'external_blend_file.blend' # using temp data context with bpy.data.temp_data(filepath=filepath) as temp_data: # empty at first print(temp_data.objects[:]) with temp_data.libraries.load(filepath) as (data_from, data_to): data_to.objects = data_from.objects # full of data after reading print(temp_data.objects[:]) |