louistrue/ids-flow

GitHub: louistrue/ids-flow

一款基于浏览器的拖放式可视化编辑器,用于创建、验证和导出符合 buildingSMART 标准的 IDS(信息交付规范)XML 文件。

Stars: 26 | Forks: 1

# IDS 编辑 一个可视化的编辑器,用于创建信息交付规范 (IDS) 文件,并带有自动验证功能。 ## 功能 - **可视化图形编辑器**:通过拖放界面创建 IDS 规范 - **实时验证**:通过浏览器中的 [`@ifc-lite/ids`](https://www.npmjs.com/package/@ifc-lite/ids) 自动进行 IDS 验证 —— 无需后端 - **多种节点类型**:支持所有 IDS facet 类型(Entity、Property、Attribute、Classification、Material、PartOf、Restriction) - **模板系统**:预置的规范模板 - **导出/导入**:保存和加载画布配置 - **IDS XML 导出**:生成合规的 IDS XML 文件 ## 设置 1. **克隆仓库** git clone cd idsedit 2. **安装依赖** npm install 3. **运行开发服务器** npm run dev 在浏览器中打开 [http://localhost:3000](http://localhost:3000)。 ## IDS 验证 验证完全在浏览器中使用 [`@ifc-lite/ids`](https://www.npmjs.com/package/@ifc-lite/ids) 运行: - **自动验证**:在您停止编辑 2 秒后进行验证 - **手动验证**:点击画布覆盖层或 Inspector Panel 上的“重新验证” - **状态指示器**: - 🟢 有效的 IDS —— 没有问题 - 🟠 警告 —— 非阻塞性问题 - 🔴 无效 —— 解析错误或阻塞性的客户端问题 ## 用法 1. **创建规范**:从面板中添加一个规范节点 2. **添加适用性**:将 entity、classification 或其他 facet 节点连接到规范的适用性句柄 3. **添加要求**:将 property、attribute 或其他 facet 节点连接到规范的要求句柄 4. **配置节点**:选择节点以在 Inspector Panel 中编辑其属性 5. **验证**:系统会自动验证您的 IDS 结构 6. **导出**:使用导出按钮将您的 IDS 下载为 XML ## 节点类型 - **Specification**:IDS 规范的主容器 - **Entity**:IFC entity 类型(例如 IfcWall、IfcDoor) - **Property**:属性集和属性 - **Attribute**:IFC attributes(Name、Description 等) - **Classification**:分类系统(Uniclass、ETIM 等) - **Material**:材质规范 - **PartOf**:空间关系 - **Restriction**:值约束(enumeration、pattern、bounds、length) ## 开发 ### 项目结构 ``` ├── app/ # Next.js app directory ├── components/ # React components │ ├── enumeration-editors/ # Specialized editors │ ├── nodes/ # Node type components │ └── ui/ # UI components ├── lib/ # Utilities and types ├── ids-docs/ # IDS documentation └── public/ # Static assets ``` ### 关键文件 - `components/specification-editor.tsx` - 主编辑器组件 - `components/inspector-panel.tsx` - 属性编辑器和验证显示 - `components/canvas-validation-overlay.tsx` - 画布级别的验证状态 - `lib/ids-xml-converter.ts` - 图形到 IDS XML 的转换 - `lib/use-ids-validation.ts` - 验证 hook(由 `@ifc-lite/ids` 提供支持) - `lib/ids-validation-service.ts` - `@ifc-lite/ids` 中 `parseIDS` 的封装 ### 添加新节点类型 1. 在 `components/nodes/` 中创建节点组件 2. 将节点类型添加到 `lib/graph-types.ts` 3. 更新 `specification-editor.tsx` 中的 `getDefaultNodeData()` 4. 在 `inspector-panel.tsx` 中添加字段编辑器 5. 更新 `ids-xml-converter.ts` 中的 XML 转换器 ## 部署 该应用程序旨在部署在 Vercel 上: 1. **部署**:推送到您的主分支以触发部署 无需后端或环境变量 —— 验证在浏览器中运行。 ## 贡献 1. Fork 该仓库 2. 创建一个功能分支 3. 进行您的更改 4. 彻底测试 5. 提交一个 pull request ## 许可证 AGPL-3 许可证
标签:BIM, XML, 可视化编辑器, 拖拽式, 自动化攻击