From 51ab4828c6c2154e7242be553a5eff8a6ee3201d Mon Sep 17 00:00:00 2001 From: Daniel Burr Date: Fri, 29 Dec 2017 03:27:18 +0100 Subject: [PATCH] Fix insane memory usage when exporting Meshes to Collada format - MeshPy::getTopology() is an expensive function (since it iterates over all Points and Facets) and therefore it should not be called repeatedly --- src/Mod/Arch/importDAE.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Mod/Arch/importDAE.py b/src/Mod/Arch/importDAE.py index e1fa4bd679..07dbbd8db7 100644 --- a/src/Mod/Arch/importDAE.py +++ b/src/Mod/Arch/importDAE.py @@ -204,16 +204,18 @@ def export(exportList,filename,tessellation=1): print("exporting object ",obj.Name, obj.Mesh) m = obj.Mesh if m: + Topology = m.Topology + # vertex indices - for v in m.Topology[0]: + for v in Topology[0]: vindex.extend([v.x*scale,v.y*scale,v.z*scale]) # normals for f in m.Facets: n = f.Normal nindex.extend([n.x,n.y,n.z]) # face indices - for i in xrange(len(m.Topology[1])): - f = m.Topology[1][i] + for i in xrange(len(Topology[1])): + f = Topology[1][i] findex.extend([f[0],i,f[1],i,f[2],i]) print(len(vindex), " vert indices, ", len(nindex), " norm indices, ", len(findex), " face indices.") vert_src = collada.source.FloatSource("cubeverts-array"+str(objind), numpy.array(vindex), ('X', 'Y', 'Z'))