estimate_before_design
Estimate 3D print time, cost, and filament usage from dimensions or templates before creating a model. No file or slicing required.
Instructions
Estimate print time, cost, and filament usage BEFORE generating a model.
Works from dimensions alone — no file, no slicing, no generation
needed. Use this to answer "how long will it take?", "how much
will it cost?", and "how much filament?" before committing to a
design.
**Two ways to specify dimensions:**
1. **Direct dimensions** — provide ``width_mm``, ``depth_mm``,
``height_mm`` explicitly.
2. **Template** — provide ``template_id`` (e.g. ``"phone_stand"``,
``"box_with_lid"``) and optional ``template_overrides`` to use
the template's default dimensions.
**Multi-material prints:** Pass comma-separated materials
(e.g. ``"PLA,PLA"`` for two-color) with optional fractions
(e.g. ``"0.85,0.15"`` for body + accent). The tool estimates
per-filament usage and tool change overhead automatically.
Returns time estimate, per-filament weight/length/cost breakdown,
electricity cost, total cost, and tool swap count.
:param width_mm: Part width (X) in mm. Required if no template.
:param depth_mm: Part depth (Y) in mm. Required if no template.
:param height_mm: Part height (Z) in mm. Required if no template.
:param template_id: Design template ID (e.g. ``"phone_stand"``).
Resolves dimensions from template defaults. Overrides
width/depth/height if provided.
:param template_overrides: JSON string of template parameter
overrides (e.g. ``'{"phone_width": 85}'``).
:param materials: Comma-separated material names
(e.g. ``"PLA"`` or ``"PLA,PLA"`` for two-color).
:param material_fractions: Comma-separated volume fractions
(e.g. ``"0.85,0.15"``). Must match materials count and sum
to 1.0. Default: body gets 85%, accents split the rest.
:param material_roles: Comma-separated role labels
(e.g. ``"body,accent"``). Default: auto-generated.
:param infill_percent: Infill density override (0-100).
Default: from printer profile or 20%. Pass ``-1`` for auto.
:param layer_height_mm: Layer height override. ``0`` = auto.
:param nozzle_mm: Nozzle diameter in mm (default 0.4).
:param wall_layers: Number of perimeter shells (default 3).
:param printer_id: Printer model for speed/setting lookup
(e.g. ``"bambu_a1"``, ``"prusa_mk4"``).
:param tool_changer_addon: Optional multi-material add-on ID.
Overrides the printer's built-in tool change timing.
Examples: ``"creality_cfs"`` (K1 series),
``"mosaic_palette3"`` (universal), ``"coprint_kcm"``
(Klipper printers), ``"chameleon_mk4"`` (universal),
``"elegoo_canvas"`` (Centauri Carbon 2).
Use ``list_multi_material_addons`` to see all options.
:param electricity_rate: Cost per kWh in USD (default 0.12).
:param printer_wattage: Printer power in watts (default 200).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| depth_mm | No | ||
| width_mm | No | ||
| height_mm | No | ||
| materials | No | PLA | |
| nozzle_mm | No | ||
| printer_id | No | ||
| template_id | No | ||
| wall_layers | No | ||
| infill_percent | No | ||
| material_roles | No | ||
| layer_height_mm | No | ||
| printer_wattage | No | ||
| electricity_rate | No | ||
| material_fractions | No | ||
| template_overrides | No | ||
| tool_changer_addon | No |