Skip to content

IFC 编辑 API ​

edit-service 是 IFC 编辑端点的唯一参考,Python FastAPI,默认端口 8100。路径参数 id 匹配 ^m_[0-9a-f]{16}$,guid 是 IFC GlobalId。直连时错误响应是 FastAPI 形态的 {"detail": ...}。

直改链路已于 2026-08-08 退役。修改一律走构建脚本:PUT /script 或 POST /script/edit-call。原直改端点返回 410 Gone,不是 404;历史实现可从 git 历史回捞。现役编辑面见 Script 编辑与版本。

端点目录 ​

GET /health ​

健康检查,返回 {"status": "ok"}。

直改端点,已全部退役 ​

端点退役说明
PUT /models/{id}/entities/{guid}改构件请改构建脚本
GET /models/{id}/entities/{guid}/editable-schema无直改即无类型化表单
DELETE /models/{id}/entities/{guid}删除构件同样走脚本
POST /models/{id}/commitscript/save 是唯一的版本检查点

均返回 410 {"detail": "direct IFC editing retired: edit the build script (script-as-source)"}。

GET /models/{id}/pending ​

当前 pending 列表,无则空数组。直改退役后仅作运行簿记。此接口不校验模型是否存在。

DELETE /models/{id}/pending ​

丢弃全部 pending,返回丢弃条数;模型不存在返回 404。

GET /models/{id}/history ​

持久化编辑历史,存储在模型的 edit-history.json。直改退役后只读保留,新记录来自外部修改登记接口。

GET /models/{id}/versions ​

json
{"versions": [{"version": "v1", "createdAt": "<ISO8601 UTC>"}, ...], "current": "v2"}

只有最新大版本的 IFC 在盘上,历史版本按需从脚本重建,见编辑工作流。

POST /models/{id}/diff ​

body 是 {"base": "v1", "target": "v2"},target 可为 "current" 表示当前状态:

json
{
  "base": "v1",
  "target": "v2",
  "added": ["<guid>", ...],
  "removed": ["<guid>", ...],
  "changed": [{"guid": "...", "changes": [{"field": "...", "old": ..., "new": ...}]}]
}

版本不存在返回 404,缺参数返回 422。对比是属性级语义,不做几何对比。

POST /models/{id}/diff/upload ​

上传对比。multipart 字段 file 是待对比的 IFC,和当前状态做属性级对比。响应比普通 diff 多一个 labels,即 guid 到可读名称的映射。不落盘、不缓存;文件非法返回 422。

脚本编辑端点 ​

GET/PUT /models/{id}/script、script/params、script/undo|redo|discard、script/run、script/save、script/rollback、script/diff、script/staging/diff、script/locate、script/edit-call、GET /models/{id}/scripts。语义见 Script 编辑与版本,机器可读 schema 见编辑 API 参考。

经 Go 代理 ​

Go server 把这些端点暴露在 /api/v1 下:

  • 脚本编辑端点一一对应,路径不变,query 透传。run、save、rollback 成功后自动排队重转 XKT。script/edit-call 不经代理,仅直连可用。
  • 只读与对比端点在 edit/... 前缀下:edit/diff、edit/pending、edit/history、edit/versions。
  • 直改代理路由已随退役删除。

与直连的差异:响应统一包 envelope,错误码映射为 40400、40900、40001、50200 等,见 REST API。

Apache-2.0 · xeokit AGPL 注意事项见项目介绍