Fix of "no support generated" https://github.com/prusa3d/Slic3r/issues/114
when a first layer height was set in percents.
This commit is contained in:
parent
61f9414b09
commit
8d6acd2aec
@ -655,7 +655,7 @@ Print::validate() const
|
|||||||
// are of the same diameter.
|
// are of the same diameter.
|
||||||
if (nozzle_diameters.size() > 1)
|
if (nozzle_diameters.size() > 1)
|
||||||
return "Printing with multiple extruders of differing nozzle diameters. "
|
return "Printing with multiple extruders of differing nozzle diameters. "
|
||||||
"If support is to be printed with the current extruder (support_material_extruder == 0 or support_material_interface_extruder == 0), ",
|
"If support is to be printed with the current extruder (support_material_extruder == 0 or support_material_interface_extruder == 0), "
|
||||||
"all nozzles have to be of the same diameter.";
|
"all nozzles have to be of the same diameter.";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -749,7 +749,7 @@ PrintObjectSupportMaterial::MyLayersPtr PrintObjectSupportMaterial::top_contact_
|
|||||||
// Don't want to print a layer below the first layer height as it may not stick well.
|
// Don't want to print a layer below the first layer height as it may not stick well.
|
||||||
//FIXME there may be a need for a single layer support, then one may decide to print it either as a bottom contact or a top contact
|
//FIXME there may be a need for a single layer support, then one may decide to print it either as a bottom contact or a top contact
|
||||||
// and it may actually make sense to do it with a thinner layer than the first layer height.
|
// and it may actually make sense to do it with a thinner layer than the first layer height.
|
||||||
if (new_layer.print_z < this->first_layer_height() + m_support_layer_height_min)
|
if (new_layer.print_z < m_slicing_params.first_print_layer_height + m_support_layer_height_min)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
@ -1046,7 +1046,7 @@ PrintObjectSupportMaterial::MyLayersPtr PrintObjectSupportMaterial::raft_and_int
|
|||||||
assert(intermediate_layers.empty());
|
assert(intermediate_layers.empty());
|
||||||
MyLayer &layer_new = layer_allocate(layer_storage, sltIntermediate);
|
MyLayer &layer_new = layer_allocate(layer_storage, sltIntermediate);
|
||||||
layer_new.bottom_z = 0.;
|
layer_new.bottom_z = 0.;
|
||||||
layer_new.print_z = extr1z = this->first_layer_height();
|
layer_new.print_z = extr1z = m_slicing_params.first_print_layer_height;
|
||||||
layer_new.height = extr1z;
|
layer_new.height = extr1z;
|
||||||
intermediate_layers.push_back(&layer_new);
|
intermediate_layers.push_back(&layer_new);
|
||||||
// Continue printing the other layers up to extr2z.
|
// Continue printing the other layers up to extr2z.
|
||||||
@ -1067,17 +1067,17 @@ PrintObjectSupportMaterial::MyLayersPtr PrintObjectSupportMaterial::raft_and_int
|
|||||||
extr2.layer->height = step;
|
extr2.layer->height = step;
|
||||||
extr2.layer->bottom_z = extr2z = extr2.layer->print_z - step;
|
extr2.layer->bottom_z = extr2z = extr2.layer->print_z - step;
|
||||||
-- n_layers_extra;
|
-- n_layers_extra;
|
||||||
if (extr2.layer->bottom_z < this->first_layer_height()) {
|
if (extr2.layer->bottom_z < m_slicing_params.first_print_layer_height) {
|
||||||
// Split the span into two layers: the top layer up to the first layer height,
|
// Split the span into two layers: the top layer up to the first layer height,
|
||||||
// and the new intermediate layer below.
|
// and the new intermediate layer below.
|
||||||
// 1) Adjust the bottom of this top layer.
|
// 1) Adjust the bottom of this top layer.
|
||||||
assert(n_layers_extra == 0);
|
assert(n_layers_extra == 0);
|
||||||
extr2.layer->bottom_z = extr2z = this->first_layer_height();
|
extr2.layer->bottom_z = extr2z = m_slicing_params.first_print_layer_height;
|
||||||
extr2.layer->height = extr2.layer->print_z - extr2.layer->bottom_z;
|
extr2.layer->height = extr2.layer->print_z - extr2.layer->bottom_z;
|
||||||
// 2) Insert a new intermediate layer.
|
// 2) Insert a new intermediate layer.
|
||||||
MyLayer &layer_new = layer_allocate(layer_storage, sltIntermediate);
|
MyLayer &layer_new = layer_allocate(layer_storage, sltIntermediate);
|
||||||
layer_new.bottom_z = extr1z;
|
layer_new.bottom_z = extr1z;
|
||||||
layer_new.print_z = this->first_layer_height();
|
layer_new.print_z = m_slicing_params.first_print_layer_height;
|
||||||
layer_new.height = layer_new.print_z - layer_new.bottom_z;
|
layer_new.height = layer_new.print_z - layer_new.bottom_z;
|
||||||
assert(intermediate_layers.empty() || intermediate_layers.back()->print_z <= layer_new.print_z);
|
assert(intermediate_layers.empty() || intermediate_layers.back()->print_z <= layer_new.print_z);
|
||||||
intermediate_layers.push_back(&layer_new);
|
intermediate_layers.push_back(&layer_new);
|
||||||
|
@ -127,10 +127,6 @@ public:
|
|||||||
public:
|
public:
|
||||||
PrintObjectSupportMaterial(const PrintObject *object, const SlicingParameters &slicing_params);
|
PrintObjectSupportMaterial(const PrintObject *object, const SlicingParameters &slicing_params);
|
||||||
|
|
||||||
// Height of the 1st layer is user configured as it is important for the print
|
|
||||||
// to stick to he print bed.
|
|
||||||
coordf_t first_layer_height() const { return m_object_config->first_layer_height.value; }
|
|
||||||
|
|
||||||
// Is raft enabled?
|
// Is raft enabled?
|
||||||
bool has_raft() const { return m_slicing_params.has_raft(); }
|
bool has_raft() const { return m_slicing_params.has_raft(); }
|
||||||
// Has any support?
|
// Has any support?
|
||||||
|
Loading…
Reference in New Issue
Block a user