Add belt printer transform pipeline: slicing rotation, G-code coords, preview

- Implement core belt slicing pipeline: R(-alpha, X) mesh rotation in PrintObjectSlice with corrected object height calculation for proper layer count
Add to_machine_coords() in GCodeWriter to convert slicing-frame coordinates back to machine-frame, propagated through GCode,
GCodeProcessor, and GCodeViewer
Add belt-mode UI: tilted bed visualization, slicing-direction arrow, and raw G-code toggle to switch between machine-frame and slicing-frame views

This is a combination of 6 commits.

checkpoint 1: initial MVP.  Slicing functions, but rotates instead of skews are happening and a lot of other stuff too

getting somewhere, getting to the point where I need to figure out how to verify this stuff

this appears to be a dead end.

getting somewhere I think maybe

I'm pretty sure we've completely lost the plot at this point and need to restart this process...

remove slice logic in preparation for new, more invasive plan
This commit is contained in:
harrierpigeon
2026-03-11 03:58:52 -05:00
parent a7441c7f48
commit c808653565
22 changed files with 375 additions and 31 deletions

View File

@@ -3391,7 +3391,9 @@ void PrintObject::update_slicing_parameters()
{
// Orca: updated function call for XYZ shrinkage compensation
if (!m_slicing_params.valid) {
m_slicing_params = SlicingParameters::create_from_config(this->print()->config(), m_config, this->model_object()->max_z(),
coordf_t object_height = this->model_object()->max_z();
// Belt printer: height adjustment placeholder (to be implemented in next cycle).
m_slicing_params = SlicingParameters::create_from_config(this->print()->config(), m_config, object_height,
this->object_extruders(), this->print()->shrinkage_compensation());
}
}
@@ -3432,6 +3434,7 @@ SlicingParameters PrintObject::slicing_parameters(const DynamicPrintConfig &full
if (object_max_z <= 0.f)
object_max_z = (float)model_object.raw_bounding_box().size().z();
// Belt printer: height adjustment placeholder (to be implemented in next cycle).
return SlicingParameters::create_from_config(print_config, object_config, object_max_z, object_extruders, object_shrinkage_compensation);
}