Blender API(Python)

BlenderのScriptで使えるPythonのプログラムコードです。
備忘録のような雰囲気で使ってください。

import bpy

#すべてのオブジェクトを削除
def delete_all():
	#すべてのシーン削除
	for item in bpy.context.scene.objects:
		bpy.context.scene.objects.unlink(item)

	#すべてのオブジェクト削除
	for item in bpy.data.objects:
		bpy.data.objects.remove(item)

	#すべてのメッシュ削除
	for item in bpy.data.meshes:
		bpy.data.meshes.remove(item)

	#すべてのマテリアル削除
	for item in bpy.data.materials:
		bpy.data.materials.remove(item)

#選択しているオブジェクトを削除
bpy.ops.object.delete(use_global=False)

#------------------------------------------
#メッシュ追加
#------------------------------------------

#メッシュ追加 立方体
#引数 位置(0,0,0)、スケール(1,1,1)
bpy.ops.mesh.primitive_cube_add(size=2, enter_editmode=False, align='WORLD', location=(0, 0, 0), scale=(1, 1, 1))

#メッシュ追加 平面
#引数 位置(0,0,0)、スケール(1,1,1)
bpy.ops.mesh.primitive_plane_add(size=2, enter_editmode=False, align='WORLD', location=(0, 0, 0), scale=(1, 1, 1))

#メッシュ追加 円
#引数 位置(0,0,0)、スケール(1,1,1)
bpy.ops.mesh.primitive_circle_add(radius=1, enter_editmode=False, align='WORLD', location=(0, 0, 0), scale=(1, 1, 1))

#メッシュ追加 UV球
#引数 位置(0,0,0)、スケール(1,1,1)
bpy.ops.mesh.primitive_uv_sphere_add(radius=1, enter_editmode=False, align='WORLD', location=(0, 0, 0), scale=(1, 1, 1))

#メッシュ追加 ICO球
#引数 位置(0,0,0)、スケール(1,1,1)
bpy.ops.mesh.primitive_ico_sphere_add(radius=1, enter_editmode=False, align='WORLD', location=(0, 0, 0), scale=(1, 1, 1))

#メッシュ追加 円柱
#引数 位置(0,0,0)、スケール(1,1,1)
bpy.ops.mesh.primitive_cylinder_add(radius=1, depth=2, enter_editmode=False, align='WORLD', location=(0, 0, 0), scale=(1, 1, 1))

#メッシュ追加 円錐
#引数 位置(0,0,0)、スケール(1,1,1)、下底半径(1)、高さ(2)
bpy.ops.mesh.primitive_cone_add(radius1=1, radius2=0, depth=2, enter_editmode=False, align='WORLD', location=(0, 0, 0), scale=(1, 1, 1))

#メッシュ追加 トーラス(ドーナツ状)
#引数 位置(0,0,0)、スケール(1,1,1)、外側半径(1)、内側半径(0.25)、
bpy.ops.mesh.primitive_torus_add(align='WORLD', location=(0, 0, 0), rotation=(0, 0, 0), major_radius=1, minor_radius=0.25, abso_major_rad=1.25, abso_minor_rad=0.75)

#メッシュ追加 グリッド
#引数 位置(0,0,0)、スケール(1,1,1)
bpy.ops.mesh.primitive_grid_add(size=2, enter_editmode=False, align='WORLD', location=(0, 0, 0), scale=(1, 1, 1))

#------------------------------------------
#メッシュ移動
#------------------------------------------

#メッシュ移動
#移動先(3,3,3)
bpy.ops.transform.translate(value=(3, 3, 3), orient_axis_ortho='X', orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False)

#------------------------------------------
#メッシュ回転
#------------------------------------------

#回転角度の指定はラジアンで指定する
# radian = 角度 * π/180
# import math
# math.pi

#メッシュ回転 例1
#回転軸(X軸)、角度(90度)
bpy.ops.transform.rotate(value=1.5708, orient_axis='X', orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', constraint_axis=(True, False, False), mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False)

#メッシュ回転 例2
#回転軸(Y軸)、角度(90度)
bpy.ops.transform.rotate(value=1.5708, orient_axis='Y', orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', constraint_axis=(False, True, False), mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False)

#メッシュ回転 例3
#回転軸(Z軸)、角度(90度)
bpy.ops.transform.rotate(value=1.5708, orient_axis='Z', orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', constraint_axis=(False, False, True), mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False)

#メッシュ回転 例4
#回転軸(X軸)、角度(180度)
bpy.ops.transform.rotate(value=3.14159, orient_axis='X', orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', constraint_axis=(True, False, False), mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False)


#------------------------------------------
#メッシュ スケール変更
#------------------------------------------
#メッシュスケール変更 例1
# 大きさ(5,5,5) xyz方向に5倍にする
bpy.ops.transform.resize(value=(5, 5, 5), orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False)

#メッシュスケール変更 例2
# 大きさ(1,1,5) z方向に5倍にする
bpy.ops.transform.resize(value=(1, 1, 5), orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False)

#メッシュスケール変更 例3
# 大きさ(1,5,5) y方向に5倍にする
bpy.ops.transform.resize(value=(1, 5, 1), orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False)

#------------------------------------------
#編集モード、オブジェクトモード
#------------------------------------------
#編集モード⇔オブジェクトモード
bpy.ops.object.editmode_toggle()

#編集モードに移行する
bpy.ops.object.mode_set(mode='EDIT', toggle=False)

#オブジェクトモードに移行する
bpy.ops.object.mode_set(mode='OBJECT', toggle=False)

# 編集モードへの移行
# 引数 arg_objectname:指定オブジェクト名
# 戻り値
def set_mode_edit(arg_objectname='Default'):
# 他のオブジェクトに操作を適用しないよう全てのオブジェクトを走査する
for ob in bpy.context.scene.objects:
# 非選択状態に設定する
ob.select=False
# 指定オブジェクトを取得する
selectob = bpy.data.objects[arg_objectname]
# 変更オブジェクトをアクティブに変更する
bpy.context.scene.objects.active = selectob
# 編集モードに移行する
bpy.ops.object.mode_set(mode='EDIT', toggle=False)


#------------------------------------------
#オブジェクト選択
#------------------------------------------

# 指定オブジェクトを取得する
# arg_name・・・オブジェクト名
select_item = bpy.data.objects[arg_name]

# 選択モードを頂点選択モードにする
meshdata.select_mode = {'VERT'}

# 選択モードを辺選択モードにする
meshdata.select_mode = {'EDGE'}

# 選択モードを面選択モードにする
meshdata.select_mode = {'FACE'}

#------------------------------------------
#オブジェクト名変更
#------------------------------------------

# 指定オブジェクトの名前変更
# new_name・・・新しいオブジェクト名
bpy.data.objects['Cube'].name = new_name