Skip to content

Commit 444ef9f

Browse files
authored
Merge pull request #136 from EverseDevelopment/86b7dpjrc/SpecifiedItemCouldNotBeFound
Adjusted Materials Logic
2 parents ebe4d19 + eb5fa24 commit 444ef9f

File tree

2 files changed

+36
-20
lines changed

2 files changed

+36
-20
lines changed

Common_glTF_Exporter/Core/GlTFExportContext.cs

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -280,23 +280,14 @@ public void OnElementEnd(ElementId elementId)
280280
public void OnMaterial(MaterialNode node)
281281
{
282282
if (preferences.materials == MaterialsEnum.materials || preferences.materials == MaterialsEnum.textures)
283-
{
283+
{
284284
if (node.MaterialId == ElementId.InvalidElementId)
285285
{
286286
currentMaterial = GLTFExportUtils.GetGLTFMaterial(materials, node.Transparency, false);
287287
}
288288
else
289289
{
290-
string materialId = node.MaterialId.ToString();
291-
if (materials.Contains(materialId))
292-
{
293-
currentMaterial = materials.GetElement(materialId);
294-
}
295-
else
296-
{
297-
currentMaterial = RevitMaterials.Export(node, preferences, currentDocument);
298-
}
299-
materials.AddOrUpdateCurrentMaterial(materialId, currentMaterial, false);
290+
currentMaterial = RevitMaterials.ProcessMaterial(node, preferences, currentDocument, materials);
300291
}
301292
}
302293
}

Common_glTF_Exporter/Materials/RevitMaterials.cs

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using System.Windows.Controls;
1212
using System.Windows.Media.Media3D;
1313
using Material = Autodesk.Revit.DB.Material;
14+
using Common_glTF_Exporter.Utils;
1415

1516

1617
namespace Common_glTF_Exporter.Export
@@ -19,21 +20,45 @@ public static class RevitMaterials
1920
{
2021
const int ONEINTVALUE = 1;
2122

22-
/// <summary>
23-
/// Export Revit materials.
24-
/// </summary>
25-
public static GLTFMaterial Export(MaterialNode node,
26-
Preferences preferences, Document doc)
23+
public static GLTFMaterial ProcessMaterial(MaterialNode node,
24+
Preferences preferences, Document doc, IndexedDictionary<GLTFMaterial> materials)
2725
{
28-
GLTFMaterial gl_mat = new GLTFMaterial();
29-
float opacity = ONEINTVALUE - (float)node.Transparency;
26+
GLTFMaterial gl_mat;
3027

31-
Material material = doc.GetElement(node.MaterialId) as Material;
28+
string materialId = node.MaterialId.ToString();
29+
if (materials.Contains(materialId))
30+
{
31+
gl_mat = materials.GetElement(materialId);
32+
}
33+
else
34+
{
35+
Autodesk.Revit.DB.Material material = doc.GetElement(node.MaterialId) as Autodesk.Revit.DB.Material;
3236

3337
if (material == null)
3438
{
35-
return gl_mat;
39+
gl_mat = GLTFExportUtils.GetGLTFMaterial(materials, node.Transparency, false);
40+
materialId = gl_mat.UniqueId;
3641
}
42+
else
43+
{
44+
gl_mat = RevitMaterials.Export(node, preferences, doc, material);
45+
}
46+
}
47+
materials.AddOrUpdateCurrentMaterial(materialId, gl_mat, false);
48+
49+
return gl_mat;
50+
}
51+
52+
53+
/// <summary>
54+
/// Export Revit materials.
55+
/// </summary>
56+
public static GLTFMaterial Export(MaterialNode node,
57+
Preferences preferences, Document doc, Material material)
58+
{
59+
60+
GLTFMaterial gl_mat = new GLTFMaterial();
61+
float opacity = ONEINTVALUE - (float)node.Transparency;
3762

3863
gl_mat.name = material.Name;
3964
gl_mat.UniqueId = node.MaterialId.ToString();

0 commit comments

Comments
 (0)