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

Invoke (вызов) против execute (выполнения)

Этот скрипт иллюстрирует разницу между invoke (вызывать) и execute (выполнять). Вызываемое (invoking) событие является аргументом функции Operator.invoke, который устанавливает два свойства целого типа x и y для положения мыши и вызывает функцию Operator.execute. Как альтернатива, мы можем выполнить (execute) оператор и явно установить x и y: bpy.ops.wm.mouse_position(’EXEC_DEFAULT’, x=20, y=66)

Вместо вывода координат мыши в окно терминала, информация отправляется в информационную панель в верхнем правом углу. Это хорошее место для отображения краткого уведомления, так как пользователю не придется искать его в другом окне, тем более, что терминал/DOS-окно отображается не во всех версиях Blender. Однако длинные сообщения трудно вписываются в ограниченное пространство информационной панели.



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

# File invoke.py # from API documentation

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


import bpy 


class SimpleMouseOperator(bpy.types.Operator):

    """ Этот оператор показывает расположение мыши,

    эта строка используется для подсказки (tooltip) и документирования API

    """

    bl_idname = "wm.mouse_position"

    bl_label = "Mouse location"


    x = bpy.props.IntProperty

    y = bpy.props.IntProperty  


   def execute(self, context):

       # Вместо печати в консоли, используется функция report,

       # таким образом, появляется сообщение в заголовке

        self.report({'INFO'}, "Mouse coords are %d %d" % (self.x, self.y))

       return {'FINISHED'}  


    def invoke(self, context, event):

        self.x = event.mouse_x

        self.y = event.mouse_y

        return self.execute(context)  


#

# Панель в районе tools

#

class MousePanel(bpy.types.Panel):

    bl_label = "Mouse"

    bl_space_type = "VIEW_3D"

    bl_region_type = "TOOL_PROPS" 


    def draw(self, context):

        self.layout.operator("wm.mouse_position")  


#

# Регистрация

# Нет действительной необходимости регистрировать класс, потому что

# это происходит автоматически, когда регистрируется модуль.

# С другой стороны, это не повредит.

bpy.utils.register_class(SimpleMouseOperator)

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"

Перейти на страницу:

Похожие книги

Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ

Эта книга представляет собой перевод третьего издания американского бестселлера Effective C++ и является руководством по грамотному использованию языка C++. Она поможет сделать ваши программы более понятными, простыми в сопровождении и эффективными. Помимо материала, описывающего общую стратегию проектирования, книга включает в себя главы по программированию с применением шаблонов и по управлению ресурсами, а также множество советов, которые позволят усовершенствовать ваши программы и сделать работу более интересной и творческой. Книга также включает новый материал по принципам обработки исключений, паттернам проектирования и библиотечным средствам.Издание ориентировано на программистов, знакомых с основами C++ и имеющих навыки его практического применения.

Скотт Майерс , Скотт Мейерс

Программирование, программы, базы данных / Программирование / Книги по IT
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.

Гэри Розенцвейг

Программирование, программы, базы данных / Программирование / Книги по IT
Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT