diff options
Diffstat (limited to 'release/scripts/modules/bpy_types.py')
-rw-r--r-- | release/scripts/modules/bpy_types.py | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 29b53aedf78..8a1615ad99f 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -477,29 +477,34 @@ class Mesh(bpy_types.ID): face_lengths = tuple(map(len, faces)) - self.vertices.add(len(vertices)) - self.edges.add(len(edges)) + # NOTE: check non-empty lists by length because of how `numpy` handles truth tests, see: T90268. + vertices_len = len(vertices) + edges_len = len(edges) + faces_len = len(faces) + + self.vertices.add(vertices_len) + self.edges.add(edges_len) self.loops.add(sum(face_lengths)) - self.polygons.add(len(faces)) + self.polygons.add(faces_len) self.vertices.foreach_set("co", tuple(chain.from_iterable(vertices))) self.edges.foreach_set("vertices", tuple(chain.from_iterable(edges))) vertex_indices = tuple(chain.from_iterable(faces)) - loop_starts = tuple(islice(chain([0], accumulate(face_lengths)), len(faces))) + loop_starts = tuple(islice(chain([0], accumulate(face_lengths)), faces_len)) self.polygons.foreach_set("loop_total", face_lengths) self.polygons.foreach_set("loop_start", loop_starts) self.polygons.foreach_set("vertices", vertex_indices) - if edges or faces: + if edges_len or faces_len: self.update( # Needed to either: # - Calculate edges that don't exist for polygons. # - Assign edges to polygon loops. - calc_edges=bool(faces), + calc_edges=bool(faces_len), # Flag loose edges. - calc_edges_loose=bool(edges), + calc_edges_loose=bool(edges_len), ) @property @@ -761,9 +766,9 @@ class Macro(StructRNA): __slots__ = () @classmethod - def define(self, opname): + def define(cls, opname): from _bpy import ops - return ops.macro_define(self, opname) + return ops.macro_define(cls, opname) class PropertyGroup(StructRNA, metaclass=RNAMetaPropGroup): |