周末休闲建造:3D 打印估算器

发布: (2025年12月8日 GMT+8 12:27)
4 min read
原文: Dev.to

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

使用了三种速度:

  • perimeter_speed_mm_s
  • infill_speed_mm_s
  • travel_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
  • 批量模式,用于比较不同打印设置的成本

该项目保持足够小巧以保持乐趣,同时提供了大量实验和成长的空间。

Back to Blog

相关文章

阅读更多 »

寻找可贡献的开源项目

寻找可以贡献的开源项目通常比人们说的要困难。大多数文章给出的都是相同的标准建议——搜索 “good first issue” …