xBIM 綜合使用案例與 ASP.NET MVC 集成(一)

XbimWebUI是一個Javascript庫,可用於BIM模型的Web表示。它使用WebGL而且獨立於任何第三方WebGL框架。查看器的數據格式爲WexBIM。不能直接加載IFC文件。json

1、將IFC文件轉換成 WexBIM

        const string fileName = @"LakesideRestaurant.ifc";
        private void button1_Click(object sender, EventArgs e)
        {
            var wexBimFilename = Path.ChangeExtension(fileName, "wexBIM");
            IfcStore.ModelProviderFactory.UseHeuristicModelProvider(); 
            using (var model = IfcStore.Open(fileName))
            {
                // 文件加載完成以後,進行轉換
                var context = new Xbim3DModelContext(model);
                context.CreateContext();    // 建立幾何圖形

                //wexbim 只能在WebUI項目中使用
                using (var wexBimFile = File.Create(wexBimFilename))
                {
                    using (var wexBimBinaryWriter = new BinaryWriter(wexBimFile))
                    {
                        model.SaveAsWexBim(wexBimBinaryWriter);
                        wexBimBinaryWriter.Close();
                    }
                    wexBimFile.Close();
                }

            }
        }

 2、生成可須要的Json數據文件

 XbimWebUi採用的屬性文件是JSON,這個在項目中因人而異,若是三維模型文件較少,能夠採用JSON形式,可是若是屬性文件比較大,建議採用Ajax+Api服務形式。框架

  private void button2_Click(object sender, EventArgs e)
        {
            IfcStore.ModelProviderFactory.UseHeuristicModelProvider();
            using (var model = IfcStore.Open(fileName))
            {

                var facilities = new List<Facility>();
                var exchanger = new IfcToCOBieLiteUkExchanger(model, facilities);
                facilities = exchanger.Convert();

                //CObie僅用於在文件中保存單個建築信息,理論上只有一個Facility 
                for (var i = 0; i < facilities.Count; i++)
                {
                    var facility = facilities[i];
                    var file = $"facility_{i}.json";
                    facility.WriteJson(file);
                }
            }
        } 

 或者採用  xxx.batide

for %%f in (*.ifc) do (
XbimConvert.exe %%f

del "%%~nf.xbim"
del "%%~nf.ifc.log"
)
相關文章
相關標籤/搜索