LINUX.ORG.RU

[Blender][API][Python]Какой может быть контекст у quit_blender()?

 , ,


0

1

Даже не знаю относится ли этот вопрос более к Development или Desktop, потому пусть будет в General. Итак, надо сценарием открыть файл со сценой, добавить туда сетку, сохранить файл, закрыть Blender. Для этого я написал такой сценарий:

import bpy

bpy.ops.wm.open_mainfile(filepath="/home/camel/Desktop/cylinder.blend")
bpy.ops.import_scene.obj(filepath="/home/camel/Desktop/monkey.obj")
bpy.ops.wm.save_as_mainfile(filepath="/home/camel/Desktop/cylinder_monkey.blend")
bpy.ops.wm.quit_blender()
Если вводить команды в консоли по одной, то всё происходит как я того и жду. А из сценария не работает. Даже если закомментировать две строчки
import bpy

bpy.ops.wm.open_mainfile(filepath="/home/camel/Desktop/cylinder.blend")
#bpy.ops.import_scene.obj(filepath="/home/camel/Desktop/monkey.obj")
#bpy.ops.wm.save_as_mainfile(filepath="/home/camel/Desktop/cylinder_monkey.blend")
bpy.ops.wm.quit_blender()
То в консоль из которой я вызываю blender вываливается ошибка, а blender остаётся открытым.
Traceback (most recent call last):
  File "/home/camel/Desktop/bpy/add_monkey.bpy", line 6, in <module>
    bpy.ops.wm.quit_blender()
  File "/usr/share/blender/2.55/scripts/modules/bpy/ops.py", line 180, in __call__
    ret = op_call(self.idname_py(), None, kw)
SystemError: Operator bpy.ops.wm.quit_blender.poll() failed, context is incorrect
Что это за неверный контекст вызова quit_blender()? Как задать верный контекст?

★★★★★

Context.

Ага, разобрался. bpy.context это переменная, в которой хранятся параметры открытого окна. Почему-то Blender не может выполнить некоторых операций без открытого окна, зачем нужно открытое окно для сохранения файла, например, я не знаю.

А разгадка одна, вызывать указывая сначала название сцены, а потом название сценария, то есть blender my_scene.blend -P add_mesh.py. Если попытаться вызывать blender -P add_mesh.py my_scene.blend, то сначала будет исполнен сценарий, и лишь потом откроется сцена, потому и не работает ничерта.

Camel ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.