https://github.com/user-attachments/assets/turntable-preview
💡 解决什么问题
AI 文生 3D(Lux3D 等)产出的模型看似精美,直接送 FDM 打印机却常常翻车:
| 痛点 | 后果 | PrintGuard_Aholo 的处理 |
|---|---|---|
| 不水密(壳汤/破面) | 切片直接失败 | 体素重构,输出恒为水密实体 |
| 悬垂超 45° | 拉丝、坍塌、报废 | 悬垂三分类(真悬空/桥接/贴床),区分真问题与误报 |
| 壁厚过薄 | 一掰就碎 | 中轴 EDT 壁厚检测 + 闭环增厚修复 |
| 朝向随意 | 支撑爆炸 | 自动摆向(悬垂最小化) |
修复完成后交付可直接切片的 3MF,并附一张人类可读的「缺陷着色诊断图」—— 灰色=正常 · 蓝色=贴床 · 红色=悬垂 · ◆=最薄壁位置,配中文指标与修复步骤说明。
🚀 30 秒接入(MCP)
在任意 MCP 客户端(Claude Desktop / Cursor / OpenCode / 魔搭 MCP 实验场…)配置中添加:
{
"mcpServers": {
"PrintGuard_Aholo": {
"command": "uvx",
"args": ["printguard-aholo@latest"],
"env": {
"AHOLO_API_KEY": ""
}
}
}
}
- 首次调用自动从 PyPI 安装(需先安装
uv:
curl -LsSf https://astral.sh/uv/install.sh | sh) AHOLO_API_KEY可留空:检测/修复已有模型完全不需要 key;仅生成新模型需要 (免费申请),也可在每次工具调用的api_key参数中提供- 接入后对 Agent 说:"帮我做一个能打印的手机支架,高 10 厘米"
☁️ 免安装形态:本服务已上架 魔搭 MCP 广场(hosted), 由魔搭 MCP 部署服务的平台算力托管运行,社区用户无需安装任何环境。 另有网页 Demo(创空间)正在改造中,见下方部署形态。
🧰 工具一览
| 工具 | 功能 | 关键参数 |
|---|---|---|
lux3d_concept_image |
概念图:按描述生成概念设计图,与用户迭代确认后再进入 3D 生成 | prompt / reference_image / api_key |
lux3d_four_view |
四视图:前三视图 45°/对侧/侧/背——生成 3D 前锁定外观细节 | prompt / reference_image / api_key |
printguard_start_job |
提交任务(立即返回 job_id):概念图/多视角图生 3D 或文生 3D → 体检 → 修复 → 交付;也支持修复已有模型 | prompt / concept_image_url / four_view_urls / file_or_url / height_mm / quality / api_key |
printguard_check_job |
轮询任务状态,完成后返回报告与产物 | job_id |
printguard_analyze_printability |
只体检不修复:水密性、悬垂、壁厚、间隙、风险评分 | file_or_url / height_mm |
推荐工作流:概念先行
用户描述 ──▶ lux3d_concept_image ──▶ 用户看到概念图
▲ │
└── 不满意?新想法重新生成 ┘
│ 满意
▼
(可选)lux3d_four_view 锁定四视图
│
▼
printguard_start_job(concept_image_url / four_view_urls)
│
▼ 体检 ── ▼ 修复 ── ▼ 摆向 ── ▼ 交付 3MF + GIF + 报告
概念图先行的价值:图片迭代的成本远低于 3D 生成,用户在昂贵的生成步骤前锁定设计。 实测:概念图 ~47s,G1-Turbo 图生 3D ~15s。
两档质量自动适配:fast(G1-Turbo + 100k 面,结构件,端到端 ~2 分钟)/
fine(G1 + 300k 面 + 0.3mm 细体素,手办细节件,~10 分钟)。
📦 交付物
| 产物 | 说明 |
|---|---|
printable.3mf / printable.stl |
修复后可直接切片打印的模型——格式自选(工具参数 fmt) |
render.png |
最终模型的干净渲染图(无诊断标注,产品观感) |
turntable.gif |
360° 旋转预览(对话内直接查看) |
report.md |
诊断报告(独立 Markdown:检测对比表、薄弱区明细、修复步骤、建议) |
| 概念图 | 概念先行工作流中 Lux3D 生成的概念图/四视图(随任务一并交付) |
| 诊断报告图 | 缺陷着色 3D + 中文指标(内部诊断件,供 Agent 看图讲解,非交付承诺) |
本地 stdio 形态以绝对路径交付;云端/托管形态以 HMAC 签名限时下载链接交付(防篡改、可过期)。
📊 实测数据
| 场景 | 结果 |
|---|---|
| 内核自测 | 8/8 用例通过,实心体积命中几何精确值(如 15³ 立方 → 3375.0 mm³) |
| 130mm / 30 万面手办修复 | 峰值内存 10.3GB → 6.2GB(-40%),risk D→B,壁厚 1.35mm pass |
| 云端 2vCPU/8GB 完整修复 | 4.5 分钟端到端(下载→分析→重构→增厚→交付) |
| 托管沙箱匿名分析 | 30 万面模型 4 秒出报告 |
| 大面片重载(80mm 单面片) | 修复后壁厚 80.2mm 判定 pass |
🏗️ 技术内核
针对「AI 生成件 = 稀疏拓扑 + 非水密 + 长条面片」这一恶劣输入专门设计:
- 采样体素化:以面积加权的表面采样替代 trimesh 细分式体素化,内存与三角面尺寸 彻底解耦——稀疏网格上一个横跨模型的长三角形不再引发千万级子面爆炸 (实测 130mm/30 万面件从 >7GB OOM 降至 6.2GB 完整修复)
- 棱边采样 + 三明治实心化:面内采样封不住网格棱边接缝,贴边薄洞在经典 closing 下数学上不可封——改用「膨胀 → fill_holes → 腐蚀」,薄壳安全且体积精确
- 中轴 EDT 壁厚:距离变换 → 局部极大(中轴)→
T = 2D − pitch量化补偿, fail/warn/pass 三级判定自带亚分辨率保护带 - 悬垂三分类:沿重力方向体素下探 10mm,区分真悬空(需支撑)/ 桥接(两层之间)/ 贴材料(下方连续),避免「叠放件全是悬垂」的误报
- 闭环壁厚修复:探测 fail 中轴 → 定向膨胀 → 复检收敛,设膨胀预算上限, 超限如实报告「发丝级细节建议重设计」而非静默糊死
- 自动摆向:以悬垂面积最小化为目标旋转摆放,先于一切检测执行
🌐 部署形态
| 形态 | 算力 | 产物交付 | 适合 |
|---|---|---|---|
| 魔搭 MCP 广场(hosted) | 魔搭 MCP 部署服务(平台免费资源池) | 报告内联;文件交付迭代中 | 免安装体验、广场用户 |
| 本地 stdio(上方配置) | 你自己的机器 | 本地绝对路径 | 桌面 Agent、产物直接进切片器 |
| 创空间 Demo(改造中) | 调用上述 hosted 服务 | 与 Agent 用户完全一致 | 网页用户,无需知道 MCP 的存在 |
架构说明:MCP 服务本体运行于魔搭 MCP 部署服务的平台算力;创空间定位为产品 Demo—— 作为 MCP 的调用方提供网页交互,与服务运行解耦。
🔍 质量保障
python printguard.py selftest:8 个合成用例(补洞/双球/悬垂/薄板/立方/堆叠 + GLB 往返 + 大面片重载),覆盖检测、修复、交付全链路- GitHub Actions 持续执行上述自测(见
.github/workflows/ci.yml) - 版本化发布:PyPI ·
@latest永远指向最新
🗺️ Roadmap
- 托管实例产物直传对象存储(修复 hosted 模式文件交付)
- 内存二阶段优化(6.2GB → 4GB,EDT float32 化与分块 EDT)
- 图生 3D 深度整合(多图参考)
- 切片参数建议(层高/支撑密度按模型特征推荐)
- 多语言 README
📖 文档
- PrintGuard_Aholo.md —— 技术方案与设计决策(Lux3D 接入、算法选型、工程约束)
- docs/deploy-modelscope.md —— 魔搭创空间部署指南
- mcp_server.py —— MCP 服务实现(stdio / streamable-http 双传输)
📄 License
MIT © PrintGuard_Aholo contributors
Metadata
Release files for PrintGuard_Aholo 0.7.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| printguard_aholo-0.7.0.tar.gz | 41.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| printguard_aholo-0.7.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 86.9 kB
Release files / printguard_aholo-0.7.0.tar.gz
| Download URL | printguard_aholo-0.7.0.tar.gz |
|---|---|
| Size | 41.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ad6b940ec9b44ecae90e24dd78332605f16d0c5edb6c0cc03e417dd03417c2ec
|
|
BLAKE2b-256 checksum How to use checksums |
bbe31375d25652d9d9473444023cb38f457a48fc2d3cd667434966db50498e9f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / printguard_aholo-0.7.0-py3-none-any.whl
| Download URL | printguard_aholo-0.7.0-py3-none-any.whl |
|---|---|
| Size | 45.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
66717629851798b5edb4754b24e0db49ced552cd6734e8c68cdfb33d6d38157b
|
|
BLAKE2b-256 checksum How to use checksums |
88183264b9a6d4ea38f833bbe0c611c17aa0a5759edb4972494a1fdc6f6516b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for PrintGuard_Aholo 0.7.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.