mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-14 02:45:53 +08:00
Ported PrintObject::_support_material_flow() to C++
This commit is contained in:
parent
e5bd2ef801
commit
725d0ab408
@ -118,7 +118,7 @@ sub export {
|
|||||||
|
|
||||||
if ($self->print->has_support_material) {
|
if ($self->print->has_support_material) {
|
||||||
my $object0 = $self->objects->[0];
|
my $object0 = $self->objects->[0];
|
||||||
my $flow = $object0->support_material_flow;
|
my $flow = $object0->support_material_flow(FLOW_ROLE_SUPPORT_MATERIAL);
|
||||||
my $vol_speed = $flow->mm3_per_mm * $object0->config->get_abs_value('support_material_speed');
|
my $vol_speed = $flow->mm3_per_mm * $object0->config->get_abs_value('support_material_speed');
|
||||||
$vol_speed = min($vol_speed, $self->config->max_volumetric_speed) if $self->config->max_volumetric_speed > 0;
|
$vol_speed = min($vol_speed, $self->config->max_volumetric_speed) if $self->config->max_volumetric_speed > 0;
|
||||||
printf $fh "; support material extrusion width = %.2fmm (%.2fmm^3/s)\n",
|
printf $fh "; support material extrusion width = %.2fmm (%.2fmm^3/s)\n",
|
||||||
|
@ -247,7 +247,7 @@ sub _support_material {
|
|||||||
print_config => $self->print->config,
|
print_config => $self->print->config,
|
||||||
object_config => $self->config,
|
object_config => $self->config,
|
||||||
first_layer_flow => $first_layer_flow,
|
first_layer_flow => $first_layer_flow,
|
||||||
flow => $self->support_material_flow,
|
flow => $self->support_material_flow(FLOW_ROLE_SUPPORT_MATERIAL),
|
||||||
interface_flow => $self->support_material_flow(FLOW_ROLE_SUPPORT_MATERIAL_INTERFACE),
|
interface_flow => $self->support_material_flow(FLOW_ROLE_SUPPORT_MATERIAL_INTERFACE),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -570,28 +570,4 @@ sub _simplify_slices {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sub support_material_flow {
|
|
||||||
my ($self, $role) = @_;
|
|
||||||
|
|
||||||
$role //= FLOW_ROLE_SUPPORT_MATERIAL;
|
|
||||||
my $extruder = ($role == FLOW_ROLE_SUPPORT_MATERIAL)
|
|
||||||
? $self->config->support_material_extruder
|
|
||||||
: $self->config->support_material_interface_extruder;
|
|
||||||
|
|
||||||
my $width = $self->config->support_material_extrusion_width || $self->config->extrusion_width;
|
|
||||||
if ($role == FLOW_ROLE_SUPPORT_MATERIAL_INTERFACE) {
|
|
||||||
$width = $self->config->support_material_interface_extrusion_width || $width;
|
|
||||||
}
|
|
||||||
|
|
||||||
# we use a bogus layer_height because we use the same flow for all
|
|
||||||
# support material layers
|
|
||||||
return Slic3r::Flow->new_from_width(
|
|
||||||
width => $width,
|
|
||||||
role => $role,
|
|
||||||
nozzle_diameter => $self->print->config->nozzle_diameter->[$extruder-1] // $self->print->config->nozzle_diameter->[0],
|
|
||||||
layer_height => $self->config->layer_height,
|
|
||||||
bridge_flow_ratio => 0,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
@ -1316,29 +1316,26 @@ PrintObject::_support_material()
|
|||||||
Flow
|
Flow
|
||||||
PrintObject::_support_material_flow(FlowRole role)
|
PrintObject::_support_material_flow(FlowRole role)
|
||||||
{
|
{
|
||||||
// Create support flow.
|
const int extruder = (role == frSupportMaterial)
|
||||||
int extruder =
|
? this->config.support_material_extruder.value
|
||||||
(role == frSupportMaterial) ?
|
: this->config.support_material_interface_extruder.value;
|
||||||
config.support_material_extruder.value : config
|
|
||||||
.support_material_interface_extruder.value;
|
|
||||||
|
|
||||||
auto width = config.support_material_extrusion_width; // || config.extrusion_width;
|
auto width = this->config.support_material_extrusion_width;
|
||||||
|
if (width.value == 0) width = this->config.extrusion_width;
|
||||||
|
|
||||||
if (role == frSupportMaterialInterface)
|
if (role == frSupportMaterialInterface
|
||||||
width = config.support_material_interface_extrusion_width; // || width;
|
&& this->config.support_material_interface_extrusion_width.value > 0)
|
||||||
|
width = this->config.support_material_interface_extrusion_width;
|
||||||
|
|
||||||
// We use a bogus layer_height because we use the same flow for all
|
// We use a bogus layer_height because we use the same flow for all
|
||||||
// support material layers.
|
// support material layers.
|
||||||
Flow support_flow = Flow::new_from_config_width(
|
return Flow::new_from_config_width(
|
||||||
role,
|
role,
|
||||||
width,
|
width,
|
||||||
static_cast<float>(print()->config.nozzle_diameter
|
this->_print->config.nozzle_diameter.get_at(extruder-1),
|
||||||
.get_at(static_cast<size_t>(extruder - 1))), // Check this line $self->print->config->nozzle_diameter->[0].
|
this->config.layer_height.value,
|
||||||
static_cast<float>(config.layer_height.value),
|
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
|
|
||||||
return support_flow;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -110,7 +110,7 @@ _constant()
|
|||||||
Ref<Layer> add_layer(int id, coordf_t height, coordf_t print_z,
|
Ref<Layer> add_layer(int id, coordf_t height, coordf_t print_z,
|
||||||
coordf_t slice_z);
|
coordf_t slice_z);
|
||||||
void delete_layer(int idx);
|
void delete_layer(int idx);
|
||||||
|
%name{support_material_flow} Clone<Flow> _support_material_flow(FlowRole role = frSupportMaterial);
|
||||||
size_t support_layer_count();
|
size_t support_layer_count();
|
||||||
void clear_support_layers();
|
void clear_support_layers();
|
||||||
Ref<SupportLayer> get_support_layer(int idx);
|
Ref<SupportLayer> get_support_layer(int idx);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user