2016-07-13 16 views
0

Blender 2.77我有一個多邊形,被引用爲:如何在Blender中爲操作員訪問由索引給出的多邊形?

bpy.data.objects['Cube.001'].data.polygons[0] 

和運營商:

bpy.ops.transform.resize(value=(0, 0, 1), constraint_axis=(False, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1) 

我怎樣才能使運營商可以對多邊形執行? 我試過:

bpy.data.objects['Cube.001'].data.polygons[0].select = True 

選擇它,但它似乎沒有工作。

回答

0

雖然攪拌機存儲網格數據中object.data,這一數據僅在對象模式下有效,當您切換到編輯模式時,會創建網格數據的雙關聯副本,當您離開編輯模式時,將替換object.data內容。由於使用複製網格時編輯object.data所做的任何選擇更改都不會影響編輯網格,並且在退出編輯模式時將被覆蓋。

當您使用bpy.ops.transform.resize()它適用於活動項目,這意味着它需要調整您需要處於編輯模式的多邊形的大小。在對象模式下,同一個操作符將調整對象的大小。

所以,你可以使用

bpy.data.objects['Cube.001'].data.polygons[0].select = True 
bpy.ops.object.mode_set(mode='EDIT') 
bpy.ops.transform.resize(value=(0, 0, 1)) 
bpy.ops.object.mode_set(mode='OBJECT') 

但使用bmesh是編輯與蟒蛇網格數據的首選方式。您可以找到使用bmesh here的示例以及編輯bmesh data here的更詳細示例。

使Z軸鱗face[0]一個簡單的例子是 -

import bpy 
import bmesh 

bm = bmesh.new() 
bm.from_mesh(obj.data) 

bm.faces.ensure_lookup_table() 
bmesh.ops.scale(bm, verts=bm.faces[0].verts, vec=(0.0, 0.0, 1.0)) 

bm.to_mesh(obj.data) 
bm.free() 
0

看起來像你需要切換回物體模式做...多邊形[0]。選擇

# assume in EDIT... mode now 
bpy.data.objects['Cube.001'].data.polygons[0] 
bpy.ops.object.editmode_toggle() 
bpy.data.objects['Cube.001'].data.polygons[0].select = True 
bpy.ops.object.editmode_toggle() 
bpy.ops.transform.resize(value=(0, 0, 1), 
        constraint_axis=(False, False, False), 
        constraint_orientation='GLOBAL', 
        mirror=False, 
        proportional='DISABLED', 
        proportional_edit_falloff='SMOOTH', 
        proportional_size=1) 
相關問題