Чтение онлайн

ЖАНРЫ

Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода

Larsson Thomas

Шрифт:

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)

Использование свойств сцены для сохранения информации

Эта программа позволяет пользователю ввести информацию различного типа, которая затем посылается на панель кнопкам. Механизм заключается в использовании RNA-свойств, которые можно настроить с помощью панели и читать с помощью кнопки. Все типы данных Блендера могут иметь свойства. Глобальные свойства, которые непосредственно не связаны каким-либо специфическим объектом, может оказаться удобно хранить в текущей сцене. Заметим, однако, что они будут потеряны, если Вы переключитесь на новую сцену.

#----------------------------------------------------------

# File scene_props.py

#----------------------------------------------------------

import bpy

from bpy.props import *

#

#
Сохранение свойств в активной сцене

#

def initSceneProperties(scn):

bpy.types.Scene.MyInt = IntProperty(

name = "Integer",

description = "Enter an integer")

scn['MyInt'] = 17

bpy.types.Scene.MyFloat = FloatProperty(

name = "Float",

description = "Enter a float",

default = 33.33,

min = -100,

max = 100)

bpy.types.Scene.MyBool = BoolProperty(

name = "Boolean",

description = "True or False?")

scn['MyBool'] = True

bpy.types.Scene.MyEnum = EnumProperty(

items = [('Eine', 'Un', 'One'),

('Zwei', 'Deux', 'Two'),

('Drei', 'Trois', 'Three')],

name = "Ziffer")

scn['MyEnum'] = 2

bpy.types.Scene.MyString = StringProperty(

name = "String")

scn['MyString'] = "Lorem ipsum dolor sit amet"

return

initSceneProperties(bpy.context.scene)

#

# Меню в районе UI

#

class UIPanel(bpy.types.Panel):

bl_label = "Property panel"

bl_space_type = "VIEW_3D"

bl_region_type = "UI"

def draw(self, context):

layout = self.layout

scn = context.scene

layout.prop(scn, 'MyInt', icon='BLENDER', toggle=True)

layout.prop(scn, 'MyFloat')

layout.prop(scn, 'MyBool')

layout.prop(scn, 'MyEnum')

layout.prop(scn, 'MyString')

layout.operator("idname_must.be_all_lowercase_and_contain_one_dot")

#

# Кнопка выводит значения свойств в окне консоли.

#

class OBJECT_OT_PrintPropsButton(bpy.types.Operator):

bl_idname = "idname_must.be_all_lowercase_and_contain_one_dot"

bl_label = "Print props"

<
Поделиться с друзьями: