suwoodblender/blenderpython/README.md

190 lines
5.3 KiB
Markdown
Raw Normal View History

# 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%进度)