Macro Unisci i materiali duplicati

From FreeCAD Documentation
Revision as of 20:36, 18 April 2017 by Renatorivo (talk | contribs) (Created page with "===Descrizione===")

File:Text-x-python Macro merge duplicate materials

Descrizione
Unisce i materiali che hanno lo stesso nome di base

Versione macro: 1.0
Autore: yorik
Autore
yorik
Download
None
Link
Versione macro
1.0
Data ultima modifica
None
Versioni di FreeCAD
None
Scorciatoia
Nessuna
Vedere anche
Nessuno

Descrizione

Merges materials that have the same base name (with different numeral endings like 001, 002,...) into one. Only the first one will be kept, and all the objects that link to the duplicates will be linking to the first one instead. So before using this macro, make sure your first material (either the one without numerical ending or the lowest number found) is the right one.

Script

Merge duplicate materials.FCMacro

import FreeCAD,FreeCADGui
mats = [o for o in FreeCAD.ActiveDocument.Objects if o.isDerivedFrom("App::MaterialObject")]
todelete = []
for mat in mats:
    if mat.Label[-1].isdigit() and mat.Label[-2].isdigit() and mat.Label[-3].isdigit():
        orig = None
        for om in mats:
            if om.Label == mat.Label[:-3].strip():
                orig = om
                break
        if orig:
            for par in mat.InList:
                for prop in par.PropertiesList:
                    if getattr(par,prop) == mat:
                        print "Changed property '"+prop+"' of object "+par.Label+" from "+mat.Label+" to "+orig.Label
                        setattr(par,prop,orig)
            todelete.append(mat)
for tod in todelete:
    if not tod.InList:
        print "Deleting material "+tod.Label
        FreeCAD.ActiveDocument.removeObject(tod.Name)
    elif (len(tod.InList) == 1) and (tod.InList[0].isDerivedFrom("App::DocumentObjectGroup")):
        print "Deleting material "+tod.Label
        FreeCAD.ActiveDocument.removeObject(tod.Name)
    else:
        print "Unable to delete material "+tod.Label+": InList not empty"
Other languages: