c-mellueh/bSDD-Toolkit

GitHub: c-mellueh/bSDD-Toolkit

bSDD-Toolkit 是一款用于创建、验证和管理 buildingSMART 数据字典的可视化编辑器和 Python 工具包。

Stars: 7 | Forks: 1

# bSDD-Toolkit 用于处理 buildingSMART Data Dictionary (bSDD) JSON 的可视化编辑器和 Python 工具包。 本仓库包含: - 位于 `src/bsdd_json` 的 bSDD JSON 验证数据模型 (Pydantic v2)。 - 位于 `src/bsdd_gui` 的 PySide6 GUI,用于创建、查看和编辑 bSDD 词典。 ## 功能特性 - 编辑词典:类、属性集、属性和允许值。 - 支持拖放和快速搜索的类树。 - 支持排序和内联编辑(如支持)的属性集和属性表。 - 关系和 IFC 辅助工具(现有模块可供扩展)。 - 模块化架构,带有轻量级插件系统。 - 多语言就绪 UI(包含德语翻译脚手架)。 ## 环境要求 - Python 3.10+ - 建议使用 Pip 和虚拟环境 - 您操作系统所需的 Qt (PySide6) 平台依赖项 ## 安装 克隆仓库并安装包(可编辑模式用于开发,或标准安装): ``` git clone https://github.com//bsdd-Toolkit.git cd bsdd-Toolkit # (可选) 创建并激活 virtualenv python -m venv .venv # Windows .\.venv\Scripts\activate # macOS/Linux source .venv/bin/activate # 安装 pip install -U pip cd src/bsdd_gui pip install -e . # for development # 或 pip install . # for a regular install # dev extras pip install -e .[dev] # ruff, black, mypy, pytest, etc. ``` ## 运行 GUI 直接运行应用模块(可选择传递 bSDD JSON 文件路径以打开): ``` cd src python -m bsdd_gui # start empty python -m bsdd_gui som-0.2.0.json # open example dictionary ``` 启动器支持的命令行选项: ``` python -m bsdd_gui [open_path] [-l LOG_LEVEL] [-ol --open_last_project] [-ofm --offline_mode] open_path Optional path to a bSDD JSON file -l, --log-level Integer log level (e.g. 10=DEBUG, 20=INFO) --open_last_project Open the last project on startup --offline_mode Start bSDD-GUI without Internet connection ``` ## 截图 ### 主窗口 ![Main UI](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/309ecd8442205122.png) ### 编辑器 | 编辑属性 | 编辑类 | | --- | --- | | 编辑属性 | 编辑类 | ### 图视图 ![Graph View](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/5d0f82633a205140.png) ## 使用数据模型 (Python) 使用 Pydantic 模型加载、检查和写入 bSDD JSON: ``` from bsdd_json import BsddDictionary, BsddClass, BsddProperty, BsddClassProperty # 加载并验证现有字典 (参见 som-0.2.0.json) d = BsddDictionary.load("example.json") print(d.DictionaryName, d.DictionaryVersion) # 通过编程创建新字典 new_d = BsddDictionary( OrganizationCode="example", DictionaryCode="demo", DictionaryName="Demo Dictionary", DictionaryVersion="0.1.0", LanguageIsoCode="en-US", LanguageOnly=False, UseOwnUri=False) # 创建并添加 Classes class_1 = BsddClass(Code="Wall", Name="Wall", ClassType="Class") class_2 = BsddClass(Code="Slab", Name="Slab", ClassType="Class") new_d.Classes += [class_1, class_2] # 创建并添加 Property prop_1 = BsddProperty(Code="Height", Name="Height", DataType="Real") new_d.Properties.append(prop_1) # 创建并添加 ClassProperties class_1.ClassProperties.append( BsddClassProperty(Code="height", PropertyCode=prop_1.Code, PropertySet="Geometry") ) class_2.ClassProperties.append( BsddClassProperty(Code="height", PropertyCode=prop_1.Code, PropertySet="Geometry") ) # 序列化为 JSON new_d.save("example.json") ``` ## 项目结构 - `src/bsdd_json` — bSDD JSON 的 Pydantic 模型和辅助工具。 - `src/bsdd_gui` — PySide6 GUI 应用程序(使用 `python -m bsdd_gui` 运行)。 - `__main__.py` — GUI 启动器的入口点。 - `module/` — 功能模块(类树、属性表、搜索等)。 - `core/` — 应用程序连接和共享 UI 逻辑。 - `tool/` — 从 /core 调用的辅助函数。 - `resources/` — 图标、翻译和静态资源。 ## 开发 本地开发时的有用命令: ``` # 格式化 & linting ruff check . black . # 类型检查 mypy src # 在开发期间运行 GUI python -m bsdd_gui ``` ## 构建您自己的 GUI 使用本项目“构建您自己的 GUI”通常有两种方式: 1. 将此应用打包为独立可执行文件(最终用户无需 Python) 2. 使用您自己的模块/小部件扩展 GUI ### 1) 打包独立应用 (PyInstaller) 前置条件: - Python 3.10+ - 已安装项目的虚拟环境 - 已安装 PyInstaller:`pip install pyinstaller` 构建 (Windows, PowerShell): ``` # 从 repo root python -m venv .venv .\.venv\Scripts\Activate.ps1 pip install -U pip pip install . pip install pyinstaller # 运行构建 pyinstaller main.spec -y ``` 产物: - Windows: `src/dist/bSDD-Toolkit/bSDD-Toolkit.exe` - macOS/Linux: `src/dist/bSDD-Toolkit/` 二进制文件位于同一文件夹中 注意: - spec 文件 (`src/main.spec`) 打包了资源并设置了应用名称和图标。 - 要隐藏控制台窗口,请在 `src/main.spec` 中将 `console=True` 更改为 `False` 并重新构建。在 Windows 上,您可以使用 UI 切换控制台。 - VS Code 用户也可以运行 `Build` 启动配置,该配置执行 `src/build.ps1`。 ### 2) 扩展 GUI (创建模块) 搭建一个插入应用的新模块: ``` # 从 repo root python src/bsdd_gui/_add_module.py my_feature ``` 这会在以下位置生成文件: - `src/bsdd_gui/core/my_feature.py` – 核心钩子/逻辑 - `src/bsdd_gui/tool/my_feature.py` – 属性/状态的便捷访问器 - `src/bsdd_gui/module/my_feature/` – UI、触发器和属性 需要一个手动步骤:在 `src/bsdd_gui/tool/__init__.py` 中公开新工具,方法是添加导入行,例如: ``` from .my_feature import MyFeature ``` UI 工作流(可选): - 使用 Qt Designer 设计 Qt 表单,并将 `.ui` 文件保存在 `src/bsdd_gui/module/my_feature/qt/` 下。 - 使用 `pyside6-uic` 将它们编译为 Python,例如: pyside6-uic src/bsdd_gui/module/my_feature/qt/Widget.ui \ -o src/bsdd_gui/module/my_feature/qt/ui_Widget.py 运行并迭代: ``` python -m bsdd_gui -l 10 ``` 提示:查看 `src/bsdd_gui/module/` 中的现有模块(例如 `class_editor_widget` 或 `main_window_widget`)作为参考实现,了解如何将 `ui.py`、`trigger.py`、`core/*.py` 和 `tool/*.py` 连接在一起。 ## 许可证 MIT — 详情见 `LICENSE`。 ## 致谢 - buildingSMART International 的 bSDD 倡议和规范。
标签:BIM, bSDD, buildingSMART, GUI, Homebrew安装, IFC, IPv6支持, JSON编辑器, Pydantic, PySide6, Python, 二进制发布, 可视化工具, 工程软件, 建筑信息模型, 开发工具包, 开源工具, 数据字典, 数据标准, 数据验证, 无后门, 桌面应用, 桌面端, 逆向工具