基于 Web 的 IFC 建筑模型查看与参数统计分析系统。
/workspace/ ├── src/ # TypeScript 源代码 │ ├── index.ts # 入口文件 │ ├── Viewer3D.ts # 主查看器类 │ ├── core/ # 核心系统 │ │ └── Events.ts # 事件系统 │ ├── loaders/ # 加载器 │ │ └── IFCLoader.ts # WebIFC 集成 │ ├── materials/ # 材质管理 │ │ └── MaterialManager.ts # 材质缓存 │ ├── selection/ # 选择系统 │ │ └── SelectionManager.ts # 选择管理 │ ├── properties/ # 属性提取 │ │ └── PropertyManager.ts # IFC 属性提取 │ ├── ui/ # UI 组件 │ │ └── UIManager.ts # UI 协调 │ ├── utils/ # 工具函数 │ │ ├── ApiClient.ts # API 客户端 │ │ └── GeometryUtils.ts # 几何工具 │ └── types/ # TypeScript 类型定义 │ ├── IFCInterfaces.ts # IFC 类型 │ └── ViewerTypes.ts # 查看器类型 │ ├── public/ # 静态资源 │ ├── styles/main.css # CSS 样式 │ └── web-ifc/ # WebIFC WASM 文件 │ ├── backend/ # FastAPI 后端 │ ├── main.py # API 入口 │ └── requirements.txt │ ├── dist/ # 构建输出 ├── package.json ├── tsconfig.json ├── vite.config.ts └── Dockerfile
参考 bim-viewer 的设计,所有核心功能封装在 Viewer3D 主类中:
# 安装依赖
npm install
# 启动前端开发服务器
npm run dev
# 启动后端(另一个终端)
cd backend
pip install -r requirements.txt
uvicorn main:app --reload --port 7860
npm run build
docker build -t ifc-viewer . docker run -d -p 7860:7860 -v ifc-data:/app/data ifc-viewer
POST /token - 登录获取 JWTPOST /register - 注册用户GET /ifc/files - 获取文件列表POST /ifc/upload - 上传 IFC 文件 (仅管理员)GET /ifc/data/{file_id} - 获取 IFC 文件数据 (二进制)GET /ifc/download/{file_id} - 下载 IFC 文件 (仅管理员)DELETE /ifc/delete/{file_id} - 删除 IFC 文件 (仅管理员)MIT