Macro merge duplicate materials/it: Difference between revisions
(Updating to match new version of source page) |
(Updating to match new version of source page) |
||
Line 2: | Line 2: | ||
{{Macro/it|Icon=Text-x-python|Name=Macro merge duplicate materials|Name/it=Unisci materiali duplicati|Description=Unisce i materiali che hanno lo stesso nome di base|Author=yorik|Version=1.0|Date=2017-04-16}} |
{{Macro/it|Icon=Text-x-python|Name=Macro merge duplicate materials|Name/it=Unisci materiali duplicati|Description=Unisce i materiali che hanno lo stesso nome di base|Author=yorik|Version=1.0|Date=2017-04-16}} |
||
<div class="mw-translate-fuzzy"> |
|||
===Descrizione=== |
===Descrizione=== |
||
</div> |
|||
Fonde i materiali che hanno lo stesso nome di base (con differenti terminazioni numerali come 001, 002, ...) in uno solo. Viene mantenuto solo il primo, e tutti gli oggetti che puntano ai duplicati sono invece indirizzati al primo. Quindi, prima di utilizzare questa macro, assicurarsi che il primo materiale sia quello giusto (sia quello senza finale numerico o con il numero più basso presente). |
Fonde i materiali che hanno lo stesso nome di base (con differenti terminazioni numerali come 001, 002, ...) in uno solo. Viene mantenuto solo il primo, e tutti gli oggetti che puntano ai duplicati sono invece indirizzati al primo. Quindi, prima di utilizzare questa macro, assicurarsi che il primo materiale sia quello giusto (sia quello senza finale numerico o con il numero più basso presente). |
||
<div class="mw-translate-fuzzy"> |
|||
===Script=== |
===Script=== |
||
</div> |
|||
⚫ | |||
⚫ | |||
{{Code|code= |
{{Code|code= |
||
import FreeCAD,FreeCADGui |
import FreeCAD,FreeCADGui |
Revision as of 16:08, 9 August 2018
File:Text-x-python Macro merge duplicate materials |
Descrizione |
---|
Unisce i materiali che hanno lo stesso nome di base Versione macro: 1.0 Ultima modifica: 2017-04-16 Autore: yorik |
Autore |
yorik |
Download |
None |
Link |
Raccolta di macro Come installare le macro Personalizzare la toolbar |
Versione macro |
1.0 |
Data ultima modifica |
2017-04-16 |
Versioni di FreeCAD |
None |
Scorciatoia |
Nessuna |
Vedere anche |
Nessuno |
Descrizione
Fonde i materiali che hanno lo stesso nome di base (con differenti terminazioni numerali come 001, 002, ...) in uno solo. Viene mantenuto solo il primo, e tutti gli oggetti che puntano ai duplicati sono invece indirizzati al primo. Quindi, prima di utilizzare questa macro, assicurarsi che il primo materiale sia quello giusto (sia quello senza finale numerico o con il numero più basso presente).
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"