Opis |
---|
Łączy materiały o tej samej podstawowej nazwie (z różnymi końcówkami numerycznymi, np. 001, 002, ...) w jeden. Zachowany zostanie tylko pierwszy materiał, a wszystkie obiekty powiązane z duplikatami zostaną przypisane do tego pierwszego. Przed użyciem tego makra upewnij się więc, że pierwszy materiał (ten bez końcówki numerycznej lub o najniższym numerze) jest właściwy. Macro version: 2.0 Last modified: 2019-07-12 FreeCAD version: All Download: Ikona paska narzędzi Autor: yorik |
Autor |
yorik |
Do pobrania |
Ikona paska narzędzi |
Odnośniki |
Przepisy na makropolecenia Jak zainstalować makrodefinicje Dostosowanie pasków narzędzi |
Wersja Makrodefinicji |
2.0 |
Data zmian |
2019-07-12 |
Wersja FreeCAD |
All |
Domyślny skrót |
Brak |
Zobacz również |
- |
Łączy materiały o tej samej podstawowej nazwie (z różnymi końcówkami numerycznymi, np. 001, 002, ...) w jeden. Zachowany zostanie tylko pierwszy materiał, a wszystkie obiekty powiązane z duplikatami zostaną przypisane do tego pierwszego. Przed użyciem tego makra upewnij się więc, że pierwszy materiał (ten bez końcówki numerycznej lub o najniższym numerze) jest właściwy.
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")