IFC.js 是一个用于读取和处理 IFC 文件的 JavaScript 库。它提供了一组 API,可以方便地从 IFC 文件中提取 BIM 数据,并进行各种处理和转换操作。
您可以使用 npm 包管理工具来安装 IFC.js:
npm install ifc-js
以下是一些基本的使用示例:
读取 IFC 文件
import { IfcFile } from 'ifc-js';
const file = new IfcFile();
await file.read('path/to/file.ifc');
获取所有对象
const objects = file.objects;
console.log(objects);
获取对象类型
const type = objects[0].type;
console.log(type);
获取对象属性
const properties = objects[0].properties;
console.log(properties);
获取对象关系
const relationships = objects[0].relationships;
console.log(relationships);
导出为 JSON 格式
const json = file.toJSON();
console.log(json);
IfcFile
IfcObject
relatedObjects: IfcObject[]: 获取关系中的所有对象。
以下是一个完整的示例,演示了如何使用 IFC.js 从 IFC 文件中提取房间模型数据并转换为 JSON 格式:
import { IfcFile } from 'ifc-js';
async function main() {
// 读取 IFC 文件
const file = new IfcFile();
await file.read('path/to/file.ifc');
// 查找所有空间对象
const spaces = file.objects.filter((obj) => obj.type === 'IfcSpace');
// 提取空间数据
const data = spaces.map((space) => {
const properties = space.properties;
const boundaries = space.relationships
.filter((rel) => rel.type === 'IfcRelSpaceBoundary')
.map((rel) => rel.relatedObjects.find((obj) => obj.type === 'IfcFaceBasedSurfaceModel'))
.map((face) => face.properties);
return { id: space.id, name: properties['Name'], boundaries };
});
// 导出为 JSON 格式
const json = JSON.stringify(data, null, 2);
console.log(json);
}
main().catch((err) => console.error(err));
IFC.js 的开发文档和 API 参考可以在项目的 GitHub 页面上找到:https://github.com/IFCjs/ifcjs