From 381570cd9e9652d792cbac4539bc9076d1a6c554 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Fri, 10 Mar 2023 19:11:49 +0500 Subject: [PATCH] Decorators - a bit more consistent geometry parsing between edit/object modes --- .../blenderbim/bim/module/drawing/decoration.py | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/drawing/decoration.py b/src/blenderbim/blenderbim/bim/module/drawing/decoration.py index cbc3da09b3..ba7c770d3f 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/decoration.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/decoration.py @@ -304,18 +304,10 @@ class BaseDecorator: def get_editmesh_geom(self, obj): """Parses editmode mesh geometry into line segments""" - mesh = bmesh.from_edit_mesh(obj.data) - vertices = [] - indices = [] - idx = 0 - - # TODO: are we adding same verts twice? - for edge in mesh.edges: - vertices.extend(edge.verts) - indices.append((idx, idx + 1)) - idx += 2 - vertices = [obj.matrix_world @ v.co for v in vertices] - + # TODO: avoid bmesh here? + bm = bmesh.from_edit_mesh(obj.data) + indices = [[v.index for v in edge.verts] for edge in bm.edges] + vertices = [obj.matrix_world @ v.co for v in bm.verts] return vertices, indices def decorate(self, context, object): @@ -1469,6 +1461,7 @@ class BreakDecorator(BaseDecorator): verts, idxs = self.get_editmesh_geom(obj) else: verts, idxs = self.get_mesh_geom(obj) + print(len(verts), len(idxs)) self.draw_lines(context, obj, verts, idxs)