Go to file
sladro ba45b855c6 feat: 添加可执行文件打包支持
- 新增CLI工具打包脚本build_exe.py,生成stp2glb.exe
- 新增Web服务打包脚本build_web_exe.py,生成stp2glb-server.exe
- 新增PyInstaller配置文件build.spec
- 更新CLAUDE.md文档添加exe打包使用说明
- 支持完全独立部署,无需Python环境

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-10 10:18:48 +08:00
__pycache__ feat: 重构转换系统,默认启用层级转换和组件名称保留 2025-08-15 10:25:14 +08:00
.claude feat: 实现基于XCAF的真正装配结构保留转换 2025-09-09 16:50:48 +08:00
api feat: 实现基于XCAF的真正装配结构保留转换 2025-09-09 16:50:48 +08:00
core feat: 实现XCAF转换器性能优化 2025-09-10 09:03:46 +08:00
model-2/model-2 优化STP到GLB转换工具 2025-08-02 09:26:39 +08:00
services feat: 实现基于XCAF的真正装配结构保留转换 2025-09-09 16:50:48 +08:00
tests feat: 实现基于XCAF的真正装配结构保留转换 2025-09-09 16:50:48 +08:00
utils feat: 实现基于XCAF的真正装配结构保留转换 2025-09-09 16:50:48 +08:00
app.py feat: 重构转换系统,默认启用层级转换和组件名称保留 2025-08-15 10:25:14 +08:00
build_exe.py feat: 添加可执行文件打包支持 2025-09-10 10:18:48 +08:00
build_web_exe.py feat: 添加可执行文件打包支持 2025-09-10 10:18:48 +08:00
build.spec feat: 添加可执行文件打包支持 2025-09-10 10:18:48 +08:00
CLAUDE.md feat: 添加可执行文件打包支持 2025-09-10 10:18:48 +08:00
CX0856_CS11P.stp feat: 重构转换系统,默认启用层级转换和组件名称保留 2025-08-15 10:25:14 +08:00
CX0856_CS12P.stp chore: 清理测试文件和输出文件,更新Python缓存 2025-08-19 16:06:46 +08:00
CX0856_CS13P.stp feat: 重构转换系统,默认启用层级转换和组件名称保留 2025-08-15 10:25:14 +08:00
main.py feat: 实现XCAF转换器性能优化 2025-09-10 09:03:46 +08:00
overall_top_design_asm.stp feat: 实现基于XCAF的真正装配结构保留转换 2025-09-09 16:50:48 +08:00
README.md feat: 服务化改造STP到GLB转换器 2025-08-02 09:44:43 +08:00
requirements.txt feat: 服务化改造STP到GLB转换器 2025-08-02 09:44:43 +08:00
test3-log.json chore: 清理测试文件和输出文件,更新Python缓存 2025-08-19 16:06:46 +08:00
test-log.json chore: 清理测试文件和输出文件,更新Python缓存 2025-08-19 16:06:46 +08:00
test.glb feat: 实现基于XCAF的真正装配结构保留转换 2025-09-09 16:50:48 +08:00

STP to GLB Converter Service

一个强大的STP到GLB转换服务提供CLI和Web API两种使用方式特别优化了在Blender中的显示效果。

功能特性

  • 双模式支持: CLI命令行工具 + Web API服务
  • 异步处理: 支持并发转换请求,实时进度追踪
  • 格式转换: STP → STL → GLB 完整转换流程
  • 智能缩放: 自动将过大模型缩放到适合3D软件的尺寸
  • 自动居中: 将模型质心移动到原点,便于查看
  • RESTful API: 标准HTTP接口支持跨语言调用
  • 任务管理: 完整的任务生命周期管理和状态追踪
  • 样式兼容: 正确处理STP文件中的样式信息不影响几何转换
  • Blender优化: 生成的GLB文件可直接在Blender中正常显示

系统要求

  • Python 3.7+
  • Windows/Linux/macOS

安装步骤

使用requirements.txt推荐

# 克隆或下载项目
git clone <项目地址>
cd TellmeStpToGlb

# 安装依赖
pip install -r requirements.txt

手动安装依赖

