1111using System . Windows . Controls ;
1212using System . Windows . Media . Media3D ;
1313using Material = Autodesk . Revit . DB . Material ;
14+ using Common_glTF_Exporter . Utils ;
1415
1516
1617namespace 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