Книга: Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода
Панель свойств
Панель свойств
Свойства обсуждались в разделе Свойства, но мы не объяснили, как отображать заказные свойства на панели. Этот скрипт как раз делает это. RNA-свойство отображается синтаксисом
layout.prop(ob, 'myRnaInt')
ID-свойства отображаются с помощью
layout.prop(ob, '["myRnaInt"]')
Заметьте, что панель регистрируется явно с помощью bpy.utils.register_class(MyPropPanel)
вместо использования register_module, который регистрирует всё. Какой метод использовать, не имеет значения в этом примере, поскольку MyPropPanel
- единственное, что нужно зарегистрировать.
#----------------------------------------------------------
# File panel_props.py
#----------------------------------------------------------
import bpy
from bpy.props import *
# Очистка сцены и создание нескольких объектов
bpy.ops.object.select_by_type(type='MESH')
bpy.ops.object.delete()
bpy.ops.mesh.primitive_cube_add(location=(-3,0,0))
cube = bpy.context.object
bpy.ops.mesh.primitive_cylinder_add(location=(0,0,0))
cyl = bpy.context.object
bpy.ops.mesh.primitive_uv_sphere_add(location=(3,0,0))
sphere = bpy.context.object
# Определение RNA-свойств для каждого объекта
bpy.types.Object.myRnaInt = IntProperty(
name="RNA int",
min = -100, max = 100,
default = 33)
# Определение RNA-свойств для каждого меша
bpy.types.Mesh.myRnaFloat = FloatProperty(
name="RNA float",
default = 12.345)
# Присвоение RNA-свойств кубу
cube.myRnaInt = -99
cube.data.myRnaFloat = -1
# Создание ID-свойств посредством присвоения
cube["MyIdString"] = "I am an ID prop"
cube.data["MyIdBool"] = True
# Панель свойств
class MyPropPanel(bpy.types.Panel):
bl_label = "My properties"
bl_space_type = "VIEW_3D"
bl_region_type = "UI"
def draw(self, context):
ob = context.object
if not ob:
return
layout = self.layout
layout.prop(ob, 'myRnaInt')
try:
ob["MyIdString"]
layout.prop(ob, '["MyIdString"]')
except:
pass
if ob.type == 'MESH':
me = ob.data
layout.prop(me, 'myRnaFloat')
try:
me["MyIdBool"]
layout.prop(me, '["MyIdBool"]')
except:
pass
# Регистрация
bpy.utils.register_class(MyPropPanel)
- Панели и кнопки
- Планировка панели и несколько аргументов
- Панель свойств
- Использование свойств сцены для сохранения информации
- Опрос (Polling)
- Динамическое выпадающее меню
- Объявление оператора и добавление его в меню
- Модальный оператор
- Invoke (вызов) против execute (выполнения)
- Всплывающий диалог
- Диалоговое окно ошибки
- Свойства меню Пуск
- Урок 8.1. Панель управления Windows Vista. Управление учетными записями пользователей
- Панель управления Windows Vista
- Рис. 48. Панель быстрого запуска.
- 11.2. СВОЙСТВА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
- 4. Свойства унарных операций
- 3. Свойства бинарных операций
- Задняя панель компьютера. Подключение нового компьютера
- Ключевые свойства форм
- Знакомство с панелью Actions
- Исчезла Панель задач – нет часов, свернутых программ, кнопки Пуск
- Как расположить Панель задач сбоку или сверху?