Шрифт:
bpy.utils.register_module(__name__)
# Автоматически отображать позицию мыши при запуске
bpy.ops.wm.mouse_position('INVOKE_DEFAULT')
# Другой тестовый вызов, на этот раз вызывается непосредственно
# execute с предустановленными настройками.
#bpy.ops.wm.mouse_position('EXEC_DEFAULT', x=20, y=66)
Всплывающий диалог
Если этот скрипт запустить, появится всплывающее окно, где вы можете задать некоторые свойства. После того, как вы выйдите из всплывающего окна перемещением мыши наружу, свойства будут выведены одновременно в окно информации и на консоль.
В подразделе "Планировка панели и несколько аргументов" мы использовали одну строку для передачи нескольких аргументов в оператор. Здесь мы используем глобальные переменные для той же цели.
<
#----------------------------------------------------------
# File popup.py
# from API documentation
#----------------------------------------------------------
import bpy
from bpy.props import *
theFloat = 9.8765
theBool = False
theString = "Lorem ..."
theEnum = 'one'
class DialogOperator(bpy.types.Operator):
bl_idname = "object.dialog_operator"
bl_label = "Simple Dialog Operator"
my_float = FloatProperty(name="Some Floating Point",
min=0.0, max=100.0)
my_bool = BoolProperty(name="Toggle Option")
my_string = StringProperty(name="String Value")
my_enum = EnumProperty(name="Enum value",
items = [('one', 'eins', 'un'),
('two', 'zwei', 'deux'),
('three', 'drei', 'trois')])
def execute(self, context):
message = "%.3f, %d, '%s' %s" % (self.my_float,
self.my_bool, self.my_string, self.my_enum)
self.report({'INFO'}, message)
print(message)
return {'FINISHED'}
def invoke(self, context, event):
global theFloat, theBool, theString, theEnum
self.my_float = theFloat
self.my_bool = theBool
self.my_string = theString
self.my_enum = theEnum
return context.window_manager.invoke_props_dialog(self)
bpy.utils.register_class(DialogOperator)
# Вызов диалогового окна при загрузке
bpy.ops.object.dialog_operator('INVOKE_DEFAULT')
#
# Панель в районе tools
#
class DialogPanel(bpy.types.Panel):
bl_label = "Dialog"
bl_space_type = "VIEW_3D"
bl_region_type = "UI"
def draw(self, context):
global theFloat, theBool, theString, theEnum
theFloat = 12.345
theBool = True
theString = "Code snippets"
theEnum = 'two'
self.layout.operator("object.dialog_operator")
#
# Регистрация bpy.utils.register_module(__name__)