如何通过对象模式在编辑模式下编辑信息

时间:2017-08-24 17:37:50

标签: python blender

我发现这段代码在对象模式下选择具有给定索引的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的信息,但没有得到任何成功。

我想在对象模式下执行此操作,而不进入编辑模式。

1 个答案:

答案 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_meshimport 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的上下文参数中找到一些信息。