2017-08-24 147 views
0

我發現這段代碼在對象模式下選擇帶給定索引的人臉: bpy.data.objects ['Cube.001']。data.polygons [0] .select如何通過對象模式在編輯模式下編輯信息

我想在select_similar,select_all(action'INVERT')和delete(type ='ONLY_FACE')等對象模式下做一些其他操作。

我試着找到關於.data.polygons [0]的信息。選擇inicial api,但沒有得到任何幫助。

我想在對象模式下執行此操作,而無需進入編輯模式。

回答

0

data.polygons[0].select是一個面的布爾屬性,它是一個MeshPolygon對象。它存儲了一個真實或錯誤的價值,沒有什麼可以瞭解的。

選擇相似的運算符只是簡單地遍歷面並將選擇設置爲true(如果它與條件匹配)。

import bpy 

obj_data = bpy.context.object.data 

for f in obj_data.polygons: 
    if f.area < 0.1: 
     f.select = True 
    else: 
     f.select = False 

反選

for f in obj_data.polygons: 
    f.select = not f.select 

請注意,這隻會在目標模式下工作的編輯模式使用bmesh並覆蓋在退出編輯模式的任何改變。您會發現bmesh是編輯網格數據的更好選擇,您不必將對象置於編輯模式即可使用它。

import bpy 
import bmesh 

obj_data = bpy.context.object.data 

bm = bmesh.new() 
bm.from_mesh(obj_data) 

bm.faces.ensure_lookup_table() 
bad_faces = [f for f in bm.faces if f.calc_area() < 0.1] 

bmesh.ops.delete(bm, geom=bad_faces, context=5) 

bm.to_mesh(obj_data) 
bm.free() 
obj_data.update() 

如果obect是在編輯模式下,你會用from_edit_meshupdate_edit_mesh。你可以在bmesh.ops.delete()here的環境參數中找到一些信息。

+0

非常感謝!這真的有幫助。沒有考慮bmesh,需要研究它:)但我不明白如何執行編輯的網格渲染。我正在使用Python腳本使用動畫節點,如果我將渲染,我得到'上下文'對象沒有屬性'對象' –

+0

是否是動畫節點樹中的腳本節點?你有'上下文'或'上下文' - 全部小寫?用失敗的腳本詢問另一個問題。您會發現[blender.stackexchange.com](https://blender.stackexchange.com)對混合器特定腳本更有幫助。 – sambler