Material Being Used



  • On 24/07/2018 at 09:14, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   R14 
    Platform:   Windows  ; Mac  ;  
    Language(s) :     C++  ;

    ---------
    Is it possible to get whether a material is currently being used in a scene?  In a similar way to how Remove Unused Materials checks, but without the deleting step.

    Dan



  • On 25/07/2018 at 02:21, xxxxxxxx wrote:

    Hi Dan,

    You can read the assignment data with the following code

    Bool MyCommand::Execute(BaseDocument* doc)
    {
    	BaseMaterial* mat = doc->GetActiveMaterial();
    	if (mat == nullptr)
    		return true;
      
    	GeData d;
    	if (!mat->GetParameter(DescLevel(ID_MATERIALASSIGNMENTS), d, DESCFLAGS_GET_0))
    		return true;
      
    	MatAssignData *mad = (MatAssignData* )d.GetCustomDataType(CUSTOMDATATYPE_MATASSIGN);
    	if (mad)
    		GePrint(String::IntToString(mad->GetObjectCount()) + " objects");
      
    	return true;
    }
    

    If you have any question, please let me know.
    Cheers,
    Maxime


Log in to reply