目录

IP Print Web

曦曦 IP 形象 3D 打印直连站。提供两条路径:唤醒经典(直达打印)和 魔法衣橱(DIY 换装生成 3D 模型)。OpenClaw Agent 通过 bambu.py.3mf 文件发送至 Bambu Lab 打印机,monitor_bridge.py 后台监控进度并通过 WebSocket 实时推送前端。

技术栈

技术
后端框架 FastAPI(Python)
实时通信 WebSocket(FastAPI 原生 + websockets 库)
前端 原生 HTML/CSS/JavaScript(多页应用,无框架)
打印机控制 bambu.py(LAN MQTT + FTPS 直连)
Agent 调度 OpenClaw Gateway + Agent
图像资源 曦曦IP/IP换装/ static/xixi_diy/ static/images/

快速开始

# 终端 1: OpenClaw Gateway(端口 18789)
openclaw gateway

# 终端 2: FastAPI(端口 8000)
python -m uvicorn main:app --host 0.0.0.0 --port 8000 --reload

打开 http://localhost:8000

页面路由与流程

唤醒经典(直达打印)

index.html(落地页)
  → select.html(双路枢纽)
    → select_classic.html(从 /api/list-ips 动态加载 IP)
      → preview_classic.html(三视图预览 + 模拟加载)
        → printing_classic.html(真实后端:API + WebSocket + Gateway)
          → finish_classic.html(完成页)

魔法衣橱(DIY 换装)

index.html → select.html
  → customize.html(选择服饰 + 配饰,实时预览合成图)
    → preview_diy.html(3D 模型预览 + 模拟 2D→3D)
      → takeaway.html(数字凭证提取页)

页面一览

模板 路由 路径
index.html / 落地页
select.html /select.html 双路枢纽(经典 / 衣橱)
select_classic.html /select_classic.html 经典 IP 选择(API 动态加载)
preview_classic.html /preview_classic.html 经典三视图预览
printing_classic.html /printing_classic.html 打印执行页(真实后端)
finish_classic.html /finish_classic.html 打印完成
customize.html /customize.html 魔法衣橱换装
preview_diy.html /preview_diy.html DIY 3D 预览
takeaway.html /takeaway.html 数字凭证提取
print.html /print.html (预留)
printing.html /printing.html (预留)
finish.html /finish.html (预留)

项目结构

文件 职责
main.py FastAPI 后端 — REST API + WebSocket 代理 + 任务状态推送 + 页面路由
task_state.py 任务状态持久化(work/{task_id}_state.json
monitor_bridge.py 打印监控 — MQTT 直连轮询,写状态文件,自行设置 done/failed
ips/list.json IP 形象数据(id、name、image、model、desc),前端动态加载
static/gateway.js GatewayChat 类 — WebSocket 连接、RPC 通信、事件分发
static/prompt.js 打印配置常量 + buildPrintPrompt() — 构造发给 Agent 的指令
static/xixi_diy/ 魔法衣橱换装图片(cloth ×10、ornament ×8、合成图 7×7)
static/images/ 猫猫引导图、Logo、经典模型三视图
static/3D/ 预切片 .3mf 模型文件

架构

浏览器
  ├── /ws/gateway ──→ FastAPI 代理 ──→ OpenClaw Gateway (:18789)
  │                                       └──→ Agent 执行流水线
  ├── /ws/task/{id} ←── WebSocket 实时推送 ──→ 轮询 work/{id}_state.json
  │                              ↑
  │              monitor_bridge.py (后台 Start-Process,独立运行)
  │                              ↑
  │           bambu.py print ──→ 打印机 (MQTT + FTPS)
  └── /api/generate → task_state.start_task() → 创建任务

打印流水线

Agent 执行三步(非阻塞):

  1. 发送打印文件bambu.py print <模型> --confirmed
  2. 后台启动监控Start-Process monitor_bridge.py <task_id>(立即返回,不等待)
  3. 确认监控运行set_status("printing")

monitor_bridge.py 在后台独立运行,自行写入状态(progress、done/failed),后端 WebSocket 检测文件变化推送前端。

API

方法 路径 说明
GET / 落地页
GET /api/list-ips IP 形象列表(含 id/name/image/model/desc)
POST /api/generate 创建任务,请求体 {"ip_id"}
GET /api/status/{task_id} 任务状态查询
WS /ws/gateway 浏览器 ↔ Gateway 透明代理
WS /ws/task/{task_id} 任务状态实时推送

环境要求

  • Python ≥ 3.10
  • OpenClaw CLI(Gateway + Agent)
  • bambu-studio-ai skill(bambu.py 打印机控制脚本)
  • 打印机开启 Developer Mode
pip install fastapi uvicorn pydantic websockets bambulabs-api
关于

这是一个openclaw+3D打印的项目,让openclaw使用skill去完成3D打印流程,只需要选择固定的形象就可以体验3D打印。不需要繁琐的建模过程

374.7 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号