Для моего проекта я хочу иметь возможность запускать скрипт Blender python из системной консоли.
Этот минимальный скрипт (см. Ниже) способен выбирать регион, используя оператор select_box . Скрипт работает правильно при запуске из приложения Blender. Однако при запуске из консоли, используя "C:\Program Files\Blender Foundation\Blender 2.81\blender.exe" "C:\Users\Desktop\test.blend" -d --python "D:\Documents\minTest.py"
, программа cra sh выдает следующий вывод:
Switching to fully guarded memory allocator.
Blender 2.81 (sub 16)
Build: 2019-12-04 14:30:40 Windows Release
argv[0] = C:\Program Files\Blender Foundation\Blender 2.81\blender.exe
argv[1] = C:\Users\Desktop\test.blend
argv[2] = -d
argv[3] = --python
argv[4] = D:\Documents\minTest.py
Read prefs: C:\Users\AppData\Roaming\Blender Foundation\Blender\2.81\config\userpref.blend
read file
Version 280 sub 39 date unknown hash unknown
found bundled python: C:\Program Files\Blender Foundation\Blender 2.81\2.81\python
Warning: Add-on 'io_mesh_xyz' was not upgraded for 2.80, ignoring
Warning: Add-on 't26_PointCloudSkinner1_Umbrella' was not upgraded for 2.80, ignoring
Read blend: C:\Users\Desktop\test.blend
read file C:\Users\Desktop\test.blend
Version 281 sub 16 date 2019-12-04 11:32 hash f1aa4d18d49d
***** DEBUG: working
Error : EXCEPTION_ACCESS_VIOLATION
Address : 0x00007FF60F40DCFD
Module : C:\Program Files\Blender Foundation\Blender 2.81\blender.exe
Файл test.blend представляет собой простую сцену запуска , Сценарий minTest.py выглядит следующим образом:
import bpy
def getView3dAreaAndRegion():
for area in bpy.context.screen.areas:
if area.type == "VIEW_3D":
for region in area.regions:
if region.type == "WINDOW":
return area, region
view3dArea, view3dRegion = getView3dAreaAndRegion()
override = bpy.context.copy()
override['area'] = view3dArea
override['region'] = view3dRegion
print("***** DEBUG: working") #Debug to see that the script has launched
bpy.ops.view3d.select_box(override,xmin=100, xmax=500, ymin=100, ymax=300, wait_for_input=False)
Дополнительная информация:
- Я использую Blender 2.81 и Python 3.7 (в комплекте Blender).
- Сценарий работает отлично, если я уберу вызов select_box как в Blender, так и из консоли.
Итак, мои вопросы:
- Почему у меня разные результаты в зависимости от того, как я запускаю скрипт?
- Что мне нужно сделать, чтобы запустить скрипт из системной консоли?