Mtl* FindOrCreateMaterial(MtlBaseLib* library, Interface* max_interface, int& slot, const IfcGeom::Material& material) { Mtl* m = FindMaterialByName(library, material.name()); if (m == 0) { StdMat2* stdm = NewDefaultStdMat(); const TimeValue t = -1; if (material.hasDiffuse()) { const double* diffuse = material.diffuse(); stdm->SetDiffuse(Color(diffuse[0], diffuse[1], diffuse[2]),t); } if (material.hasSpecular()) { const double* specular = material.specular(); stdm->SetSpecular(Color(specular[0], specular[1], specular[2]),t); } if (material.hasSpecularity()) { stdm->SetShininess(material.specularity(), t); } if (material.hasTransparency()) { stdm->SetOpacity(1.0 - material.transparency(), t); } m = stdm; m->SetName(S(material.name())); library->Add(m); if (slot < NUM_MATERIAL_SLOTS) { max_interface->PutMtlToMtlEditor(m,slot++); } } return m; }
void CompositeMat::Reset() { compositematCD.Reset(this, TRUE); // reset all pb2's Init(); CompMatDlgProc *parmDlg = (CompMatDlgProc *) compmat_param_blk.GetUserDlgProc(); if (parmDlg) parmDlg->ReloadDialog(); //watje 3-22-99 set the name of the first material Mtl *m = NULL;; Interval iv; pblock2->GetValue(compmat_mtls,0,m,iv,0); if (m) m->SetName(GetString(IDS_PW_BASE)); }