周末休闲建造:3D 打印估算器
Source: Dev.to
Introduction
这个项目始于我哥哥的一个简单问题:
“这会使用多少耗材,耗时多久?”
他有大约 100 个单独的 STL 文件需要检查。虽然切片软件可以给出估算,但打开、切片并读取每个文件的统计信息很快就会变得繁琐。
What the 3D Print Estimator Does
一个独立的、与切片软件无关的工具,直接扫描 STL 文件并提供相对准确的以下数据:
- 耗材长度
- 耗材质量
- 打印时间
它可以通过命令行使用,也可以通过轻量级的网页界面使用。
GitHub repository – 3D‑Print‑Estimator
How It Works
Geometry Analysis
估算器能够读取二进制和 ASCII STL 文件,并遍历网格中的每个三角形,更新:
- 体积(通过有符号四面体体积)
- 表面积
- 包围盒尺寸
estimator.py 中的关键函数:
# estimator.py
def read_stl(...):
# parses STL file
...
def accumulate_triangle_stats(...):
# updates bounds, area, volume
...
Material & Time Estimation
几何信息确定后,estimate() 函数会将其转换为可打印材料和时间的估算。
Shell Calculation
shell_thickness = settings.perimeter_count * settings.nozzle_diameter_mm
shell_volume = stats.surface_area_mm2 * shell_thickness
Infill Calculation
internal_volume = max(stats.volume_mm3 - shell_volume, 0.0)
infill_volume = internal_volume * settings.infill_density
Filament Length & Mass
import math
filament_cross_section = math.pi * (settings.filament_diameter_mm / 2) ** 2
filament_length = total_extrusion_volume / filament_cross_section
filament_mass = (total_extrusion_volume / 1000) * settings.filament_density_g_cm3
Print Speeds
使用了三种速度:
perimeter_speed_mm_sinfill_speed_mm_stravel_speed_mm_s
该工具提供的是近似值,而非 G‑code 级别的精确度,但这些启发式方法的效果出奇地好。
Usage
Command‑Line Interface
python estimator.py --config printer-config.json
- 扫描当前文件夹中的所有
.stl文件。 - 默认输出 CSV(可选:JSON、XLSX)。
- XLSX 模式会为总计和小时/分钟格式添加公式(
build_workbook())。
Web Interface
python estimator.py --serve --port 5000
- 打开浏览器。
- 上传单个 STL 或 STL 的 ZIP 包。
- 获得一张整洁的结果表,带有一键下载链接(CSV、JSON、XLSX),这些文件以 data URI 形式生成。
网页 UI 是自包含的,使用 Flask 渲染的 HTML 字符串定义在 WEB_TEMPLATE 中。
Configuration
所有与打印机相关的设置都保存在 printer-config.json 中。示例:
{
"layer_height_mm": 0.2,
"nozzle_diameter_mm": 0.4,
"perimeter_count": 2,
"top_layers": 4,
"bottom_layers": 4,
"infill_density": 0.25,
"perimeter_speed_mm_s": 40.0,
"infill_speed_mm_s": 60.0,
"travel_speed_mm_s": 120.0,
"filament_diameter_mm": 1.75,
"filament_density_g_cm3": 1.24,
"travel_factor": 0.1
}
根据你的打印机、材料或期望的打印偏好调整这些数值;估算器会自动更新。
What It Is Not
- 替代你的切片软件
- 分钟级的打印时间预测器
- 处理可变层高、回抽、滑移、加速或机器特定怪癖的工具
Primary Benefits
- 快速回答“我有足够的耗材吗?”
- 获得打印时长的粗略估计
- 辨别哪些 STL 是周末大项目,哪些是快速打印
Future Improvements
- 为每个模型提供配置覆盖
- 可选的真实世界校准(提供已知模型 + 实际打印时间以调整启发式算法)
- 更加精致的网页 UI
- 批量模式,用于比较不同打印设置的成本
该项目保持足够小巧以保持乐趣,同时提供了大量实验和成长的空间。