Wednesday, September 29, 2010

немного про питон

надо было обрабоать текстовый файл - убрать пробелы после каждого символа. в общем худо-бедно осилил задачу.
вот что вспомнил-узнал.

print ('sdsd') - что нибудь напечатать, скобки и одинарные кавычки
f=open('c:/temp/f.txt','w') - открыть файл для записи, одинарные кавычки, обратные слэши в пути
f.read(1) - прочитать один символ, f - это объект который открыт ранее командой open()
f.seek(0) - переместиться в начало файла ибо при каждом чтении курсор сдвигается.
f.write('string') - записать (добавить) в файл текст
f.close() - закрыть открытый файл
if a==True:
   print('a=true')
else:
   print('a=false') - пример if else,обратить внимание на отступы, булеановское значение True с большой буквы
while True:
   a=a+1
   if a>10: break - пример организации цикла while с переносом проверки условия в конец - break, один оператор можно писать в одну строчку после двоеточия, двоеточие и блок с отступом заменяют в питоне скобки

пока что я колупался в шеллоболочке которая идёт в комплекте с питоном, там надо печатать команды а не писать программу. надо будет поискать инструмент более удобный и позволяющий писать проги и запускать их на выполнение. хотя и шелл этот можно юзать для всяких задач, особенно тем кто питон хорошо знает.

Sunday, September 5, 2010

начало

итак, задача номер один. менять какие то атрибуты целой куче объектов за раз.

пока поковыряемся в основах...

в консоли (которая внутри блендера) можно смотреть весь блендеровский апиай выведенный в питон (автокомплишн по ctrl+space). также можно посмотреть аутлайнер в режиме датаблоков - помогает понять что откуда растёт. плюс есть кое-какая информация в подсказке которая всплывает при наведении на какой нибудь элемент.

полезные переменные:
bpy.context.mode - текущий режим блендера (Object, Edit, Sculpt etc.,)
bpy.context.object = bpy.context.active_object - активный объект
bpy.context.selected_objects - выбранные объекты, включая активный
bpy.data.materials, bpy.data.objects и т.д. - доступ к данным в файле.
bpy.context.scene.objects.active = obj - назначить новый активный объект

чтобы иметь доступ хоть к чему нибудь надо импортировать модули, моуль bpy будет импортирован в любом случае: import bpy, впрочем это будет ясно сразу по первым же ошибкам.

вот  скрипт который меняет всем выделенным объектам меш на какой нужно. (впрочем это же можно сделать и штатными средствами блендера через ctrl+L, но нам интересен принцип)

import bpy
for o in bpy.context.selected_objects:
   o.data = bpy.data.meshes["y"]

for ... in ... : - цикл
o.data - меш у объекта
bpy.data.meshes["y"] - присваиваем новый меш объекту из сборища мешей в файле.

немного про питон, пока интересно то, что у него нет открывающих-закрывающих скобок для блоков кода, а вместо этого используются отступы, то есть один пробел перед началом строки = второй уровень и все последующие строки с одним пробелом впереди будут этим уровнем. не обязательно один пробел можно два или больше главное чтобы один уровень был. в вышеприведённом примере, виден пробел в начале строки после for, то есть эта строчка и есть тело цикла.

полезные ссылки:
вводная статья на инглише
примеры скриптов
список операторов
на оффсайте инфа
книжка по питону

первый пост

про что этот блог.

буду осваивать блендеровский питон скрипт. без него как то туговато. осваивать будем скрипты нового блендера 2.5 - там вроде кое чего поменялось по сравнению со старым.

какой бэкграунд имеем:
- некоторое количество написанных максскриптов (то есть какая то база под специфику 3д программирования)
- какие-то навыки программирования вообще
- прочитанная когда-то давно книжка по питону

итак, приступим...