mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-13 03:58:58 +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) {
|
||||
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');
|
||||
$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",
|
||||
|
@ -247,7 +247,7 @@ sub _support_material {
|
||||
print_config => $self->print->config,
|
||||
object_config => $self->config,
|
||||
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),
|
||||
);
|
||||
}
|
||||
@ -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;
|
||||
|
@ -1316,29 +1316,26 @@ PrintObject::_support_material()
|
||||
Flow
|
||||
PrintObject::_support_material_flow(FlowRole role)
|
||||
{
|
||||
// Create support flow.
|
||||
int extruder =
|
||||
(role == frSupportMaterial) ?
|
||||
config.support_material_extruder.value : config
|
||||
.support_material_interface_extruder.value;
|
||||
const int extruder = (role == frSupportMaterial)
|
||||
? this->config.support_material_extruder.value
|
||||
: this->config.support_material_interface_extruder.value;
|
||||
|
||||
auto width = config.support_material_extrusion_width; // || config.extrusion_width;
|
||||
|
||||
if (role == frSupportMaterialInterface)
|
||||
width = config.support_material_interface_extrusion_width; // || width;
|
||||
auto width = this->config.support_material_extrusion_width;
|
||||
if (width.value == 0) width = this->config.extrusion_width;
|
||||
|
||||
if (role == frSupportMaterialInterface
|
||||
&& 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
|
||||
// support material layers.
|
||||
Flow support_flow = Flow::new_from_config_width(
|
||||
return Flow::new_from_config_width(
|
||||
role,
|
||||
width,
|
||||
static_cast<float>(print()->config.nozzle_diameter
|
||||
.get_at(static_cast<size_t>(extruder - 1))), // Check this line $self->print->config->nozzle_diameter->[0].
|
||||
static_cast<float>(config.layer_height.value),
|
||||
this->_print->config.nozzle_diameter.get_at(extruder-1),
|
||||
this->config.layer_height.value,
|
||||
0
|
||||
);
|
||||
|
||||
return support_flow;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -110,7 +110,7 @@ _constant()
|
||||
Ref<Layer> add_layer(int id, coordf_t height, coordf_t print_z,
|
||||
coordf_t slice_z);
|
||||
void delete_layer(int idx);
|
||||
|
||||
%name{support_material_flow} Clone<Flow> _support_material_flow(FlowRole role = frSupportMaterial);
|
||||
size_t support_layer_count();
|
||||
void clear_support_layers();
|
||||
Ref<SupportLayer> get_support_layer(int idx);
|
||||
|
Loading…
x
Reference in New Issue
Block a user