mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-07-16 07:22:10 +00:00
belt: replace height-check skip with a belt-correct vertical-clearance check
The original PR skipped the max-print-height check entirely on belt printers because the sliced (virtual) Z is belt travel, not build height. As the reviewer noted, that removed the only working height guard. Restore a correct guard: - Print::validate: on belt printers, compare the upright object height (max over instances of the scene-space bbox) against printable_height directly. printable_height is the usable VERTICAL clearance above the belt: the gantry travels up the tilted plane (reach = height/cos(tilt)) and its axis range is sized for that (IR3 V2: ~354 mm gantry travel = 250 mm vertical at 45deg, and printable_height = 250). Hardware-confirmed 250 mm vertical clearance, so no cos(tilt) factor is applied. - BuildVolume::set_belt_printer: drop the diagonal Z scaling; the build-volume Z already equals printable_height, keeping the live 'outside build volume' highlight in agreement with validate(). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -193,12 +193,11 @@ void BuildVolume::set_belt_printer(bool enabled, double angle_deg, bool infinite
|
||||
// Extend the Y bound to a very large value for infinite belt.
|
||||
m_bboxf.max.y() = 100000.;
|
||||
}
|
||||
// Adjust max print height to diagonal reach: printable_height / sin(belt_angle).
|
||||
if (angle_deg > 0. && angle_deg < 90.) {
|
||||
double sin_a = std::sin(angle_deg * M_PI / 180.0);
|
||||
if (sin_a > 0.)
|
||||
m_bboxf.max.z() = m_max_print_height / sin_a;
|
||||
}
|
||||
// Belt printer: the Z extent already equals printable_height (set above), which
|
||||
// is the usable vertical clearance above the belt. The gantry's axis range is
|
||||
// sized to reach height/cos(tilt), so no diagonal scaling is applied here — this
|
||||
// keeps the live "outside build volume" highlight in agreement with Print::validate().
|
||||
(void) angle_deg;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user