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
```
## 截图
### 主窗口

### 编辑器
| 编辑属性 | 编辑类 |
| --- | --- |
|
|
|
### 图视图

## 使用数据模型 (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 倡议和规范。
|
|
### 图视图

## 使用数据模型 (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, 二进制发布, 可视化工具, 工程软件, 建筑信息模型, 开发工具包, 开源工具, 数据字典, 数据标准, 数据验证, 无后门, 桌面应用, 桌面端, 逆向工具