Como posso alterar algumas opções do editor de imagem usando python?
Digamos que minha IU tenha a seguinte aparência:
O que eu quero fazer é mudar algumas opções do Editor de imagens bpy.context.window_manager.windows[0].screen.areas[1] através do meu addon. Por exemplo, para alterar a imagem do Editor de imagens, faço algo assim:
texture_name = "face.png"
area = bpy.context.window_manager.windows[0].screen.areas[1]
area.spaces.active.image = bpy.data.images[texture_name]
Caso eu queira alterar, digamos o cabeçalho do Editor de Imagens. Se vai aparecer ou não. Ou a taxa de zoom da imagem. Como vou fazer isso?
Achei isso bpy.context.space_data.show_region_header = Falsee isso bpy.ops.image.view_zoom_ratio(ratio=1.0)usando o botão direito, mas não sei como usar. Porque, por exemplo, se eu usar bpy.context.space_data.show_region_header = Falsedo meu addon, ele não ocultará o cabeçalho do Image Editor, mas o cabeçalho da viewport 3D.
Eu também tento iterar por áreas e fazer bpy.context.space_data.show_region_header = Falsee a bpy.ops.image.view_zoom_ratio(ratio=1.0)partir daí. Mas não consigo encontrar a sintaxe. Porque, por exemplo, bpy.ops.image.view_zoom_ratio(ratio=1.0)deve ser algo parecido area.spaces.view_zoom_ratio(ratio=1.0). O que não funciona e me dá esse erroAttributeError: 'bpy_prop_collection' object has no attribute 'view_zoom_ratio'
Então, alguma ideia de como posso fazer isso?
Respostas
Encontre visualizações do Editor de imagens em screen.areas com filtragem e chame o operador view_zoom_ratio com Overriding Context .
import bpy
override = bpy.context.copy()
for area in bpy.context.screen.areas:
#if area.type != 'IMAGE_EDITOR' or area.ui_type != 'VIEW': # Image Editor View only
#if area.type != 'IMAGE_EDITOR' or area.ui_type != 'UV': # UV Editor View only
if area.type != 'IMAGE_EDITOR':
continue
area.spaces.active.show_region_header = False
override['area'] = area
bpy.ops.image.view_zoom_ratio(override, ratio=1.0)
area.tag_redraw()