mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-10-22 14:50:59 +00:00
Belt: follow-ups from a second review pass
Guard the layer count and the per-object layer collection against an object that is left without a layer to print on a belt (the counting loop stepped before begin() and front() was taken of an empty vector). Check the belt temperature tower's embossed model before the current project is replaced, not after. Only invalidate the support step of objects that own a belt brim when an object is added or removed. The empty-layers test now counts an extrusion only where material is laid down along a move. The BeltBrim.cpp SEQUENCING note says exactly which layers are read, and the machine-frame scale is 1/|sin|. Remove more code that nothing calls: the kinematics inverse (to_logical, apply_axis_remap_inverse, to_build_volume and the state kept for them), the world_coordinates(), is_active() and belt_brim_areas_by_layer() accessors, the PrintConfig overload of physical_tilt() and the DynamicPrintConfig overload of compute_belt_height_and_floor(). Comments in GCode.hpp, BeltSliceStrategy.hpp/.cpp and PrintObjectSlice.cpp that described the retired pre-slice remap and plane-evaluator still did; the purge-tower width tooltip named the wrong switch. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
1 parent
a564ec23fe
commit
cfad587c2d
19 files changed
+83
-186
No files matched your search
@@ -10,12 +10,8 @@ namespace Slic3r {
|
||||
BeltKinematics::BeltKinematics(const PrintConfig &config, bool world_coordinates)
|
||||
: m_world_coordinates(world_coordinates)
|
||||
{
|
||||
m_back_active = m_back_transform.init_from_config(config);
|
||||
m_back_transform.init_from_config(config);
|
||||
m_machine_frame.init_from_config(config);
|
||||
if (m_back_active)
|
||||
// BeltBackTransform stores the inverse of this; keep the forward so
|
||||
// to_logical() can reverse the whole chain.
|
||||
m_back_forward = BeltTransformPipeline::build_forward_transform(config);
|
||||
}
|
||||
|
||||
Vec3d BeltKinematics::to_machine(const Vec3d &p) const
|
||||
@@ -25,15 +21,6 @@ Vec3d BeltKinematics::to_machine(const Vec3d &p) const
|
||||
return m_machine_frame.apply(after_remap);
|
||||
}
|
||||
|
||||
Vec3d BeltKinematics::to_logical(const Vec3d &machine) const
|
||||
{
|
||||
const Vec3d before_frame = m_machine_frame.apply_inverse(machine);
|
||||
const Vec3d before_remap = this->apply_axis_remap_inverse(before_frame);
|
||||
if (m_world_coordinates || ! m_back_active)
|
||||
return before_remap;
|
||||
return m_back_forward * before_remap;
|
||||
}
|
||||
|
||||
void install_belt_kinematics(GCodeWriter &writer, const PrintConfig &config, bool world_coordinates)
|
||||
{
|
||||
writer.set_kinematics(std::make_unique<BeltKinematics>(config, world_coordinates));
|
||||
|
||||
Reference in new issue
Block a user