Шрифт:
view_align=True,
location=(n-3,2,0)
)
bpy.context.object.data.materials.append(mat)
# Затем перемещение его на новый слой
layers = 20*[False]
layers[n+11] = True
bpy.ops.object.move_to_layer(layers=layers)
return
def run:
# Создание нескольких материалов
red = bpy.data.materials.new('Red')
red.diffuse_color = (1,0,0)
green = bpy.data.materials.new('Green')
green.diffuse_color = (0,1,0)
blue = bpy.data.materials.new('Blue')
blue.diffuse_color = (0,0,1)
# Три метода перемещения объектов в новый слой
createOnLayer(red)
changeLayerData(green)
moveLayerOperator(blue)
# Выбор слоёв 14 - 20
scn = bpy.context.scene
bpy.ops.object.select_all(action='SELECT')
for n in range(13,19):
scn.layers[n] = True
# Отмена выбора слоёв 1 - 13, но только впоследствии.
# Похоже, по крайней мере один слой должен быть выбран всегда.
for n in range(0,13):
scn.layers[n] = False
# Отмена выбора слоя 16
scn.layers[15] = False
return
if __name__ == "__main__":
run
Группы
Эта программа показывает, как создавать группы, добавлять объекты в группы, и пустышки, которые дублируют группы. Мы добавляем четыре группы, четыре меш-объекта назначаются каждый в две группы, и четыре текстовых объекта назначаются каждый в единственную группу. Затем мы добавляем четыре пустышки, которые будут дубликатами (dupli-group) четырёх групп. Наконец пустышки перемещаются, так что каждая колонка содержит элементы в этой группе.
#----------------------------------------------------------
# File groups.py
# Create groups
#----------------------------------------------------------
import bpyimport mathutils
from mathutils
import Vector
# Слои
Display = 5
Build = 6
def setObject(name, mat):
ob = bpy.context.object
ob.name = name
ob.data.materials.append(mat)
return ob
# Перемещение объекта в данный слой.
def moveToLayer(ob, layer):
ob.layers[layer] = True
for n in range(20):
if n != layer:
ob.layers[n] = False
return
# Добавление объекта TextCurve в слое 13
def addText(string, loc):
tcu = bpy.data.curves.new(string+'Data', 'FONT')
text = bpy.data.objects.new(string+'Text', tcu)
tcu.body = string
tcu.align = 'RIGHT'
text.location = loc
bpy.context.scene.objects.link(text)
# Нужно изменить text.layers после того, как текст будет привязан к сцене,
# в противном случае изменение не сможет сработать. moveToLayer(text, Build)
return text
def run:
# Создание двух материалов
red = bpy.data.materials.new('RedMat')
red.diffuse_color = (1,0,0)
green = bpy.data.materials.new('GreenMat')
green.diffuse_color = (0,1,0)
# Позиции