MCPcopy Create free account
hub / github.com/IfcOpenShell/IfcOpenShell / FindOrCreateMaterial

Function FindOrCreateMaterial

src/ifcmax/IfcMax.cpp:135–162  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

133}
134
135static Mtl* FindOrCreateMaterial(MtlBaseLib* library, Interface* max_interface, int& slot, const IfcGeom::Material& material) {
136 Mtl* m = FindMaterialByName(library, material.name());
137 if (m == 0) {
138 StdMat2* stdm = NewDefaultStdMat();
139 const TimeValue t = -1;
140 if (material.hasDiffuse()) {
141 const double* diffuse = material.diffuse();
142 stdm->SetDiffuse(Color(diffuse[0], diffuse[1], diffuse[2]),t);
143 }
144 if (material.hasSpecular()) {
145 const double* specular = material.specular();
146 stdm->SetSpecular(Color(specular[0], specular[1], specular[2]),t);
147 }
148 if (material.hasSpecularity()) {
149 stdm->SetShininess((float)material.specularity(), t);
150 }
151 if (material.hasTransparency()) {
152 stdm->SetOpacity(1.0f - (float)material.transparency(), t);
153 }
154 m = stdm;
155 m->SetName(S(material.name()));
156 library->Add(m);
157 if (slot < NUM_MATERIAL_SLOTS) {
158 max_interface->PutMtlToMtlEditor(m,slot++);
159 }
160 }
161 return m;
162}
163
164static Mtl* ComposeMultiMaterial(std::map<std::vector<std::string>, Mtl*>& multi_mats, MtlBaseLib* library,
165 Interface* max_interface, int& slot, const std::vector<IfcGeom::Material>& materials,

Callers 1

ComposeMultiMaterialFunction · 0.85

Calls 2

FindMaterialByNameFunction · 0.85
nameMethod · 0.45

Tested by

no test coverage detected