190 lines
5.3 KiB
Markdown
190 lines
5.3 KiB
Markdown
|
# BlenderPython - SUWood Ruby到Python翻译项目
|
|||
|
|
|||
|
## 📋 项目概述
|
|||
|
|
|||
|
这是一个将SketchUp的SUWood Ruby插件翻译为Python版本的项目,目标是在Blender环境中运行。
|
|||
|
|
|||
|
## 📁 文件结构
|
|||
|
|
|||
|
```
|
|||
|
blenderpython/
|
|||
|
├── __init__.py # 包初始化文件
|
|||
|
├── README.md # 本说明文档
|
|||
|
├── suw_load.py # ✅ 模块加载器 (已完成)
|
|||
|
├── suw_constants.py # ✅ 常量定义 (已完成)
|
|||
|
├── suw_client.py # ✅ TCP客户端 (已完成)
|
|||
|
├── suw_observer.py # ✅ 事件观察者 (已完成)
|
|||
|
├── suw_impl.py # ⏳ 核心实现 (存根版本)
|
|||
|
├── suw_menu.py # ⏳ 菜单系统 (存根版本)
|
|||
|
├── suw_unit_point_tool.py # ⏳ 点工具 (存根版本)
|
|||
|
├── suw_unit_face_tool.py # ⏳ 面工具 (存根版本)
|
|||
|
├── suw_unit_cont_tool.py # ⏳ 轮廓工具 (存根版本)
|
|||
|
└── suw_zone_div1_tool.py # ⏳ 区域分割工具 (存根版本)
|
|||
|
```
|
|||
|
|
|||
|
## ✅ 翻译进度
|
|||
|
|
|||
|
### 已完成的模块 (4/10)
|
|||
|
|
|||
|
1. **suw_load.py** - 模块加载器
|
|||
|
- 原文件: `SUWLoad.rb` (13行)
|
|||
|
- 状态: ✅ 完全翻译
|
|||
|
- 功能: 加载所有SUWood模块
|
|||
|
|
|||
|
2. **suw_constants.py** - 常量定义
|
|||
|
- 原文件: `SUWConstants.rb` (306行)
|
|||
|
- 状态: ✅ 完全翻译
|
|||
|
- 功能: 定义所有常量、路径管理、核心功能函数
|
|||
|
|
|||
|
3. **suw_client.py** - TCP客户端
|
|||
|
- 原文件: `SUWClient.rb` (118行)
|
|||
|
- 状态: ✅ 完全翻译
|
|||
|
- 功能: 网络通信、命令处理、消息队列
|
|||
|
|
|||
|
4. **suw_observer.py** - 事件观察者
|
|||
|
- 原文件: `SUWObserver.rb` (87行)
|
|||
|
- 状态: ✅ 完全翻译
|
|||
|
- 功能: 监听Blender事件、工具变化、选择变化
|
|||
|
|
|||
|
### 待翻译的模块 (6/10)
|
|||
|
|
|||
|
5. **suw_impl.py** - 核心实现 ⏳
|
|||
|
- 原文件: `SUWImpl.rb` (2019行)
|
|||
|
- 状态: 存根版本
|
|||
|
- 优先级: **🔥 高**
|
|||
|
- 说明: 这是最重要的文件,包含主要业务逻辑
|
|||
|
|
|||
|
6. **suw_menu.py** - 菜单系统 ⏳
|
|||
|
- 原文件: `SUWMenu.rb` (71行)
|
|||
|
- 状态: 存根版本
|
|||
|
- 优先级: 中
|
|||
|
|
|||
|
7. **suw_unit_point_tool.py** - 点工具 ⏳
|
|||
|
- 原文件: `SUWUnitPointTool.rb` (129行)
|
|||
|
- 状态: 存根版本
|
|||
|
- 优先级: 中
|
|||
|
|
|||
|
8. **suw_unit_face_tool.py** - 面工具 ⏳
|
|||
|
- 原文件: `SUWUnitFaceTool.rb` (146行)
|
|||
|
- 状态: 存根版本
|
|||
|
- 优先级: 中
|
|||
|
|
|||
|
9. **suw_unit_cont_tool.py** - 轮廓工具 ⏳
|
|||
|
- 原文件: `SUWUnitContTool.rb` (137行)
|
|||
|
- 状态: 存根版本
|
|||
|
- 优先级: 中
|
|||
|
|
|||
|
10. **suw_zone_div1_tool.py** - 区域分割工具 ⏳
|
|||
|
- 原文件: `SUWZoneDiv1Tool.rb` (107行)
|
|||
|
- 状态: 存根版本
|
|||
|
- 优先级: 中
|
|||
|
|
|||
|
## 🚀 使用方法
|
|||
|
|
|||
|
### 1. 导入包
|
|||
|
```python
|
|||
|
import blenderpython
|
|||
|
|
|||
|
# 检查版本
|
|||
|
print(blenderpython.get_version())
|
|||
|
|
|||
|
# 检查依赖
|
|||
|
deps = blenderpython.check_dependencies()
|
|||
|
print(deps)
|
|||
|
```
|
|||
|
|
|||
|
### 2. 使用已翻译的模块
|
|||
|
```python
|
|||
|
# 使用常量
|
|||
|
from blenderpython.suw_constants import SUWood
|
|||
|
print(SUWood.SUSceneNew)
|
|||
|
|
|||
|
# 使用客户端
|
|||
|
from blenderpython.suw_client import get_client, start_command_processor
|
|||
|
client = get_client()
|
|||
|
start_command_processor()
|
|||
|
|
|||
|
# 使用观察者
|
|||
|
from blenderpython.suw_observer import register_observers
|
|||
|
register_observers()
|
|||
|
```
|
|||
|
|
|||
|
### 3. 测试功能
|
|||
|
```python
|
|||
|
# 运行模块加载测试
|
|||
|
python -m blenderpython.suw_load
|
|||
|
|
|||
|
# 运行客户端测试
|
|||
|
python -m blenderpython.suw_client
|
|||
|
|
|||
|
# 运行观察者测试
|
|||
|
python -m blenderpython.suw_observer
|
|||
|
```
|
|||
|
|
|||
|
## 🔧 开发指南
|
|||
|
|
|||
|
### 翻译原则
|
|||
|
1. **保持功能等价**: Python版本应实现与Ruby版本相同的功能
|
|||
|
2. **适配Blender**: 将SketchUp API调用转换为Blender API
|
|||
|
3. **类型安全**: 使用Python类型提示提高代码质量
|
|||
|
4. **错误处理**: 添加适当的异常处理
|
|||
|
5. **文档完整**: 每个函数都应有清楚的文档字符串
|
|||
|
|
|||
|
### 代码风格
|
|||
|
- 使用Python PEP 8代码风格
|
|||
|
- 函数名使用snake_case
|
|||
|
- 类名使用PascalCase
|
|||
|
- 常量使用UPPER_CASE
|
|||
|
- 添加类型提示
|
|||
|
|
|||
|
### 测试要求
|
|||
|
- 每个模块都应该可以独立运行测试
|
|||
|
- 主要功能应该有单元测试
|
|||
|
- 与Blender API的集成应该有集成测试
|
|||
|
|
|||
|
## 📚 原Ruby文件信息
|
|||
|
|
|||
|
| 文件名 | 行数 | 大小 | 主要功能 |
|
|||
|
|--------|------|------|----------|
|
|||
|
| SUWLoad.rb | 13 | 362B | 模块加载 |
|
|||
|
| SUWConstants.rb | 306 | 8.8KB | 常量定义 |
|
|||
|
| SUWClient.rb | 118 | 2.8KB | 网络通信 |
|
|||
|
| SUWObserver.rb | 87 | 2.8KB | 事件观察 |
|
|||
|
| SUWImpl.rb | 2019 | 70KB | **核心实现** |
|
|||
|
| SUWMenu.rb | 71 | 2.4KB | 菜单系统 |
|
|||
|
| SUWUnitPointTool.rb | 129 | 3.9KB | 点工具 |
|
|||
|
| SUWUnitFaceTool.rb | 146 | 4.6KB | 面工具 |
|
|||
|
| SUWUnitContTool.rb | 137 | 4.2KB | 轮廓工具 |
|
|||
|
| SUWZoneDiv1Tool.rb | 107 | 3.1KB | 区域分割 |
|
|||
|
|
|||
|
## 🎯 下一步计划
|
|||
|
|
|||
|
1. **优先翻译 SUWImpl.rb** (2019行)
|
|||
|
- 这是最核心的文件,包含主要业务逻辑
|
|||
|
- 分阶段翻译,先翻译关键方法
|
|||
|
|
|||
|
2. **完善工具类**
|
|||
|
- 翻译各种工具类的完整功能
|
|||
|
- 适配Blender的工具系统
|
|||
|
|
|||
|
3. **集成测试**
|
|||
|
- 在Blender环境中测试完整功能
|
|||
|
- 修复兼容性问题
|
|||
|
|
|||
|
4. **文档完善**
|
|||
|
- 添加API文档
|
|||
|
- 创建使用示例
|
|||
|
- 编写用户指南
|
|||
|
|
|||
|
## 📞 技术支持
|
|||
|
|
|||
|
如需帮助或有问题,请检查:
|
|||
|
1. 模块导入是否正确
|
|||
|
2. Blender API是否可用
|
|||
|
3. 网络连接是否正常
|
|||
|
4. 依赖项是否满足
|
|||
|
|
|||
|
---
|
|||
|
|
|||
|
**总进度**: 4/10 模块完成 (40%)
|
|||
|
**下一个里程碑**: 完成SUWImpl.rb翻译 (预计+35%进度)
|