ルービックキューブの続きです。Scriptingを選択して、左下にpython consoleが配置される構成にします。
毎度文字が小さすぎて、コンソールに何が書いてあるか分かりませんでした。文字を大きくしてみます。
>>> bpy.context.space_data.font_size=32
pythonコンソールの文字が大きくなりました。
文字が大きくて見やすくなると、いろいろ見えてきますね。
pythonコンソールの起動時のバナー表示に、
Convenience Variables: C = bpy.context, D = bpy.data
というのがあります。使ってみましょう。
Dを使って、全オブジェクトを表示します。リストに変換するだけで、内容が表示されます。
>>> list(D.objects) [bpy.data.objects['Camera'],bpy.data.objects['Cube'], bpy.data.objects['Cube.001'],bpy.data.objects['Cube.002'], (省略) bpy.data.objects['Cube.023'],bpy.data.objects['Cube.024'], bpy.data.objects['Cube.025'],bpy.data.objects['Cube.026'], bpy.data.objects['Lamp']] >>> (各行は、見やすく改行しています。)
次は、オブジェクトの名前だけ拾ってみます。
>>> list(o.name for o in D.objects) ['Camera', 'Cube', 'Cube.001', 'Cube.002', 'Cube.003', 'Cube.004', 'Cube.005', 'Cube.006', 'Cube.007', 'Cube.008', 'Cube.009', 'Cube.010', 'Cube.011', 'Cube.012', 'Cube.013', 'Cube.014', 'Cube.015', 'Cube.016', 'Cube.017', 'Cube.018', 'Cube.019', 'Cube.020', 'Cube.021', 'Cube.022', 'Cube.023', 'Cube.024', 'Cube.025', 'Cube.026', 'Lamp'] >>>
このルービックキューブは、レイヤー2にあります。レイヤー2のオブジェクトのみ、選択してみましょう。
>>> bpy.ops.object.select_by_layer(layers=2) {'FINISHED'} >>>
上のコマンドを実行すると、以下のようにCubeが9つ選択されます。
C(bpy.context)を使って選択したオブジェクトを使ってみましょう。
ここでは、locationの各値を3倍にしています。
>>> for o in C.selected_objects: ... o.location.x = o.location.x * 3 ... o.location.y = o.location.y * 3 ... o.location.z = o.location.z * 3 ... >>>
UNDOします。
>>> bpy.ops.ed.undo() {'FINISHED'}
今度は、選択しているオブジェクトを、他のレイヤーへ移動してみましょう。
20番目のレイヤーへ移動します。
>>> l=[False]*20 >>> l [False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] >>> l[19]=True >>> bpy.ops.object.move_to_layer(layers=l) {'FINISHED'} >>>
選択中のすべてのオブジェクトをそれぞれ回転させてみましょう。
>>> for o in C.selected_objects: ... o.rotation_mode='XYZ' ... o.rotation_euler.rotate_axis('Z',0.52) ... >>>
コメント