--downward-check
Check whether the loaded model's geometry -- and, for sequence prints, nozzle clearance -- fits within a set of downward-compatible machines, writing the passing machine names to result.json without performing a slice.
Details
--downward-check tests whether the geometry of the loaded model can fit on a set of "downward" machines -- typically older, smaller, or simpler variants of the current printer family -- without slicing them. It is a boolean flag; supplying it enables the mode (the default is off).
The companion flag --downward-settings provides the list of machine config JSON files to evaluate. When --downward-settings is omitted, the slicer falls back to a bundled cli_config.json file. The lookup inside that file is hierarchical: it first indexes by the current printer model string, then by the current printer name within that model's downward_check block. If either level of the lookup finds no match, the downward list is empty and no machines are checked. Each config file passed via --downward-settings must carry config_type = "machine" and config_from = "system"; any file that does not meet both conditions aborts the run.
For each candidate machine and each plate, the check reads four spatial fields from the candidate machine config and evaluates the plate's object bounding box against them. printable_area (a polygon of at least four corner points) gives the bed width and depth; printable_height gives the vertical limit. bed_exclude_area marks a region of the bed that cannot be used: the effective printable width and depth are reduced by the dimensions of this zone. An additional 10mm safety margin is subtracted from both the effective width and depth only when all of the following are true simultaneously: the candidate config has a non-zero exclude area, the source machine's config has no exclude area, the print contains support structures, and the source machine's printable width and depth are each greater than the candidate's post-exclusion dimensions. When the source machine has enable_wrapping_detection enabled, wrapping_exclude_area also reduces the effective depth by the wrapping zone's depth. For multi-extruder candidate machines, the check computes the intersection of the bounding boxes of all extruder_printable_area polygons and the minimum of extruder_printable_height across extruders, then evaluates the bounding box against those tighter limits when the source machine is single-extruder.
For plates that use sequence-by-object printing, a nozzle clearance gate is applied before the bounding-box check. extruder_clearance_max_radius, extruder_clearance_height_to_rod, extruder_clearance_height_to_lid, and extruder_clearance_dist_to_rod are read from the candidate config. If any of those four fields is absent or zero, the candidate machine is immediately marked incompatible for that plate and the bounding-box check is skipped. If all four fields are present and the candidate's clearance constraints are at least as permissive as the source machine's, the standard bounding-box, exclude-area, and wrapping checks still proceed normally for that plate.
Results are written to result.json in the output directory. Machines that pass all plate checks appear in downward_compatible_machine as an array of config name strings. Any machine that fails is also pruned from upward_compatible_machine if it appeared there, creating a consistent cross-check. If any plate uses sequence-by-object printing, "PrintSequenceByObject" is appended to upward_compatibility_taint regardless of downward results. The flag also suppresses the GUI launch that normally occurs when no other action is specified, so it can be used as a standalone geometry probe without triggering a slice.
Watch out for
- ▲ Each file in `--downward-settings` must be a system machine profile (`config_type = "machine"` and `config_from = "system"`). Passing a user-customized machine config aborts the run rather than silently skipping it.
- ▲ When `--downward-settings` is omitted, the fallback `cli_config.json` lookup is a two-level nested lookup: first by printer model string, then by the exact printer name within that model's `downward_check` block. If either level fails to match, the downward list is empty and no machines are checked.
- ▲ For sequence-print plates, the clearance gate runs before the size check. If any one of the four clearance fields (`extruder_clearance_max_radius`, `extruder_clearance_height_to_rod`, `extruder_clearance_height_to_lid`, `extruder_clearance_dist_to_rod`) is absent or zero in the candidate config, that machine is immediately marked incompatible -- but if all four are present and the clearance gate passes, the standard bounding-box checks still run.
Sign up for free today
No credit card required. Connect unlimited printers and get production automation running in minutes.