我发现这段代码在对象模式下选择具有给定索引的face: bpy.data.objects [' Cube.001&#39]。data.polygons [0]。选择
我想在对象模式中进行一些其他操作,例如select_similar,select_all(action' INVERT')和delete(type =' ONLY_FACE')。
我试图在官方api中找到有关.data.polygons [0] .select的信息,但没有得到任何成功。
我想在对象模式下执行此操作,而不进入编辑模式。
答案 0 :(得分:0)
<Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[15.0,16.0)" DisplayName="Visual Studio core editor" />
<Prerequisite Id="Microsoft.VisualStudio.Component.NuGet" Version="[15.0.26208.0,16.0)" DisplayName="NuGet package manager" />
<Prerequisite Id="Microsoft.VisualStudio.Component.Web" Version="[15.0.26323.1,16.0)" DisplayName="ASP.NET and web development tools" />
是一个面的布尔属性,它是一个MeshPolygon对象。它存储了一个真或假值,而且你还可以了解其中很多其他内容。
select相似的运算符只是循环遍历faces,如果匹配条件,则将select设置为true。
data.polygons[0].select
反转选择
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
请注意,这仅适用于对象模式,因为编辑模式使用bmesh并将覆盖退出编辑模式时的任何更改。您会发现bmesh是编辑网格数据的更好选择,您不必将对象置于编辑模式即可使用它。
for f in obj_data.polygons:
f.select = not f.select
如果对象处于编辑模式,您可以使用from_edit_mesh
和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()
。您可以在update_edit_mesh
here的上下文参数中找到一些信息。