Pour ça, il faut regrouper tes matériaux dans un dictionnaire avec comme clef le nom de la texture, par exemple :
Code PHP:
mats = doc.GetMaterials()
dico = {}
for mat in mats :
clef = 'vide'
tex = mat[c4d.MATERIAL_COLOR_SHADER]
if mat[c4d.MATERIAL_USE_COLOR] and tex and tex[c4d.BITMAPSHADER_FILENAME] : clef = tex[c4d.BITMAPSHADER_FILENAME]
if clef in dico :
dico[clef].append(mat)
else :
dico[clef] = [mat]
groupes = dico.values()
for mats in groupes :
print mats # Et là tu peux appeler ta fonction de dédoublonnage
Après, est-ce que la fonction de C4D ne ferait pas l'affaire ? Dans le gestionnaire de matériaux : Fonction > Supprimer les matériaux en double.