我正在使用Blender 3D进行建模。 我使用BMesh。
我在编辑模式下将BMFace的地址保存到变量(sel_f)。
我退出编辑模式。并进入OBJECT模式。
我再次使用BMesh进入编辑模式。
我用&#34来调用sel_f变量; sel_f.select = True"
但我收到错误消息" BMFace类型的BMesh数据已被删除。"
所以我重新定义了bm。
但旧的sel_f与新的sel_f变量的地址不同。
为什么不一样?
查看以下示例脚本。
>>> import bmesh
>>>
>>> obj = bpy.context.active_object
>>> me = obj.data
>>> bm = bmesh.from_edit_mesh(me)
>>>
>>> sel_f = bm.select_history[-1]
>>>
>>> sel_f
〈BMFace(0x1E2918B0), index=2, totverts=4〉
Change MESH mode to "OBJECT mode" by manually. not by bpy script as below.
# bpy.ops.object.mode_set(mode="OBJECT")
again Change MESH mode to "EDIT mode" by manually. not by bpy script as below.
# bpy.ops.object.mode_set(mode="EDIT")
>>> sel_f # i know that this is normalcy.
〈BMFace dead at 0x0DBE2F68〉
>>> bm = bmesh.from_edit_mesh(me)
>>> sel_f = bm.select_history[-1]
>>> sel_f
〈BMFace(0x10FD3698), index=2, totverts=4〉 # Why not Same with above a address of BMFace?
答案 0 :(得分:0)
object.data
存储对象网格数据,当您切换到编辑模式时,网格数据被复制到不同的结构进行编辑,当您切换回对象模式时,编辑网格被复制回{{1}并且编辑网格被破坏。返回编辑模式会创建网格的新副本以进行编辑,因此任何先前的数据位置将不再指向当前网格数据。
无论您手动切换模式还是使用脚本,都会执行相同的过程。