mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-06 22:47:32 -06:00
Fix skirt start angle per object (#7374)
This commit is contained in:
parent
6d467c8f16
commit
e2e06e5e89
2 changed files with 7 additions and 4 deletions
|
@ -3515,6 +3515,7 @@ inline std::string get_instance_name(const PrintObject *object, const PrintInsta
|
||||||
std::string GCode::generate_skirt(const Print &print,
|
std::string GCode::generate_skirt(const Print &print,
|
||||||
const ExtrusionEntityCollection &skirt,
|
const ExtrusionEntityCollection &skirt,
|
||||||
const Point& offset,
|
const Point& offset,
|
||||||
|
const float skirt_start_angle,
|
||||||
const LayerTools &layer_tools,
|
const LayerTools &layer_tools,
|
||||||
const Layer& layer,
|
const Layer& layer,
|
||||||
unsigned int extruder_id)
|
unsigned int extruder_id)
|
||||||
|
@ -3559,7 +3560,7 @@ std::string GCode::generate_skirt(const Print &print,
|
||||||
//FIXME using the support_speed of the 1st object printed.
|
//FIXME using the support_speed of the 1st object printed.
|
||||||
if (first_layer && i==loops.first) {
|
if (first_layer && i==loops.first) {
|
||||||
//set skirt start point location
|
//set skirt start point location
|
||||||
const Point desired_start_point = Skirt::find_start_point(loop, layer.object()->config().skirt_start_angle);
|
const Point desired_start_point = Skirt::find_start_point(loop, skirt_start_angle);
|
||||||
gcode += this->extrude_loop(loop, "skirt", m_config.support_speed.value, {}, &desired_start_point);
|
gcode += this->extrude_loop(loop, "skirt", m_config.support_speed.value, {}, &desired_start_point);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -4156,7 +4157,8 @@ LayerResult GCode::process_layer(
|
||||||
m_last_processor_extrusion_role = erWipeTower;
|
m_last_processor_extrusion_role = erWipeTower;
|
||||||
|
|
||||||
if (print.config().skirt_type == stCombined && !print.skirt().empty())
|
if (print.config().skirt_type == stCombined && !print.skirt().empty())
|
||||||
gcode += generate_skirt(print, print.skirt(), Point(0,0), layer_tools, layer, extruder_id);
|
gcode += generate_skirt(print, print.skirt(), Point(0, 0), layer.object()->config().skirt_start_angle, layer_tools, layer,
|
||||||
|
extruder_id);
|
||||||
|
|
||||||
auto objects_by_extruder_it = by_extruder.find(extruder_id);
|
auto objects_by_extruder_it = by_extruder.find(extruder_id);
|
||||||
if (objects_by_extruder_it == by_extruder.end())
|
if (objects_by_extruder_it == by_extruder.end())
|
||||||
|
@ -4216,7 +4218,7 @@ LayerResult GCode::process_layer(
|
||||||
m_skirt_done.erase(m_skirt_done.begin()+1,m_skirt_done.end());
|
m_skirt_done.erase(m_skirt_done.begin()+1,m_skirt_done.end());
|
||||||
|
|
||||||
const Point& offset = instance_to_print.print_object.instances()[instance_to_print.instance_id].shift;
|
const Point& offset = instance_to_print.print_object.instances()[instance_to_print.instance_id].shift;
|
||||||
gcode += generate_skirt(print, instance_to_print.print_object.object_skirt(), offset, layer_tools, layer, extruder_id);
|
gcode += generate_skirt(print, instance_to_print.print_object.object_skirt(), offset, instance_to_print.print_object.config().skirt_start_angle, layer_tools, layer, extruder_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4236,7 +4238,7 @@ LayerResult GCode::process_layer(
|
||||||
if (first_layer)
|
if (first_layer)
|
||||||
m_skirt_done.clear();
|
m_skirt_done.clear();
|
||||||
const Point& offset = instance_to_print.print_object.instances()[instance_to_print.instance_id].shift;
|
const Point& offset = instance_to_print.print_object.instances()[instance_to_print.instance_id].shift;
|
||||||
gcode += generate_skirt(print, instance_to_print.print_object.object_skirt(), offset, layer_tools, layer, extruder_id);
|
gcode += generate_skirt(print, instance_to_print.print_object.object_skirt(), offset, instance_to_print.print_object.config().skirt_start_angle, layer_tools, layer, extruder_id);
|
||||||
if (instances_to_print.size() > 1 && &instance_to_print != &*(instances_to_print.end() - 1))
|
if (instances_to_print.size() > 1 && &instance_to_print != &*(instances_to_print.end() - 1))
|
||||||
m_skirt_done.pop_back();
|
m_skirt_done.pop_back();
|
||||||
}
|
}
|
||||||
|
|
|
@ -311,6 +311,7 @@ private:
|
||||||
std::string generate_skirt(const Print &print,
|
std::string generate_skirt(const Print &print,
|
||||||
const ExtrusionEntityCollection &skirt,
|
const ExtrusionEntityCollection &skirt,
|
||||||
const Point& offset,
|
const Point& offset,
|
||||||
|
const float skirt_start_angle,
|
||||||
const LayerTools &layer_tools,
|
const LayerTools &layer_tools,
|
||||||
const Layer& layer,
|
const Layer& layer,
|
||||||
unsigned int extruder_id);
|
unsigned int extruder_id);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue