zhangyuekai
2024-08-17 2ea53b9fbd3fc318f1c02c1888c22aec5abab8ef
HStation.RevitDev/RevitDataExport/Utility/RevitTypeExtense.cs
@@ -2,6 +2,7 @@
using HStation.RevitDev.Model.ModelEnum;
using HStation.RevitDev.RevitDataExport.Common;
using HStation.RevitDev.RevitDataExport.Entity;
using HStation.RevitDev.RevitDataExport.Parser;
using System;
using System.Reflection;
@@ -37,7 +38,7 @@
        public static Type GetElementModelType(this RevitType revitType) 
        {
            var exportTypes = revitType.GetType().Assembly.GetExportedTypes();
            var exportTypes = Assembly.GetExecutingAssembly().GetExportedTypes();
            foreach (var type in exportTypes)
            {
                if (!type.IsSubclassOf(typeof(ModelBase))) { continue; }
@@ -53,5 +54,24 @@
            }
            return null;
        }
        public static BaseParser CreateModelParser(this RevitType revitType)
        {
            var types = Assembly.GetExecutingAssembly().GetTypes();
            foreach (var type in types)
            {
                if (!type.IsSubclassOf(typeof(BaseParser))) { continue; }
                var attr = type.GetCustomAttribute<RevitTypeAttribute>();
                if (attr == null) { continue; }
                if (attr.m_revitType != revitType) { continue; }
                BaseParser parser = Activator.CreateInstance(type) as BaseParser;
                if (parser == null) { continue; }
                return parser;
            }
            return null;
        }
    }
}