建筑工程施工进度智能编排 (SCS-BIM)
源码可见于:https://github.com/Asionm/SCS-BIM
项目简介
本项目是一个面向建筑工程的施工进度智能编制平台,用户只需上传一份标准 IFC 建筑信息模型文件,系统将自动完成以下任务:
- 解析模型中的构件类型、楼层信息和物理量数据;
- 调用语言模型自动生成构件分类、施工阶段和楼层映射;
- 基于定额库匹配构件对应的工日信息;
- 自动生成合理的施工顺序和任务依赖;
- 根据工日和人员配置估算施工周期;
- 输出甘特图并支持 CSV 进度计划导出。
平台结合 IFC 模型解析、语言模型推理、定额工日估算和甘特图可视化,面向设计单位、施工单位和 BIM 工程师,帮助高效编制建筑施工进度计划。
示例展示
技术流程
本项目主要基于 Python + Flask 构建后端,结合 IfcOpenShell 实现对 IFC 模型的构件与工程量解析,利用 OpenAI 或本地 Ollama 大语言模型完成构件分类、定额匹配与施工顺序推理,并通过 dhtmlxGantt 实现前端施工进度可视化,整体技术栈融合了 BIM 数据处理、智能语义推理与交互式工程展示。下图展示了平台自动施工进度编制的整体技术流程:
流程说明:
-
IFC文件上传:用户上传标准的 IFC 建筑模型;
-
信息提取:系统解析 IFC,提取楼层、构件、单位、类别等基础数据;
-
AI参与(LLM):通过语言模型智能生成构件分类、阶段信息及施工逻辑;
-
构件尺寸分析:自动获取体积、面积等工程量;
-
定额匹配与工日补充:通过定额库补充每类构件所需工日;
-
施工顺序形成:生成任务依赖、施工流水顺序等;
-
进度计划安排:最终生成符合逻辑的甘特图施工进度表。
安装与运行指南
1. 克隆项目
git clone https://github.com/Asionm/SCS-BIM
cd SCS-BIM
2. 安装依赖
建议使用 Python 3.10+ 与虚拟环境:
python -m venv venv
source venv/bin/activate # Windows 使用 venv\Scripts\activate
pip install -r requirements.txt
3. 启动后端服务
确保本地 Ollama 或 OpenAI 接口可用,并配置好 config.py
中的 API 相关信息:
python app.py
默认服务地址为:http://localhost:5000
4. 启动前端页面
打开源码中的index.html访问, 上传 .ifc
文件,平台将自动处理并展示施工甘特图计划。
项目结构
以下是根据你项目的文件结构撰写的 README.md
中的 项目结构(Project Structure) 部分:
项目结构 | Project Structure
SCS-BIM/
│
├── app.py # Flask 主程序,处理上传、进度推送和任务调度
├── config.py # LLM 接口配置,支持 OpenAI 与 Ollama 切换
├── export_sequence.py # 生成任务列表与施工甘特图数据
├── generate_bill.py # 从 IFC 提取构件工程量并生成清单
├── index.html # 前端页面(上传 + 甘特图展示)
├── LLM.py # 调用大语言模型,生成施工结构与匹配定额项
├── pre_process.py # IFC 文件预处理,提取项目信息与构件类别
├── quota_match.py # 根据定额库计算工日与施工周期
├── requirements.txt # Python 依赖列表
├── test.py # 示例/测试脚本入口(可选)
├── README.md # 项目说明文档
└── static/
└── ... # 上传文件与模板配置文件存放目录
配置说明
本项目支持使用 OpenAI 或本地部署的 Ollama 作为语言模型调用源,相关设置集中在 config.py
中的 LangChainConfig
类中。
1. 模型提供方选择
在 config.py
中可以通过 provider
参数切换:
LangChainConfig(provider="openai") # 使用 OpenAI(默认使用环境变量中的 API Key)
LangChainConfig(provider="ollama") # 使用本地部署的 Ollama 模型
2. OpenAI 配置项
如使用 OpenAI,请确保设置以下内容:
LangChainConfig(
provider="openai",
api_key="your-openai-key", # 或设置环境变量 OPENAI_API_KEY
model_name="gpt-4o", # 可替换为 gpt-4o, gpt-3.5-turbo 等
openai_base_url="https://api.openai.com" # 如使用第三方兼容接口,请替换此地址
)
3. Ollama 配置项
如使用 Ollama 本地模型(推荐部署 mistral
, llama3
等):
LangChainConfig(
provider="ollama",
ollama_model="mistral", # 模型名称
ollama_host="http://localhost:11434" # Ollama 默认服务地址
)
确保本地 Ollama 服务已运行并已加载相应模型。