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


Авторские права

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

Здесь можно скачать бесплатно "Thomas Larsson - Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Thomas Larsson - Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода
Рейтинг:
Название:
Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода
Автор:
Издательство:
неизвестно
Год:
неизвестен
ISBN:
нет данных
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

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

Описание и краткое содержание "Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода" читать бесплатно онлайн.



Третье издание, расширенное и обновлённое для Blender 2.57






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

# 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"

    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__)


Диалоговое окно ошибки

Насколько я знаю, Блендер не имеет элегантных средств уведомления пользователя, что что-то пошло не так. Можно напечатать сообщение в окне терминала или в информационной панели, а затем вызвать исключение. Большинство современных приложений вместо этого открывают окно сообщения и выводят сообщение об ошибке. Следующий скрипт использует API Блендера для создания всплывающего окна диалога для уведомления пользователя.

Скрипт сканирует файл. Если найдено слово return (возврат), скрипт открывает всплывающее окно, чтобы сообщить пользователю, что произошла ошибка и на какой строке. Если во всём файле такого слова нет, всплывающее окно отображает число отсканированных строк.

На момент написания, этот скрипт был причиной утечек памяти, что делало работу Блендера неустойчивой. Эта ошибка, мы надеемся, будет исправлена в ближайшее время.



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

# File error.py

# Simple error dialog

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


import bpy

from bpy.props import *  


#

# Оператор сообщения об ошибке. При вызове, всплывает

# диалоговое окно с переданным сообщением.

#

class MessageOperator(bpy.types.Operator):

    bl_idname = "error.message"

    bl_label = "Message"

    type = StringProperty()

    message = StringProperty()  


    def execute(self, context):

        self.report({'INFO'}, self.message)

        print(self.message)

        return {'FINISHED'}  


    def invoke(self, context, event):

        wm = context.window_manager

        return wm.invoke_popup(self, width=400, height=200)  


    def draw(self, context):

        self.layout.label("A message has arrived")

        row = self.layout.split(0.25)

        row.prop(self, "type")

        row.prop(self, "message")

        row = self.layout.split(0.80)

        row.label("") row.operator("error.ok")  


#

# Кнопка ОК в диалоге ошибки

#

class OkOperator(bpy.types.Operator):

    bl_idname = "error.ok"

    bl_label = "OK"

    def execute(self, context):

        return {'FINISHED'}  


#

# Открывает диалог выбора файла и начинает сканирование выбранного файла.

#

class ScanFileOperator(bpy.types.Operator):

    bl_idname = "error.scan_file"

    bl_label = "Scan file for return"

    filepath = bpy.props.StringProperty(subtype="FILE_PATH")  


    def execute(self, context):

        scanFile(self.filepath)

        return {'FINISHED'}  


    def invoke(self, context, event):

        context.window_manager.fileselect_add(self)

        return {'RUNNING_MODAL'}  


#

# Сканирование файлов. Если строка содержит слово "return",

# вызывается диалоговое окно ошибки и производится выход.

# Если достигнут конец файла, отображается другое сообщение.

#

def scanFile(filepath):

    fp = open(filepath, "rU")

    n = 1

    for line in fp:

        words = line.split()

        if "return" in words:

            bpy.ops.error.message('INVOKE_DEFAULT',

                type = "Error",

                message = 'Found "return" on line %d' % n)

            return

        n += 1

    fp.close()

    bpy.ops.error.message('INVOKE_DEFAULT',

 type = "Message",

 message = "No errors found in %d lines" % n)

    return 


# Регистрация классов и автоматический запуск сканирования

bpy.utils.register_class(OkOperator)

bpy.utils.register_class(MessageOperator)

bpy.utils.register_class(ScanFileOperator)

bpy.ops.error.scan_file('INVOKE_DEFAULT')




Аддоны Блендера

До сих пор мы рассматривали только автономные скрипты, которые выполняются из окна текстового редактора. Для конечных пользователей более удобно, если скрипт — это аддон (add-on, надстройка) Блендера, который может быть включен в окне Пользовательских настроек. Также можно автоматически загружать скрипт каждый раз при запуске Блендера

Для того, чтобы скрипт был аддоном, он должен быть написан по-особому. Там должна быть структура bl_info в начале файла, а также в конце должны быть определены функции register (регистрации) и unregister (отмены регистрации). Кроме того, скрипт должен быть размещен в месте, в котором Блендер ищет аддоны при запуске. Оно включает в себя каталоги addons и addons-contrib , которые расположены в подкаталоге 2.57/scripts каталога, в котором находится Блендер.


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

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

Книги похожие на "Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода" читать онлайн или скачать бесплатно полные версии.


Понравилась книга? Оставьте Ваш комментарий, поделитесь впечатлениями или расскажите друзьям

Все книги автора Thomas Larsson

Thomas Larsson - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Отзывы о "Thomas Larsson - Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода"

Отзывы читателей о книге "Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.