from time import clock
xsi = Application

def purgeUnusedDeformers(inColl):
    c = clock()
    for o in inColl:
        if o.Envelopes.Count > 0:
            env = o.Envelopes(0)

            d = env.Deformers
            w = env.Weights.Array
            zeroWeightDeformers = [deformer.FullName for deformer, weights in zip(d, w) if not any(weights)]

            n = len(zeroWeightDeformers)
            if n > 0:
                xsi.RemoveFlexEnvDeformer( o.FullName +';'+ ','.join(zeroWeightDeformers), False )
                xsi.LogMessage( 'REMOVED '+str(n)+' unused deformers from '+o.FullName )
            else:
                xsi.LogMessage( 'There are NO UNUSED DEFORMERS in the envelope for %s' % o.FullName, 4 )
    xsi.LogMessage( "Took %s seconds to purge unused deformers." % (clock() - c), 16 )

purgeUnusedDeformers(xsi.Selection)
