Here’s how to switch from one material library to another. This script could be useful when you have a corrupted material library (eg missing render tree connections), but you have a backup copy of the material library. For example, you could export a good version of the material library from a backup copy of the scene, and then import the matlib into the current version of the scene.
// Material Library with bad render trees (missing connections)
var oMatLib = Dictionary.GetObject( "Sources.Materials.DefaultLib" );
// Material Library with good render trees
var oMatLib1 = Dictionary.GetObject( "Sources.Materials.DefaultLib1" );
oEnum = new Enumerator( oMatLib.Items ) ;
for (;!oEnum.atEnd();oEnum.moveNext() )
{
var oMat = oEnum.item() ;
if ( oMat.UsedBy.Count > 0 )
{
var oMat1 = oMatLib1.Items(oMat.Name);
if ( oMat1 == null )
{
LogMessage( "Cannot find " + oMat.Name + " in " + oMatLib1.Name );
}
else
{
LogMessage( "Repacing " + oMat.FullName + " with " + oMat1.FullName );
// Groups
var g = oMat.Owners.Filter( "#Group" );
SIAssignMaterial( g.GetAsText(), oMat1 );
// Objects
SIAssignMaterial( oMat.UsedBy.GetAsText(), oMat1 );
}
}
}