mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-08-07 18:17:44 +00:00
Fix: correct axis-remap G-code emission and belt first-layer travel speed (B2, B3)
- BeltGCodeWriter::travel_to_xyz final branch used config.travel_speed instead of the computed first-layer-aware travel_speed. - extrude_to_xyz decided emit_xyz vs emit_xy from pre-remap Z; emit full XYZ whenever an axis remap is active so remapped machine-Z is never dropped. - base travel_to_xyz now applies apply_axis_remap() on all emitted destinations (standalone remap on non-belt printers was unremapped). - spiral/arc travels fall back to normal linear lift under active remap (endpoint-only remap can't preserve arc plane/I-J). - set_axis_remap() is now synced unconditionally each export to avoid a reused writer retaining a stale non-identity mapping.
This commit is contained in:
@@ -2952,16 +2952,18 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
|
||||
this->init_belt_writer(print, is_bbl_printers);
|
||||
|
||||
// Standalone axis remap (works with or without belt mode).
|
||||
// Sync the writer's remap state to the current export UNCONDITIONALLY — even at
|
||||
// the identity mapping (0,1,2) — so a reused writer never retains a stale
|
||||
// non-identity mapping from a prior export. has_axis_remap() returns false at
|
||||
// identity, so identity/default output stays unchanged.
|
||||
{
|
||||
int rx = int(print.config().gcode_remap_x.value);
|
||||
int ry = int(print.config().gcode_remap_y.value);
|
||||
int rz = int(print.config().gcode_remap_z.value);
|
||||
if (rx != 0 || ry != 1 || rz != 2) {
|
||||
m_writer->set_axis_remap(rx, ry, rz);
|
||||
BoundingBoxf bbox_bed(print.config().printable_area.values);
|
||||
m_writer->set_build_volume_max(Vec3d(bbox_bed.max.x(), bbox_bed.max.y(),
|
||||
print.config().printable_height.value));
|
||||
}
|
||||
m_writer->set_axis_remap(rx, ry, rz);
|
||||
BoundingBoxf bbox_bed(print.config().printable_area.values);
|
||||
m_writer->set_build_volume_max(Vec3d(bbox_bed.max.x(), bbox_bed.max.y(),
|
||||
print.config().printable_height.value));
|
||||
}
|
||||
|
||||
// Build the FirstLayerPlane evaluator. When inactive (non-belt printers
|
||||
|
||||
Reference in New Issue
Block a user