# 安装所有依赖
pip install pythonocc-core trimesh fastapi uvicorn pydantic

方法三使用conda可选

# 创建虚拟环境
conda create -n stp2glb python=3.9
conda activate stp2glb

# 安装pythonocc-core
conda install -c conda-forge pythonocc-core

# 安装trimesh
pip install trimesh

使用方法

CLI模式命令行

python main.py input.stp output.glb

CLI示例

# 转换单个文件
python main.py model.stp model.glb

# 转换测试文件
python main.py test.stp result.glb

API模式Web服务

启动服务

# 开发模式
python app.py

# 或使用uvicorn
uvicorn app:app --host 0.0.0.0 --port 8000 --reload

# 生产模式
uvicorn app:app --host 0.0.0.0 --port 8000 --workers 4

API接口

健康检查

GET http://localhost:8000/health

提交转换任务

POST http://localhost:8000/api/v1/convert
Content-Type: application/json

{
  "input_path": "/path/to/input.stp",
  "output_path": "/path/to/output.glb",
  "options": {
    "auto_scale": true,
    "auto_center": true
  }
}

查询任务状态

GET http://localhost:8000/api/v1/status/{task_id}

获取任务列表

GET http://localhost:8000/api/v1/tasks

API文档

服务启动后可访问:

  • Swagger UI: http://localhost:8000/docs
  • ReDoc: http://localhost:8000/redoc

在Blender中使用

  1. 打开Blender
  2. 删除默认立方体(可选)
  3. 文件 → 导入 → glTF 2.0 (.glb/.gltf)
  4. 选择转换生成的GLB文件
  5. 模型应该在视口中心正常显示

技术细节

转换流程

  1. STP读取: 使用pythonocc-core读取STP文件
  2. STL生成: 转换为高质量STL网格线性偏差0.01
  3. 智能处理: 自动缩放和居中处理
  4. GLB导出: 使用trimesh生成最终GLB文件
  5. 清理: 自动删除临时STL文件

服务化特性

  • 异步处理: 使用asyncio实现并发转换任务
  • 进度追踪: 实时更新转换进度(0-100%)
  • 任务管理: 内存存储任务状态,支持查询和管理
  • RESTful API: 标准HTTP接口支持跨语言调用
  • 错误处理: 完整的异常捕获和错误信息反馈

智能优化

  • 尺寸检测: 自动检测模型最大尺寸
  • 智能缩放: 超过1000单位的模型自动缩放到50单位以内
  • 质心居中: 模型自动移动到坐标原点

故障排除

常见问题

1. 导入错误

ImportError: cannot import name 'xxx' from 'OCC.Core'
  • 解决方案: 确保安装了正确版本的pythonocc-core
  • 使用conda安装: conda install -c conda-forge pythonocc-core

2. 样式警告

OVER_RIDING_STYLED_ITEM warnings
  • 这是正常现象,不影响几何转换
  • 警告信息可以忽略

3. Blender中看不见模型

  • 本工具已自动处理此问题
  • 如仍有问题在Blender中按数字键盘 . 键聚焦到对象

4. 模型太大或太小

  • 工具已内置智能缩放功能
  • 大模型会自动缩放到合适尺寸

依赖问题

如果遇到依赖安装问题:

# 升级pip
pip install --upgrade pip

# 清理缓存重新安装
pip cache purge
pip install -r requirements.txt --no-cache-dir

支持的格式

  • 输入: STP/STEP文件
  • 输出: GLB文件glTF 2.0二进制格式)

性能说明

  • 转换速度取决于模型复杂度
  • 大模型(几万面片)通常需要几秒到几十秒
  • 内存使用量与模型大小成正比

许可证

本项目使用MIT许可证详见LICENSE文件。

贡献

欢迎提交Issue和Pull Request来改进这个工具。

更新日志

v2.0.0

  • 🚀 服务化改造支持Web API
  • 异步处理和并发转换
  • 📊 实时进度追踪
  • 🔧 任务管理系统
  • 📖 自动生成API文档
  • 🔄 保持CLI模式向后兼容

v1.0.0

  • 初始版本发布
  • 支持STP到GLB转换
  • 智能缩放和居中功能
  • Blender显示优化