2016-06-14 11 views
1

でキューブを押し出します。は顔を選択し、私はPythonのAPIを経由して、キューブの顔を押し出すことができるようにする必要がありますするプロジェクトに取り組んでいますブレンダー経由のPython API

import bpy 

bpy.data.objects['Cube'].select = True # Select the default Blender Cube 
bpy.ops.object.delete() # Delete the selected objects (default blender Cube) 

#Define vertices and faces 
verts = [(0,0,0),(0,5,0),(5,5,0),(5,0,0)] 
faces = [(0,1,2,3)] 

# Define mesh and object variables 
mymesh = bpy.data.meshes.new("Plane") 
myobject = bpy.data.objects.new("Plane", mymesh) 

#Set scene of object 
bpy.context.scene.objects.link(myobject) 

#Create mesh 
mymesh.from_pydata(verts,[],faces) 
mymesh.update(calc_edges=True) 

bpy.context.scene.objects.active = bpy.context.scene.objects['Plane'] 

bpy.ops.object.mode_set(mode='OBJECT') 
bpy.ops.object.select_all(action='DESELECT') 
bpy.data.objects['Plane'].select = True # Select the default Blender Cube 
bpy.ops.object.mode_set(mode='EDIT') 
bpy.ops.mesh.extrude_region_move(TRANSFORM_OT_translate={"value":(0, 0, 2)}) 

私は同様の方法で、私のキューブを構築していますが、私の問題は私が経由して押し出すように顔を選択する方法を考え出すことができないです。

私は、APIを介して飛行機を押し出すために管理していますPythonのAPI

私のキューブのコードhttp://pastebin.com/PQtMcRAh

すべてのヘルプは高く評価され:)

答えて

0

私はあなたがここで必要なものをあまりにもわからないんだけど、あなたは番目の必要がある場合はご覧ください次のとおりです。

次にこれはあなたが必要とするコードです:

import bpy 
import bmesh 

bpy.data.objects['Cube'].select = True # Select the default Blender Cube 
bpy.ops.object.mode_set(mode='OBJECT') 
bpy.ops.object.delete() # Delete the selected objects (default blender Cube) 

#Define vertices, faces, edges 
verts = [(0,0,0),(0,5,0),(5,5,0),(5,0,0),(0,0,5),(0,5,5),(5,5,5),(5,0,5)] 
faces = [(0,1,2,3), (4,5,6,7), (0,4,5,1), (1,5,6,2), (2,6,7,3), (3,7,4,0)] 

#Define mesh and object 
mesh = bpy.data.meshes.new("Cube") 
object = bpy.data.objects.new("Cube", mesh) 

#Set location and scene of object 
object.location = bpy.context.scene.cursor_location 
bpy.context.scene.objects.link(object) 

#Create mesh 
mesh.from_pydata(verts,[],faces) 
mesh.update(calc_edges=True) 

bpy.data.objects['Cube'].select = True 
bpy.context.scene.objects.active = bpy.context.scene.objects['Cube'] # Select the default Blender Cube 

#Enter edit mode to extrude 
bpy.ops.object.mode_set(mode='EDIT') 
bpy.ops.mesh.normals_make_consistent(inside=False) 

bm = bmesh.from_edit_mesh(mesh) 
for face in bm.faces: 
    face.select = False 
bm.faces[1].select = True 

# Show the updates in the viewport 
bmesh.update_edit_mesh(mesh, True) 

bpy.ops.mesh.extrude_faces_move(MESH_OT_extrude_faces_indiv={"mirror":False}, TRANSFORM_OT_shrink_fatten={"value":-5, "use_even_offset":True, "mirror":False, "proportional":'DISABLED', "proportional_edit_falloff":'SMOOTH', "proportional_size":1, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "release_confirm":False}) 

それはあなたのコードに展開します。説明するために:

をあなたのコードの後、それ:

  1. はメッシュ(bm = bmesh.from_edit_mesh(mesh)
  2. 選択解除を修正するためにbmeshを使用し、すべての面(for face in bm.faces: face.select = False
  3. は、上面を選択します(bm.faces[1].select = True
  4. あなたがそれを見ることができるよう
  5. bmesh.update_edit_mesh(mesh, True))ビューポートを更新すると、5つの単位(によって上面を押し出します210)

押し出された単位数を変更するには、VALUE変数を変更します。

関連する問題