Невозможно загрузить последовательные файлы .blend в одном и том же экземпляре Blender - PullRequest
0 голосов
/ 04 декабря 2018

Итак, я работаю над сценарием, который загружает некоторые смешанные файлы из каталога и обрабатывает каждый из них.Однако по какой-то причине после обработки первый файловый блендер просто завершает работу и не обрабатывает другие файлы.Мой основной файл выглядит так:

import os
import sys
import argparse
import utils
import bpy

def get_blend_files(dirpath):
    blend_files = filter(lambda x: x.endswith('.blend'), os.listdir(dirpath))
    blend_files = [os.path.join(dirpath, file) for file in blend_files]
    return blend_files

def parse_args(parser):
    argv = sys.argv
    _tmp_args = parser.parse_known_args(argv)[0]
    argv = argv[argv.index('--') + 1:]
    if _tmp_args.background:
        argv.append('-b')
    return parser.parse_args(argv)

if __name__=='__main__':
    # Parse arguments
    parser = argparse.ArgumentParser()
    parser.add_argument('-b', '--background', action='store_true', help='Run in background mode')
    parser.add_argument('-src', '--source', type=str, help='Blend source directory')
    args = parse_args(parser)

    # Load blender filepaths
    blend_files = get_blend_files(args.source)

    # Open test script in blender text editor
    bpy.ops.text.open(filepath=os.path.join(dir_name, 'test.py'))
    test_script = bpy.data.texts['test.py']

    # Run the test script for each .blend file in the directory
    for i, filepath in enumerate(blend_files):
        sys.argv = [i, filepath]
        exec(test_script.as_string())
    bpy.ops.wm.quit_blender()

А тестовый файл выглядит так:

import sys
import os
import bpy

if __name__=='__main__':
    path = sys.argv[1]
    if os.path.exists(path):
        print('blendfile ' + str(sys.argv[0]), 'ran')
        bpy.ops.wm.open_mainfile(filepath=path)

Для запуска я просто использую blender --python main.py -- -src [blend_directory_path].Если я закомментирую команду open_mainfile, оператор print печатает для каждого смешанного файла в каталоге.Однако, если его там, то я просто получаю распечатку только для первого открытого файла

...