IfcApi
IfcLoader
IfcViewerApi

IFC.js 开发文档

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);

API 参考

IfcFile

  • read(filepath: string): Promise<void>: 读取指定路径下的 IFC 文件。
  • objects: IfcObject[]: 获取 IFC 文件中的所有对象。
  • toJSON(): string: 将 IFC 文件转换为 JSON 格式。

IfcObject

  • id: number: 获取对象的 ID。
  • type: string: 获取对象的类型。
  • properties: {[key: string]: any}: 获取对象的属性。
  • relationships: IfcRelationship[]: 获取对象的关系。
  • IfcRelationship
  • type: string: 获取关系的类型。

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