FIX: wall count fixed && overlapping of interface filling path
jira: STUDIO-10419, STUDIO-10420 Change-Id: Ib7274420ceb8149a02e82d896757ce5ace908fb9
This commit is contained in:
parent
ef8e81c04a
commit
2e3edc4518
|
@ -125,7 +125,7 @@
|
||||||
],
|
],
|
||||||
"tree_support_branch_angle": "45",
|
"tree_support_branch_angle": "45",
|
||||||
"tree_support_branch_diameter": "2",
|
"tree_support_branch_diameter": "2",
|
||||||
"tree_support_wall_count": "1",
|
"tree_support_wall_count": "0",
|
||||||
"wall_generator": "classic",
|
"wall_generator": "classic",
|
||||||
"wall_infill_order": "inner wall/outer wall/infill",
|
"wall_infill_order": "inner wall/outer wall/infill",
|
||||||
"wall_loops": "2",
|
"wall_loops": "2",
|
||||||
|
|
|
@ -13,6 +13,8 @@ void filter_by_extrusion_role_in_place(ExtrusionEntitiesPtr &extrusion_entities,
|
||||||
auto last = extrusion_entities.end();
|
auto last = extrusion_entities.end();
|
||||||
extrusion_entities.erase(
|
extrusion_entities.erase(
|
||||||
std::remove_if(first, last, [&role](const ExtrusionEntity* ee) {
|
std::remove_if(first, last, [&role](const ExtrusionEntity* ee) {
|
||||||
|
if((ee->role() == erSupportTransition && role ==erSupportMaterial))
|
||||||
|
return false;
|
||||||
return ee->role() != role; }),
|
return ee->role() != role; }),
|
||||||
last);
|
last);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3849,7 +3849,7 @@ GCode::LayerResult GCode::process_layer(
|
||||||
// Assign an extruder to the base.
|
// Assign an extruder to the base.
|
||||||
ObjectByExtruder &obj = object_by_extruder(by_extruder, has_support ? support_extruder : interface_extruder, &layer_to_print - layers.data(), layers.size());
|
ObjectByExtruder &obj = object_by_extruder(by_extruder, has_support ? support_extruder : interface_extruder, &layer_to_print - layers.data(), layers.size());
|
||||||
obj.support = &support_layer.support_fills;
|
obj.support = &support_layer.support_fills;
|
||||||
obj.support_extrusion_role = single_extruder ? erMixed : role;
|
obj.support_extrusion_role = single_extruder ? erMixed : erSupportMaterial;
|
||||||
if (! single_extruder && has_interface) {
|
if (! single_extruder && has_interface) {
|
||||||
ObjectByExtruder &obj_interface = object_by_extruder(by_extruder, interface_extruder, &layer_to_print - layers.data(), layers.size());
|
ObjectByExtruder &obj_interface = object_by_extruder(by_extruder, interface_extruder, &layer_to_print - layers.data(), layers.size());
|
||||||
obj_interface.support = &support_layer.support_fills;
|
obj_interface.support = &support_layer.support_fills;
|
||||||
|
|
|
@ -4061,7 +4061,7 @@ void PrintConfigDef::init_fff_params()
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
def->max = 2;
|
def->max = 2;
|
||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionInt(1));
|
def->set_default_value(new ConfigOptionInt(0));
|
||||||
|
|
||||||
def = this->add("chamber_temperatures", coInts);
|
def = this->add("chamber_temperatures", coInts);
|
||||||
def->label = L("Chamber temperature");
|
def->label = L("Chamber temperature");
|
||||||
|
|
|
@ -1607,15 +1607,15 @@ void TreeSupport::generate_toolpaths()
|
||||||
if (bridge_layer) {
|
if (bridge_layer) {
|
||||||
for (size_t region_id = 0; region_id < bridge_layer->regions().size(); ++region_id) {
|
for (size_t region_id = 0; region_id < bridge_layer->regions().size(); ++region_id) {
|
||||||
LayerRegion *layerm = bridge_layer->regions()[region_id];
|
LayerRegion *layerm = bridge_layer->regions()[region_id];
|
||||||
bool find_bridge = false;
|
bool bridge_found = false;
|
||||||
for (const auto surface : layerm->fill_surfaces.surfaces) {
|
for (const auto surface : layerm->fill_surfaces.surfaces) {
|
||||||
if (surface.surface_type == stBottomBridge && overlaps(polys, surface.expolygon)) {
|
if (surface.surface_type == stBottomBridge && overlaps(polys, surface.expolygon)) {
|
||||||
filler_Roof1stLayer->angle = surface.bridge_angle + (m_support_params.num_top_interface_layers - 1) * M_PI_2;
|
filler_Roof1stLayer->angle = surface.bridge_angle + (m_support_params.num_top_interface_layers - 1) * M_PI_2;
|
||||||
find_bridge - true;
|
bridge_found = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (find_bridge) break;
|
if (bridge_found) break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1644,7 +1644,7 @@ void TreeSupport::generate_toolpaths()
|
||||||
fill_params.dont_sort = true;
|
fill_params.dont_sort = true;
|
||||||
}
|
}
|
||||||
if (m_support_params.contact_fill_pattern = ipRectilinear) {
|
if (m_support_params.contact_fill_pattern = ipRectilinear) {
|
||||||
bool find_bridge = false;
|
bool bridge_found = false;
|
||||||
for (size_t i = 0; i < m_support_params.num_top_interface_layers; i++) {
|
for (size_t i = 0; i < m_support_params.num_top_interface_layers; i++) {
|
||||||
auto cur_ts_layer = m_object->get_support_layer(layer_id + i);
|
auto cur_ts_layer = m_object->get_support_layer(layer_id + i);
|
||||||
if (cur_ts_layer == nullptr) break;
|
if (cur_ts_layer == nullptr) break;
|
||||||
|
@ -1656,16 +1656,16 @@ void TreeSupport::generate_toolpaths()
|
||||||
for (const auto surface : layerm->fill_surfaces.surfaces) {
|
for (const auto surface : layerm->fill_surfaces.surfaces) {
|
||||||
if (surface.surface_type == stBottomBridge && overlaps(polys, surface.expolygon)) {
|
if (surface.surface_type == stBottomBridge && overlaps(polys, surface.expolygon)) {
|
||||||
filler_interface->angle = surface.bridge_angle + (i + 1) * M_PI_2;
|
filler_interface->angle = surface.bridge_angle + (i + 1) * M_PI_2;
|
||||||
find_bridge = true;
|
bridge_found = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (find_bridge) break;
|
if (bridge_found) break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (find_bridge) break;
|
if (bridge_found) break;
|
||||||
}
|
}
|
||||||
if (!find_bridge)
|
if (!bridge_found)
|
||||||
filler_interface->layer_id = area_group.interface_id;
|
filler_interface->layer_id = area_group.interface_id;
|
||||||
else
|
else
|
||||||
filler_interface->layer_id = 0;
|
filler_interface->layer_id = 0;
|
||||||
|
@ -1697,7 +1697,7 @@ void TreeSupport::generate_toolpaths()
|
||||||
// allow infill-only mode if support is thick enough (so min_wall_count is 0);
|
// allow infill-only mode if support is thick enough (so min_wall_count is 0);
|
||||||
// otherwise must draw 1 wall
|
// otherwise must draw 1 wall
|
||||||
// Don't need extra walls if we have infill. Extra walls may overlap with the infills.
|
// Don't need extra walls if we have infill. Extra walls may overlap with the infills.
|
||||||
size_t min_wall_count = offset(poly, -scale_(support_spacing * 1.5)).empty() ? 1 : 0;
|
size_t min_wall_count = 1;
|
||||||
make_perimeter_and_infill(ts_layer->support_fills.entities, poly, std::max(min_wall_count, wall_count), flow,
|
make_perimeter_and_infill(ts_layer->support_fills.entities, poly, std::max(min_wall_count, wall_count), flow,
|
||||||
erSupportMaterial, filler_support.get(), support_density);
|
erSupportMaterial, filler_support.get(), support_density);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue