Fix T70617: mesh.from_pydata() misses first edge if there are faces

This commit is contained in:
Campbell Barton
2019-10-10 11:08:17 +11:00
parent dc2cd2d0dc
commit 5910f9f9e9
3 changed files with 19 additions and 14 deletions

View File

@@ -441,11 +441,6 @@ class Mesh(bpy_types.ID):
When an empty iterable is passed in, the edges are inferred from the polygons.
When non-emtpy, either:
- Edges must be provided for all polygons.
- Edges must be calculated afterwards using :class:`Mesh.update` with ``calc_edges=True``.
:type edges: iterable object
:arg faces:
@@ -481,11 +476,15 @@ class Mesh(bpy_types.ID):
self.polygons.foreach_set("loop_start", loop_starts)
self.polygons.foreach_set("vertices", vertex_indices)
# if no edges - calculate them
if faces and (not edges):
self.update(calc_edges=True)
elif edges:
self.update(calc_edges_loose=True)
if edges or faces:
self.update(
# Needed to either:
# - Calculate edges that don't exist for polygons.
# - Assign edges to polygon loops.
calc_edges=bool(faces),
# Flag loose edges.
calc_edges_loose=bool(edges),
)
@property
def edge_keys(self):