一键导入
xbim
xBIM Toolkit 是 .NET 平台开源 BIM(建筑信息模型)开发框架,提供 IFC2x3/IFC4 读写、几何处理(基于 OCCT)、COBie 数据交换、Web 可视化(xbim-viewer / WexBIM),是 .NET 生态中最完整的开源 BIM 解决方案。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
xBIM Toolkit 是 .NET 平台开源 BIM(建筑信息模型)开发框架,提供 IFC2x3/IFC4 读写、几何处理(基于 OCCT)、COBie 数据交换、Web 可视化(xbim-viewer / WexBIM),是 .NET 生态中最完整的开源 BIM 解决方案。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
面向 AI 编程助手的开源 GIS、CAD、C#、AI、IoT、3D 技能集合。覆盖 65 个开源项目,提供一站式技能索引、标签搜索、按需加载指南,让 AI 助手在 GIS/CAD/C#/AI/3D 领域获得更准确的代码生成与问题排查能力。
DocuTranslate(xunbu/docutranslate)是基于大语言模型的轻量级本地文件翻译工具,支持 PDF/Word/Excel/Markdown/EPUB/字幕/JSON 等多格式翻译,内置 MinerU PDF 解析、术语表自动生成、Web UI、REST API、Client SDK 与 MCP 接入。
AI/LLM 技能分类索引,覆盖 LLM 应用开发平台、自学习智能体、个人 AI 助手 Gateway、终端编码代理、多模型编排插件、文件翻译工具、AI 编程方法论等领域共 8 个开源项目,按需加载即可获得 Dify、Hermes Agent、OpenClaw、OpenCode、DocuTranslate 等工具的精准 AI 辅助。
geometry-api-net 是一个 .NET Standard 2.0 的空间几何计算库,提供对二维和三维几何对象的创建、解析、序列化以及空间关系运算能力。
GIS(地理信息系统)技能分类索引,覆盖空间数据处理、地图服务、几何运算、Web 可视化等领域共 23 个开源工具,按需加载即可获得 GDAL、QGIS、GeoServer、PostGIS、JTS 等工具的精准 AI 辅助。
robotgo-flow(znlgis/robotgo-flow)是基于 go-vgo/robotgo 构建的 Windows 桌面 RPA 自动化框架,通过声明式 YAML 定义工作流,利用图像模板匹配定位屏幕 UI 元素,自动执行鼠标/键盘/浏览器操作,内置人类行为模拟、交互式录制器与 .NET 10 WPF 托盘应用。
| name | xbim |
| description | xBIM Toolkit 是 .NET 平台开源 BIM(建筑信息模型)开发框架,提供 IFC2x3/IFC4 读写、几何处理(基于 OCCT)、COBie 数据交换、Web 可视化(xbim-viewer / WexBIM),是 .NET 生态中最完整的开源 BIM 解决方案。 |
| tags | ["bim","ifc","dotnet","csharp","geometry","occ"] |
项目地址: https://github.com/xBimTeam/XbimEssentials
几何引擎: https://github.com/xBimTeam/XbimGeometry
Web 查看器: https://github.com/xBimTeam/XbimWebUI
官方文档: https://docs.xbim.net/
许可证: CDDL-1.0
xBIM 模块矩阵:
| 包 | 用途 |
|---|---|
Xbim.Common | 基础接口 |
Xbim.Ifc / Xbim.Ifc2x3 / Xbim.Ifc4 / Xbim.Ifc4x3 | IFC 实体类与读写(最新 Essentials v6.0.x 支持 IFC4x3_ADD2) |
Xbim.IO.Esent / Xbim.IO.MemoryModel | 磁盘 / 内存模型 |
Xbim.Geometry.Engine | 基于 OCCT 的几何引擎(C++/CLI) |
Xbim.ModelGeometry.Scene | 几何场景生成(用于可视化) |
Xbim.WeXplorer (WexBIM 文件) | WebGL 查看器格式 |
Xbim.CobieLiteUk | COBie 数据交换 |
Xbim.Presentation | WPF 三维展示 |
dotnet add package Xbim.Essentials
dotnet add package Xbim.Geometry # 含 C++/CLI,仅 Windows x64 直接可用
dotnet add package Xbim.WindowsUI # WPF 控件(可选)
Linux/macOS:使用
Xbim.Geometry受限;可改用Xbim.Essentials仅做模型解析。Xbim.Essentials(当前 v6.0.x)多目标 .NET 6 / .NET 8。
using Xbim.Ifc;
using Xbim.Ifc4.Interfaces;
using var model = IfcStore.Open("project.ifc");
foreach (var w in model.Instances.OfType<IIfcWall>())
Console.WriteLine($"{w.GlobalId} {w.Name}");
IfcStore 同时支持 .ifc/.ifczip/.ifcxml;亦可保存 .xbim(Esent 数据库)作为高速缓存。
using var model = IfcStore.Open("a.ifc", null, null);
using (var txn = model.BeginTransaction("rename walls"))
{
foreach (var w in model.Instances.OfType<IIfcWall>())
w.Name = "WALL_" + w.GlobalId;
txn.Commit();
}
model.SaveAs("b.ifc");
model.SaveAs("b.ifczip");
model.SaveAs("b.xbim");
using Xbim.Ifc;
using Xbim.Ifc4.MeasureResource;
using Xbim.IO;
var ed = new XbimEditorCredentials {
ApplicationFullName = "MyApp", ApplicationIdentifier = "MyApp",
EditorsOrganisationName = "Org", EditorsFamilyName = "Doe",
EditorsGivenName = "John"
};
using var model = IfcStore.Create(ed, IfcSchemaVersion.Ifc4, XbimStoreType.InMemoryModel);
using (var txn = model.BeginTransaction("init"))
{
var project = model.Instances.New<Xbim.Ifc4.Kernel.IfcProject>(p => p.Name = "Project");
// 单位、上下文 / 站点 / 楼宇 / 楼层 ...
txn.Commit();
}
model.SaveAs("new.ifc");
using Xbim.Ifc;
using Xbim.ModelGeometry.Scene;
using var model = IfcStore.Open("a.ifc");
var ctx = new Xbim3DModelContext(model);
ctx.CreateContext(); // 解析几何(耗时,建议缓存为 .xbim)
foreach (var inst in model.Instances.OfType<IIfcProduct>())
{
var rep = ctx.ShapeInstancesOf(inst);
foreach (var si in rep)
{
// si.BoundingBox / si.Transformation / si.ShapeGeometryLabel
}
}
输出 WexBIM(用于 Web 查看器):
using var s = File.OpenWrite("a.wexbim");
using var bw = new BinaryWriter(s);
ctx.Write(bw);
前端用 xbim-viewer 加载。
foreach (var b in model.Instances.OfType<IIfcBuilding>()) { }
foreach (var s in model.Instances.OfType<IIfcBuildingStorey>()) { }
foreach (var w in model.Instances.OfType<IIfcWall>()) { }
foreach (var d in model.Instances.OfType<IIfcDoor>()) { }
foreach (var p in model.Instances.OfType<IIfcSpace>()) { }
// 属性集
foreach (var pset in model.Instances.OfType<IIfcPropertySet>())
foreach (var p in pset.HasProperties.OfType<IIfcPropertySingleValue>())
Console.WriteLine($"{pset.Name}.{p.Name} = {p.NominalValue}");
var project = model.Instances.OfType<IIfcProject>().FirstOrDefault();
foreach (var rel in project.IsDecomposedBy)
foreach (var site in rel.RelatedObjects.OfType<IIfcSite>())
foreach (var br in site.IsDecomposedBy)
foreach (var bld in br.RelatedObjects.OfType<IIfcBuilding>())
Console.WriteLine(bld.Name);
using Xbim.CobieLiteUk;
using Xbim.IO.CobieLiteUk;
var facility = model.ToCobieLiteUkAsync().Result;
facility.WriteJson("out.json");
facility.WriteXml("out.xml");
facility.WriteXls("out.xlsx", out _); // Excel 格式(COBie 标准)
.xbim(Esent):
IfcStore.Open("big.ifc", null, ifcDatabaseSizeThreshHold: 0) // 强制 Esent
Xbim3DModelContext 后缓存CreateContext 中过滤Xbim3DModelContext.MaxThreads = NXbim.Presentation 控件,不要直接绑定大模型| 问题 | 解决 |
|---|---|
Xbim.Geometry.Engine.Interop.dll 加载失败 | 缺 VC++ 运行时;目标平台必须是 x64 |
| 几何精度异常 | 设置 ModelFactors;用 OCCT ShapeFix |
| Linux 上几何 | 使用 .NET 几何引擎(受限),或迁移至 Xbim.WebUI |
| 模型大于 2GB | 切换为 Esent 后端,分批处理 |
IfcStore.Open("project.ifc") 读取 → model.BeginTransaction("name") 修改 → txn.Commit() → model.SaveAs("out.ifc") 保存。大文件先缓存为 .xbim(Esent 数据库)加速后续操作。几何处理仅在 Windows x64 上可用。Xbim.Geometry.Engine 依赖 VC++ 运行时,仅 Windows x64 可用,Linux 仅做模型解析;② 模型大于 2GB 应使用 Esent 后端(IfcStore.Open(file, null, ifcDatabaseSizeThreshHold: 0));③ Xbim3DModelContext 几何解析昂贵,构建后应缓存;④ 事务修改需在 BeginTransaction/Commit 内完成。IfcStore.Open("project.ifc") → 遍历 model.Instances.OfType<IIfcWall>() → 修改属性 → 保存。创建模型:IfcStore.Create(ed, IfcSchemaVersion.Ifc4, XbimStoreType.InMemoryModel) → model.BeginTransaction() → model.Instances.New<T>() → txn.Commit() → model.SaveAs("new.ifc")。IfcStore.Open("building.ifc") 打开 IFC 文件model.Instances.OfType<IIfcWall>() / <IIfcDoor>() / <IIfcSpace>()model.Instances.OfType<IIfcPropertySet>() → pset.HasProperties.OfType<IIfcPropertySingleValue>()IIfcProject → IsDecomposedBy → IIfcSite → IIfcBuilding → IIfcBuildingStoreymodel.ToCobieLiteUkAsync().Result.WriteXls("out.xlsx")Xbim3DModelContext → ctx.Write(bw) 生成 .wexbim 文件XbimEditorCredentials 设置作者信息IfcStore.Create(ed, IfcSchemaVersion.Ifc4, XbimStoreType.InMemoryModel) 创建空模型model.BeginTransaction("init") 开始事务model.Instances.New<IfcProject>() / New<IfcSite>() / New<IfcBuilding>() 构建空间结构txn.Commit() → model.SaveAs("new.ifc") 保存