mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-07-26 12:22:32 +00:00
Refactor skirt/brim + bugfixes related to them (#14333)
Refactor skirt and brim ownership and emission flow Refactor skirt and brim generation around a common object/group ownership model. Skirts and brims are now emitted as a coordinated preamble (skirt -> brim -> object) instead of being generated and emitted through multiple independent code paths. Changes: - Fix repeated skirt emission caused by the previous skirt state tracking logic. - Restore local skirt/brim ordering for per-object skirts in By Layer mode. - Emit brims together with their owning object or object group. - Handle combined brims independently from skirt grouping. - Handle draft shields through the same ownership model as skirts. - Fix draft shield generation when skirt height is zero. - Generate draft shields after brim geometry is known, preventing draft shields from overlapping brims. - Reject unsafe grouped per-object skirt configurations in By Object mode. - Remove legacy skirt emission paths and state-management workarounds. Support brim generation remains unchanged. Co-authored-by: SoftFever <softfeverever@gmail.com>
This commit is contained in:
@@ -343,7 +343,16 @@ private:
|
||||
const float skirt_start_angle,
|
||||
const LayerTools &layer_tools,
|
||||
const Layer& layer,
|
||||
unsigned int extruder_id,
|
||||
std::vector<coordf_t> &skirt_done);
|
||||
std::string generate_object_skirt_group(const Print &print,
|
||||
const PrintObject &object,
|
||||
const LayerTools &layer_tools,
|
||||
const Layer& layer,
|
||||
unsigned int extruder_id);
|
||||
std::string generate_object_brim(const Print &print,
|
||||
const PrintObject &object,
|
||||
bool first_layer);
|
||||
|
||||
LayerResult process_layer(
|
||||
const Print &print,
|
||||
@@ -609,8 +618,8 @@ private:
|
||||
|
||||
std::unique_ptr<SmallAreaInfillFlowCompensator> m_small_area_infill_flow_compensator;
|
||||
|
||||
// Heights (print_z) at which the skirt has already been extruded.
|
||||
std::vector<coordf_t> m_skirt_done;
|
||||
// Heights (print_z) at which each grouped skirt has already been extruded.
|
||||
std::vector<std::vector<coordf_t>> m_skirt_group_done;
|
||||
// Has the brim been extruded already? Brim is being extruded only for the first object of a multi-object print.
|
||||
bool m_brim_done;
|
||||
// Flag indicating whether the nozzle temperature changes from 1st to 2nd layer were performed.
|
||||
|
||||
Reference in New Issue
Block a user