XbimWebUI是一个Javascript库,可用于BIM模型的Web表示。它使用WebGL并且独立于任何第三方WebGL框架。查看器的数据格式为WexBIM。不能直接加载IFC文件。
一、将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();
}
}
}
二、生成可需要的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.bat
for %%f in (*.ifc) do (
XbimConvert.exe %%f
del "%%~nf.xbim"
del "%%~nf.ifc.log"
)
来源:oschina
链接:https://my.oschina.net/u/4292373/blog/3497246