mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-10-27 10:41:15 -06:00
Splitting FDM support gap to top / bottom, introducing
support_material_bottom_contact_distance
Fixing Crash in support generation after fcb714c (repro attached) #6195
This commit is contained in:
parent
f3f10ff002
commit
73b88e6ce0
11 changed files with 144 additions and 118 deletions
|
|
@ -26,7 +26,7 @@ class DynamicPrintConfig;
|
|||
// (using a normal flow over a soluble support, using a bridging flow over a non-soluble support).
|
||||
struct SlicingParameters
|
||||
{
|
||||
SlicingParameters() { memset(this, 0, sizeof(SlicingParameters)); }
|
||||
SlicingParameters() = default;
|
||||
|
||||
static SlicingParameters create_from_config(
|
||||
const PrintConfig &print_config,
|
||||
|
|
@ -44,58 +44,58 @@ struct SlicingParameters
|
|||
// Height of the object to be printed. This value does not contain the raft height.
|
||||
coordf_t object_print_z_height() const { return object_print_z_max - object_print_z_min; }
|
||||
|
||||
bool valid;
|
||||
bool valid { false };
|
||||
|
||||
// Number of raft layers.
|
||||
size_t base_raft_layers;
|
||||
size_t base_raft_layers { 0 };
|
||||
// Number of interface layers including the contact layer.
|
||||
size_t interface_raft_layers;
|
||||
size_t interface_raft_layers { 0 };
|
||||
|
||||
// Layer heights of the raft (base, interface and a contact layer).
|
||||
coordf_t base_raft_layer_height;
|
||||
coordf_t interface_raft_layer_height;
|
||||
coordf_t contact_raft_layer_height;
|
||||
coordf_t base_raft_layer_height { 0 };
|
||||
coordf_t interface_raft_layer_height { 0 };
|
||||
coordf_t contact_raft_layer_height { 0 };
|
||||
|
||||
// The regular layer height, applied for all but the first layer, if not overridden by layer ranges
|
||||
// or by the variable layer thickness table.
|
||||
coordf_t layer_height;
|
||||
coordf_t layer_height { 0 };
|
||||
// Minimum / maximum layer height, to be used for the automatic adaptive layer height algorithm,
|
||||
// or by an interactive layer height editor.
|
||||
coordf_t min_layer_height;
|
||||
coordf_t max_layer_height;
|
||||
coordf_t max_suport_layer_height;
|
||||
coordf_t min_layer_height { 0 };
|
||||
coordf_t max_layer_height { 0 };
|
||||
coordf_t max_suport_layer_height { 0 };
|
||||
|
||||
// First layer height of the print, this may be used for the first layer of the raft
|
||||
// or for the first layer of the print.
|
||||
coordf_t first_print_layer_height;
|
||||
coordf_t first_print_layer_height { 0 };
|
||||
|
||||
// Thickness of the first layer. This is either the first print layer thickness if printed without a raft,
|
||||
// or a bridging flow thickness if printed over a non-soluble raft,
|
||||
// or a normal layer height if printed over a soluble raft.
|
||||
coordf_t first_object_layer_height;
|
||||
coordf_t first_object_layer_height { 0 };
|
||||
|
||||
// If the object is printed over a non-soluble raft, the first layer may be printed with a briding flow.
|
||||
bool first_object_layer_bridging;
|
||||
bool first_object_layer_bridging { false };
|
||||
|
||||
// Soluble interface? (PLA soluble in water, HIPS soluble in lemonen)
|
||||
// otherwise the interface must be broken off.
|
||||
bool soluble_interface;
|
||||
bool soluble_interface { false };
|
||||
// Gap when placing object over raft.
|
||||
coordf_t gap_raft_object;
|
||||
coordf_t gap_raft_object { 0 };
|
||||
// Gap when placing support over object.
|
||||
coordf_t gap_object_support;
|
||||
coordf_t gap_object_support { 0 };
|
||||
// Gap when placing object over support.
|
||||
coordf_t gap_support_object;
|
||||
coordf_t gap_support_object { 0 };
|
||||
|
||||
// Bottom and top of the printed object.
|
||||
// If printed without a raft, object_print_z_min = 0 and object_print_z_max = object height.
|
||||
// Otherwise object_print_z_min is equal to the raft height.
|
||||
coordf_t raft_base_top_z;
|
||||
coordf_t raft_interface_top_z;
|
||||
coordf_t raft_contact_top_z;
|
||||
coordf_t raft_base_top_z { 0 };
|
||||
coordf_t raft_interface_top_z { 0 };
|
||||
coordf_t raft_contact_top_z { 0 };
|
||||
// In case of a soluble interface, object_print_z_min == raft_contact_top_z, otherwise there is a gap between the raft and the 1st object layer.
|
||||
coordf_t object_print_z_min;
|
||||
coordf_t object_print_z_max;
|
||||
coordf_t object_print_z_min { 0 };
|
||||
coordf_t object_print_z_max { 0 };
|
||||
};
|
||||
static_assert(IsTriviallyCopyable<SlicingParameters>::value, "SlicingParameters class is not POD (and it should be - see constructor).");
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue