Написание скриптов для Blender 2.49 - страница 8

Шрифт
Интервал

стр.

Меню Форматирования Format имеет опции вставки и удаления отступов выбранного текста, а также опции для преобразования интервала. Последняя опция может быть очень полезной, когда интерпретатор Питона жалуется на неожиданные уровни отступа, хотя вам кажется, что в вашем файле нет никаких ошибок. Если это случилось, Вы, возможно, в какой-то момент смешали табуляцию и пробелы, что спутало Питон (поскольку они отличаются, как считает интерпретатор) и возможным выходом будет преобразовать выбранный текст сначала в пробелы, а затем обратно в табуляцию. (Во всех книжках и руководствах по Питону настоятельно рекомендуют использовать для отступов НЕ табуляцию, а 4 пробела — дополнение пер.) Этот способ можно использовать снова, если когда-нибудь опять произойдёт смешение пробелов и табуляции.


Пример с редактором

Для того, чтобы привыкнуть к редактору, создайте новый текстовый буфер, выбрав Text | New и наберите следующие строки примера:

>import sys

>print sys.path

Большинство клавиш на клавиатуре ведут себя привычным образом, включая Delete, Backspace, и Enter. Клавиатурные сокращения для вырезания, вставки, и копирования отображены в меню Редактирования как Alt + X, Alt + V,и Alt + C соответственно, но эквиваленты с клавишей Ctrl: Ctrl + X, Ctrl + V, и Ctrl + C (что привычно для пользователей Windows) работают так же хорошо. Полную карту клавиш можно посмотреть в Блендер-вики, http://wiki.blender.org/index.php/Doc:Manual/Extensions/Python/Text_editor

Выбирать части текста можно щелчком и перетаскиванием мыши, но Вы можете также выбрать текст, перемещая текстовый курсор при нажатой клавише Shift.

Текст по умолчанию будет неокрашенным, но чтение скриптов можно сильно упростить для глаз, включив подсветку синтаксиса. Щелчок на небольшой кнопке AB переключает это (текст будет черно-белым при выключенной кнопке, и окрашенным при включенной.) Подобно многим аспектам Блендера, цвета текста можно модифицировать по желанию пользователя в секции themes (темы) окна Пользовательских настроек.

Другая возможность, которую очень удобно включить, особенно при отладке скриптов - нумерация строк. (Возможно, Вы способны написать безупречный код с первого раза, но, к несчастью, ваш покорный слуга не настолько гениален.) Каждое сообщение Питона об ошибке, которое будет показано, будет иметь имя файла и номер строки, и ошибочная строка будет выделена. Но строки вызывающих функций, если такие имеются, не будут выделены, хотя номера их строк будут показаны в сообщении об ошибке, так что наличие номеров строк включенными позволит вам быстро найти вызывающий контекст проблемного места. Нумерация строк включается щелчком по кнопке с линиями.

Запускается скрипт посредством нажатия Alt + P. Ничто не отобразится в редакторе, если программа не столкнётся с ошибкой, но результат будет показан на консоли (то есть, в DOSBox'е или X-терминале, с которым стартует Блендер, не в интерактивной консоли Питона, с которой мы столкнулись ранее).


Первые шаги: Hello world

Традиция требует, чтобы все книги о программировании имели пример "hello world", и почему мы станем обижать людей? Мы осуществим и запустим скрипт, создающий, как иллюстрирующий пример, простой объект, и покажем как интегрировать этот скрипт в меню Блендера. Мы также покажем как, документировать его и сделать запись в справочной системе. Наконец, мы потратим несколько слов на аргументы за и против распространения скриптов в виде .blend-файлов, или в виде скриптов, которые пользователь сам должен устанавливать в каталог со скриптами.

Давайте напишем немного кода! Вы можете набрать следующие строки непосредственно в интерактивную консоль Питона, или Вы можете набрать новый текст в текстовом редакторе Блендера, и затем нажать Alt + P, чтобы запустить скрипт. Это - короткий скрипт, но мы пройдем через него довольно подробно, так как он отобразит множество ключевых аспектов API Питона в Блендере.

>#!BPY

>import Blender

>from Blender import Scene, Text3d, Window

>hello = Text3d.New("HelloWorld")

>hello.setText("Hello World!")

>scn = Scene.GetCurrent()


стр.