FIX: blockers are not working correctly with organic supports.
jira: STUDIO-6278 Change-Id: If74e611821db25241dd67dfc4a3e44fac557a10d (cherry picked from commit 76b9b2b7e856f648082cd3a09386775695c6accb)
This commit is contained in:
parent
c7d12b703e
commit
cf35d0268f
|
@ -231,6 +231,7 @@ static std::vector<std::pair<TreeSupportSettings, std::vector<size_t>>> group_me
|
|||
//FIXME this is a fudge constant!
|
||||
double support_tree_tip_diameter = 0.8;
|
||||
auto enforcer_overhang_offset = scaled<double>(support_tree_tip_diameter);
|
||||
const coordf_t radius_sample_resolution = g_config_tree_support_collision_resolution;
|
||||
|
||||
// calc the extrudable expolygons of each layer
|
||||
const coordf_t extrusion_width = config.line_width.value;
|
||||
|
@ -249,7 +250,7 @@ static std::vector<std::pair<TreeSupportSettings, std::vector<size_t>>> group_me
|
|||
size_t num_overhang_layers = support_auto ? num_object_layers : std::min(num_object_layers, std::max(size_t(support_enforce_layers), enforcers_layers.size()));
|
||||
tbb::parallel_for(tbb::blocked_range<LayerIndex>(1, num_overhang_layers),
|
||||
[&print_object, &config, &print_config, &enforcers_layers, &blockers_layers,
|
||||
support_auto, support_enforce_layers, support_threshold_auto, tan_threshold, enforcer_overhang_offset, num_raft_layers, &throw_on_cancel, &out]
|
||||
support_auto, support_enforce_layers, support_threshold_auto, tan_threshold, enforcer_overhang_offset, num_raft_layers, radius_sample_resolution, &throw_on_cancel, &out]
|
||||
(const tbb::blocked_range<LayerIndex> &range) {
|
||||
for (LayerIndex layer_id = range.begin(); layer_id < range.end(); ++ layer_id) {
|
||||
const Layer ¤t_layer = *print_object.get_layer(layer_id);
|
||||
|
@ -280,7 +281,7 @@ static std::vector<std::pair<TreeSupportSettings, std::vector<size_t>>> group_me
|
|||
raw_overhangs_calculated = true;
|
||||
}
|
||||
if (! (enforced_layer || blockers_layers.empty() || blockers_layers[layer_id].empty()))
|
||||
overhangs = diff(overhangs, blockers_layers[layer_id], ApplySafetyOffset::Yes);
|
||||
overhangs = diff(overhangs, offset_ex(union_(blockers_layers[layer_id]), scale_(radius_sample_resolution)), ApplySafetyOffset::Yes);
|
||||
//if (config.bridge_no_support) {
|
||||
// for (const LayerRegion *layerm : current_layer.regions())
|
||||
// remove_bridges_from_contacts(print_config, lower_layer, *layerm,
|
||||
|
|
Loading…
Reference in New Issue