#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/libslic3r/Support/TreeModelVolumes.hpp>
Classes | |
| class | LayerPolygonCache |
| class | RadiusLayerPolygonCache |
Public Types | |
| enum class | AvoidanceType : int8_t { Slow , FastSafe , Fast , Count } |
Public Member Functions | |
| TreeModelVolumes ()=default | |
| TreeModelVolumes (const PrintObject &print_object, const BuildVolume &build_volume, coord_t max_move, coord_t max_move_slow, size_t current_mesh_idx, const std::vector< Polygons > &additional_excluded_areas={}) | |
| TreeModelVolumes (TreeModelVolumes &&)=default | |
| TreeModelVolumes & | operator= (TreeModelVolumes &&)=default |
| TreeModelVolumes (const TreeModelVolumes &)=delete | |
| TreeModelVolumes & | operator= (const TreeModelVolumes &)=delete |
| void | clear () |
| void | clear_all_but_object_collision () |
| void | precalculate (const PrintObject &print_object, const coord_t max_layer, std::function< void()> throw_on_cancel) |
| Precalculate avoidances and collisions up to max_layer. | |
| const Polygons & | getCollision (const coord_t radius, LayerIndex layer_idx, bool min_xy_dist) const |
| Provides the areas that have to be avoided by the tree's branches to prevent collision with the model on this layer. | |
| std::optional< std::pair< coord_t, std::reference_wrapper< const Polygons > > > | get_collision_lower_bound_area (LayerIndex layer_id, coord_t max_radius) const |
| const Polygons & | getAvoidance (coord_t radius, LayerIndex layer_idx, AvoidanceType type, bool to_model, bool min_xy_dist) const |
| Provides the areas that have to be avoided by the tree's branches in order to reach the build plate. | |
| const Polygons & | getPlaceableAreas (coord_t radius, LayerIndex layer_idx, std::function< void()> throw_on_cancel) const |
| Provides the area represents all areas on the model where the branch does completely fit on the given layer. | |
| const Polygons & | getWallRestriction (coord_t radius, LayerIndex layer_idx, bool min_xy_dist) const |
| Provides the area that represents the walls, as in the printed area, of the model. This is an abstract representation not equal with the outline. See calculateWallRestrictions for better description. | |
| coord_t | ceilRadius (const coord_t radius, const bool min_xy_dist) const |
Round radius upwards to either a multiple of m_radius_sample_resolution or a exponentially increasing value. | |
| coord_t | getRadiusNextCeil (coord_t radius, bool min_xy_dist) const |
Round radius upwards to the maximum that would still round up to the same value as the provided one. | |
Public Attributes | |
| Polygon | m_bed_area |
| std::vector< Polygons > | m_belt_floor |
Private Types | |
| using | RadiusLayerPair = std::pair<coord_t, LayerIndex> |
| Convenience typedef for the keys to the caches. | |
Private Member Functions | |
| const Polygons & | getCollisionHolefree (coord_t radius, LayerIndex layer_idx) const |
| Provides the areas that have to be avoided by the tree's branches to prevent collision with the model on this layer. Holes are removed. | |
| coord_t | ceilRadius (const coord_t radius) const |
Round radius upwards to either a multiple of m_radius_sample_resolution or a exponentially increasing value. | |
| void | calculateCollision (const std::vector< RadiusLayerPair > &keys, std::function< void()> throw_on_cancel) |
| Creates the areas that have to be avoided by the tree's branches to prevent collision with the model on this layer. | |
| void | calculateCollision (const coord_t radius, const LayerIndex max_layer_idx, std::function< void()> throw_on_cancel) |
| void | calculateCollisionHolefree (const std::vector< RadiusLayerPair > &keys, std::function< void()> throw_on_cancel) |
| Creates the areas that have to be avoided by the tree's branches to prevent collision with the model on this layer. Holes are removed. | |
| void | calculateCollisionHolefree (RadiusLayerPair key) |
| Creates the areas that have to be avoided by the tree's branches to prevent collision with the model on this layer. Holes are removed. | |
| void | calculateAvoidance (const std::vector< RadiusLayerPair > &keys, bool to_build_plate, bool to_model, std::function< void()> throw_on_cancel) |
| Creates the areas that have to be avoided by the tree's branches to prevent collision with the model. | |
| void | calculateAvoidance (RadiusLayerPair key, bool to_build_plate, bool to_model) |
| Creates the areas that have to be avoided by the tree's branches to prevent collision with the model. | |
| void | calculatePlaceables (const coord_t radius, const LayerIndex max_required_layer, std::function< void()> throw_on_cancel) |
| Creates the areas where a branch of a given radius can be place on the model. Result is saved in the cache. | |
| void | calculatePlaceables (const std::vector< RadiusLayerPair > &keys, std::function< void()> throw_on_cancel) |
| Creates the areas where a branch of a given radius can be placed on the model. Result is saved in the cache. | |
| void | calculateWallRestrictions (const std::vector< RadiusLayerPair > &keys, std::function< void()> throw_on_cancel) |
| Creates the areas that can not be passed when expanding an area downwards. As such these areas are an somewhat abstract representation of a wall (as in a printed object). | |
| void | calculateWallRestrictions (RadiusLayerPair key) |
| Creates the areas that can not be passed when expanding an area downwards. As such these areas are an somewhat abstract representation of a wall (as in a printed object). These areas are at least xy_min_dist wide. When calculating it is always assumed that every wall is printed on top of another (as in has an overlap with the wall a layer below). Result is saved in the corresponding cache. | |
| RadiusLayerPolygonCache & | avoidance_cache (const AvoidanceType type, const bool to_model) |
| const RadiusLayerPolygonCache & | avoidance_cache (const AvoidanceType type, const bool to_model) const |
Private Attributes | |
| coord_t | m_max_move |
| The maximum distance that the center point of a tree branch may move in consecutive layers if it has to avoid the model. | |
| coord_t | m_max_move_slow |
| The maximum distance that the centre-point of a tree branch may move in consecutive layers if it does not have to avoid the model. | |
| coord_t | m_min_resolution |
| The smallest maximum resolution for simplify. | |
| bool | m_precalculated = false |
| size_t | m_current_outline_idx |
| The index to access the outline corresponding with the currently processing mesh. | |
| coord_t | m_current_min_xy_dist |
| The minimum required clearance between the model and the tree branches. | |
| coord_t | m_current_min_xy_dist_delta |
| The difference between the minimum required clearance between the model and the tree branches and the regular one. | |
| bool | m_support_rests_on_model |
| Does at least one mesh allow support to rest on a model. | |
| coord_t | m_increase_until_radius |
| Increase radius in the resulting drawn branches, even if the avoidance does not allow it. Will be cut later to still fit. | |
| Polygons | m_machine_border |
| Polygons representing the limits of the printable area of the machine. | |
| std::vector< std::pair< TreeSupportMeshGroupSettings, std::vector< Polygons > > > | m_layer_outlines |
| Storage for layer outlines and the corresponding settings of the meshes grouped by meshes with identical setting. | |
| std::vector< Polygons > | m_anti_overhang |
| Storage for areas that should be avoided, like support blocker or previous generated trees. | |
| std::vector< coord_t > | m_ignorable_radii |
| Radii that can be ignored by ceilRadius as they will never be requested, sorted. | |
| coord_t | m_radius_0 |
| Smallest radius a branch can have. This is the radius of a SupportElement with DTT=0. | |
| std::vector< double > | m_raft_layers |
| RadiusLayerPolygonCache | m_collision_cache |
| Caches for the collision, avoidance and areas on the model where support can be placed safely at given radius and layer indices. | |
| RadiusLayerPolygonCache | m_collision_cache_holefree |
| RadiusLayerPolygonCache | m_avoidance_cache |
| RadiusLayerPolygonCache | m_avoidance_cache_slow |
| RadiusLayerPolygonCache | m_avoidance_cache_to_model |
| RadiusLayerPolygonCache | m_avoidance_cache_to_model_slow |
| RadiusLayerPolygonCache | m_placeable_areas_cache |
| RadiusLayerPolygonCache | m_avoidance_cache_holefree |
| Caches to avoid holes smaller than the radius until which the radius is always increased, as they are free of holes. Also called safe avoidances, as they are safe regarding not running into holes. | |
| RadiusLayerPolygonCache | m_avoidance_cache_holefree_to_model |
| RadiusLayerPolygonCache | m_wall_restrictions_cache |
| Caches to represent walls not allowed to be passed over. | |
| RadiusLayerPolygonCache | m_wall_restrictions_cache_min |
|
private |
Convenience typedef for the keys to the caches.
|
strong |
| Enumerator | |
|---|---|
| Slow | |
| FastSafe | |
| Fast | |
| Count | |
|
default |
Referenced by TreeModelVolumes(), TreeModelVolumes(), avoidance_cache(), getAvoidance(), getCollision(), getCollisionHolefree(), getPlaceableAreas(), getWallRestriction(), operator=(), and operator=().
|
explicit |
References Slic3r::PrintObject::belt_global_z_offset(), Slic3r::TreeSupport3D::calculateMachineBorderCollision(), Slic3r::BeltFloorContext::compute_per_layer_floors(), Slic3r::Print::config(), Slic3r::PrintObject::get_layer(), Slic3r::TreeSupport3D::TreeSupportSettings::getRadius(), Slic3r::TreeSupport3D::TreeSupportSettings::increase_radius_until_radius, Slic3r::BeltFloorContext::init_local(), Slic3r::BeltFloorContext::is_active(), Slic3r::PrintObject::layer_count(), Slic3r::Layer::lslices, m_anti_overhang, m_bed_area, m_belt_floor, m_current_min_xy_dist, m_current_min_xy_dist_delta, m_current_outline_idx, m_increase_until_radius, m_layer_outlines, m_machine_border, m_max_move, m_max_move_slow, m_min_resolution, m_radius_0, m_raft_layers, m_support_rests_on_model, Slic3r::BuildVolume::polygon(), Slic3r::polygons_simplify(), Slic3r::PrintObjectBaseWithState< PrintType, PrintObjectStepEnum, COUNT >::print(), Slic3r::Layer::print_z, Slic3r::TreeSupport3D::TreeSupportSettings::raft_layers, Slic3r::range(), Slic3r::TreeSupport3D::TreeSupportMeshGroupSettings::resolution, Slic3r::PrintObject::slice_support_blockers(), Slic3r::PrintObject::slicing_parameters(), Slic3r::to_polygons(), Slic3r::TreeSupport3D::TreeSupportSettings::xy_distance, and Slic3r::TreeSupport3D::TreeSupportSettings::xy_min_distance.
|
default |
|
delete |
|
inlineprivate |
References Count, Fast, FastSafe, m_avoidance_cache, m_avoidance_cache_holefree, m_avoidance_cache_holefree_to_model, m_avoidance_cache_slow, m_avoidance_cache_to_model, m_avoidance_cache_to_model_slow, and Slow.
Referenced by avoidance_cache(), calculateAvoidance(), and getAvoidance().
|
inlineprivate |
References TreeModelVolumes(), and avoidance_cache().
|
private |
Creates the areas that have to be avoided by the tree's branches to prevent collision with the model.
The result is a 2D area that would cause nodes of radius radius to collide with the model. Result is saved in the cache.
| keys | RadiusLayerPairs of all requested areas. Every radius will be calculated up to the provided layer. |
References avoidance_cache(), calculateAvoidance(), Count, FastSafe, m_current_min_xy_dist_delta, m_increase_until_radius, Slic3r::range(), and Slow.
Referenced by calculateAvoidance(), calculateAvoidance(), getAvoidance(), and precalculate().
|
inlineprivate |
Creates the areas that have to be avoided by the tree's branches to prevent collision with the model.
The result is a 2D area that would cause nodes of radius radius to collide with the model. Result is saved in the cache.
| key | RadiusLayerPair of the requested areas. It will be calculated up to the provided layer. |
References calculateAvoidance().
|
private |
References Slic3r::TreeSupport3D::TreeModelVolumes::LayerPolygonCache::allocate(), Slic3r::TreeSupport3D::TreeModelVolumes::LayerPolygonCache::begin(), calculateCollision(), Slic3r::TreeSupport3D::TreeModelVolumes::LayerPolygonCache::end(), Slic3r::layer_height(), Slic3r::TreeSupport3D::TreeSupportMeshGroupSettings::layer_height, m_anti_overhang, m_collision_cache, m_current_min_xy_dist, m_current_outline_idx, m_layer_outlines, m_machine_border, m_min_resolution, m_support_rests_on_model, Slic3r::range(), Slic3r::TreeSupport3D::TreeSupportMeshGroupSettings::support_bottom_distance, Slic3r::TreeSupport3D::TreeSupportMeshGroupSettings::support_top_distance, and Slic3r::TreeSupport3D::TreeSupportMeshGroupSettings::support_xy_distance.
|
private |
Creates the areas that have to be avoided by the tree's branches to prevent collision with the model on this layer.
The result is a 2D area that would cause nodes of given radius to collide with the model. Result is saved in the cache.
| keys | RadiusLayerPairs of all requested areas. Every radius will be calculated up to the provided layer. |
References calculateCollision(), and Slic3r::range().
Referenced by calculateCollision(), calculateCollision(), getCollision(), and precalculate().
|
private |
Creates the areas that have to be avoided by the tree's branches to prevent collision with the model on this layer. Holes are removed.
The result is a 2D area that would cause nodes of given radius to collide with the model or be inside a hole. Result is saved in the cache. A Hole is defined as an area, in which a branch with m_increase_until_radius radius would collide with the wall.
| keys | RadiusLayerPairs of all requested areas. Every radius will be calculated up to the provided layer. |
References calculateCollisionHolefree(), m_collision_cache_holefree, and Slic3r::range().
Referenced by calculateCollisionHolefree(), calculateCollisionHolefree(), getCollisionHolefree(), and precalculate().
|
inlineprivate |
Creates the areas that have to be avoided by the tree's branches to prevent collision with the model on this layer. Holes are removed.
The result is a 2D area that would cause nodes of given radius to collide with the model or be inside a hole. Result is saved in the cache. A Hole is defined as an area, in which a branch with m_increase_until_radius radius would collide with the wall.
| key | RadiusLayerPairs the requested areas. The radius will be calculated up to the provided layer. |
References calculateCollisionHolefree().
|
private |
Creates the areas where a branch of a given radius can be place on the model. Result is saved in the cache.
| key | RadiusLayerPair of the requested areas. It will be calculated up to the provided layer. |
References calculatePlaceables(), Slic3r::diff(), getCollision(), getPlaceableAreas(), Slic3r::jtMiter, m_current_min_xy_dist, m_current_min_xy_dist_delta, m_machine_border, m_placeable_areas_cache, m_precalculated, Slic3r::offset(), Slic3r::range(), and Slic3r::union_ex().
Referenced by calculatePlaceables(), calculatePlaceables(), getPlaceableAreas(), and precalculate().
|
private |
Creates the areas where a branch of a given radius can be placed on the model. Result is saved in the cache.
| keys | RadiusLayerPair of the requested areas. The radius will be calculated up to the provided layer. |
References calculatePlaceables(), and Slic3r::range().
|
private |
Creates the areas that can not be passed when expanding an area downwards. As such these areas are an somewhat abstract representation of a wall (as in a printed object).
These areas are at least xy_min_dist wide. When calculating it is always assumed that every wall is printed on top of another (as in has an overlap with the wall a layer below). Result is saved in the corresponding cache.
| keys | RadiusLayerPairs of all requested areas. Every radius will be calculated up to the provided layer. |
References calculateWallRestrictions(), and Slic3r::range().
Referenced by calculateWallRestrictions(), calculateWallRestrictions(), getWallRestriction(), and precalculate().
|
inlineprivate |
Creates the areas that can not be passed when expanding an area downwards. As such these areas are an somewhat abstract representation of a wall (as in a printed object). These areas are at least xy_min_dist wide. When calculating it is always assumed that every wall is printed on top of another (as in has an overlap with the wall a layer below). Result is saved in the corresponding cache.
| key | RadiusLayerPair of the requested area. It well be will be calculated up to the provided layer. |
References calculateWallRestrictions().
Round radius upwards to either a multiple of m_radius_sample_resolution or a exponentially increasing value.
| radius | The radius of the node of interest |
References ceilRadius(), m_ignorable_radii, m_radius_0, Slic3r::round_up_divide(), SUPPORT_TREE_COLLISION_RESOLUTION, Slic3r::TreeSupport3D::SUPPORT_TREE_EXPONENTIAL_FACTOR, and SUPPORT_TREE_EXPONENTIAL_THRESHOLD.
|
inline |
Round radius upwards to either a multiple of m_radius_sample_resolution or a exponentially increasing value.
It also adds the difference between the minimum xy distance and the regular one.
| radius | The radius of the node of interest |
| min_xy_dist | is the minimum xy distance used. |
References ceilRadius(), and m_current_min_xy_dist_delta.
Referenced by ceilRadius(), ceilRadius(), getAvoidance(), getCollision(), getCollisionHolefree(), getPlaceableAreas(), getRadiusNextCeil(), getWallRestriction(), Slic3r::TreeSupport3D::increase_single_area(), and precalculate().
|
inline |
References clear_all_but_object_collision(), m_collision_cache, and m_placeable_areas_cache.
|
inline |
References m_avoidance_cache, m_avoidance_cache_holefree, m_avoidance_cache_holefree_to_model, m_avoidance_cache_slow, m_avoidance_cache_to_model, m_avoidance_cache_to_model_slow, m_collision_cache_holefree, m_placeable_areas_cache, m_wall_restrictions_cache, and m_wall_restrictions_cache_min.
Referenced by clear(), and Slic3r::TreeSupport3D::organic_draw_branches().
| std::optional< std::pair< coord_t, std::reference_wrapper< const Polygons > > > Slic3r::TreeSupport3D::TreeModelVolumes::get_collision_lower_bound_area | ( | LayerIndex | layer_id, |
| coord_t | max_radius ) const |
References get_collision_lower_bound_area(), and m_collision_cache.
Referenced by get_collision_lower_bound_area(), and Slic3r::TreeSupport3D::organic_smooth_branches_avoid_collisions().
| const Polygons & Slic3r::TreeSupport3D::TreeModelVolumes::getAvoidance | ( | coord_t | radius, |
| LayerIndex | layer_idx, | ||
| AvoidanceType | type, | ||
| bool | to_model, | ||
| bool | min_xy_dist ) const |
Provides the areas that have to be avoided by the tree's branches in order to reach the build plate.
The result is a 2D area that would cause nodes of radius radius to collide with the model or be unable to reach the build platform.
The input collision areas are inset by the maximum move distance and propagated upwards.
| radius | The radius of the node of interest |
| layer_idx | The layer of interest |
| type | Is the propagation with the maximum move distance slow required. |
| to_model | Does the avoidance allow good connections with the model. |
| min_xy_dist | is the minimum xy distance used. |
References TreeModelVolumes(), avoidance_cache(), calculateAvoidance(), ceilRadius(), error_level_not_in_cache, Fast, FastSafe, getAvoidance(), getCollision(), m_current_min_xy_dist_delta, m_increase_until_radius, m_precalculated, and Slic3r::TreeSupport3D::tree_supports_show_error().
Referenced by Slic3r::TreeSupport3D::convert_lines_to_internal(), Slic3r::TreeSupport3D::evaluate_point_for_next_layer_function(), Slic3r::TreeSupport3D::get_avoidance_status(), getAvoidance(), Slic3r::TreeSupport3D::increase_single_area(), and Slic3r::TreeSupport3D::sample_overhang_area().
| const Polygons & Slic3r::TreeSupport3D::TreeModelVolumes::getCollision | ( | const coord_t | radius, |
| LayerIndex | layer_idx, | ||
| bool | min_xy_dist ) const |
Provides the areas that have to be avoided by the tree's branches to prevent collision with the model on this layer.
The result is a 2D area that would cause nodes of radius radius to collide with the model.
| radius | The radius of the node of interest |
| layer_idx | The layer of interest |
| min_xy_dist | Is the minimum xy distance used. |
References TreeModelVolumes(), calculateCollision(), ceilRadius(), error_level_not_in_cache, getCollision(), m_collision_cache, m_precalculated, and Slic3r::TreeSupport3D::tree_supports_show_error().
Referenced by calculatePlaceables(), Slic3r::TreeSupport3D::convert_lines_to_internal(), Slic3r::TreeSupport3D::evaluate_point_for_next_layer_function(), Slic3r::TreeSupport3D::get_avoidance_status(), getAvoidance(), getCollision(), getPlaceableAreas(), getWallRestriction(), Slic3r::TreeSupport3D::increase_single_area(), Slic3r::TreeSupport3D::merge_influence_areas_two_elements(), and Slic3r::TreeSupport3D::sample_overhang_area().
|
private |
Provides the areas that have to be avoided by the tree's branches to prevent collision with the model on this layer. Holes are removed.
The result is a 2D area that would cause nodes of given radius to collide with the model or be inside a hole. A Hole is defined as an area, in which a branch with m_increase_until_radius radius would collide with the wall. minimum xy distance is always used.
| radius | The radius of the node of interest |
| layer_idx | The layer of interest |
| min_xy_dist | Is the minimum xy distance used. |
References TreeModelVolumes(), calculateCollisionHolefree(), ceilRadius(), error_level_not_in_cache, getCollisionHolefree(), m_collision_cache_holefree, m_current_min_xy_dist_delta, m_increase_until_radius, m_precalculated, and Slic3r::TreeSupport3D::tree_supports_show_error().
Referenced by getCollisionHolefree().
| const Polygons & Slic3r::TreeSupport3D::TreeModelVolumes::getPlaceableAreas | ( | coord_t | radius, |
| LayerIndex | layer_idx, | ||
| std::function< void()> | throw_on_cancel ) const |
Provides the area represents all areas on the model where the branch does completely fit on the given layer.
| radius | The radius of the node of interest |
| layer_idx | The layer of interest |
References TreeModelVolumes(), calculatePlaceables(), ceilRadius(), error_level_not_in_cache, Slic3r::format(), getCollision(), getPlaceableAreas(), m_placeable_areas_cache, m_precalculated, and Slic3r::TreeSupport3D::tree_supports_show_error().
Referenced by calculatePlaceables(), getPlaceableAreas(), and Slic3r::TreeSupport3D::set_to_model_contact_to_model_gracious().
|
inline |
Round radius upwards to the maximum that would still round up to the same value as the provided one.
| radius | The radius of the node of interest |
| min_xy_dist | is the minimum xy distance used. |
References ceilRadius(), and m_current_min_xy_dist_delta.
Referenced by Slic3r::TreeSupport3D::increase_single_area().
| const Polygons & Slic3r::TreeSupport3D::TreeModelVolumes::getWallRestriction | ( | coord_t | radius, |
| LayerIndex | layer_idx, | ||
| bool | min_xy_dist ) const |
Provides the area that represents the walls, as in the printed area, of the model. This is an abstract representation not equal with the outline. See calculateWallRestrictions for better description.
| radius | The radius of the node of interest. |
| layer_idx | The layer of interest. |
| min_xy_dist | is the minimum xy distance used. |
References TreeModelVolumes(), calculateWallRestrictions(), ceilRadius(), error_level_not_in_cache, getCollision(), getWallRestriction(), m_current_min_xy_dist_delta, m_precalculated, m_wall_restrictions_cache, m_wall_restrictions_cache_min, and Slic3r::TreeSupport3D::tree_supports_show_error().
Referenced by getWallRestriction(), and Slic3r::TreeSupport3D::increase_single_area().
|
delete |
|
default |
| void Slic3r::TreeSupport3D::TreeModelVolumes::precalculate | ( | const PrintObject & | print_object, |
| const coord_t | max_layer, | ||
| std::function< void()> | throw_on_cancel ) |
Precalculate avoidances and collisions up to max_layer.
Knowledge about branch angle is used to only calculate avoidances and collisions that may actually be needed. Not calling precalculate() will cause the class to lazily calculate avoidances and collisions as needed, which will be a lot slower on systems with more then one or two cores!
References Slic3r::TreeSupport3D::TreeSupportSettings::branch_radius, calculateAvoidance(), calculateCollision(), calculateCollisionHolefree(), calculatePlaceables(), calculateWallRestrictions(), ceilRadius(), Slic3r::debug_out_path(), Slic3r::SVG::export_expolygons(), Slic3r::format(), Slic3r::TreeSupport3D::TreeSupportSettings::getRadius(), m_avoidance_cache, m_avoidance_cache_holefree, m_avoidance_cache_holefree_to_model, m_avoidance_cache_slow, m_avoidance_cache_to_model, m_avoidance_cache_to_model_slow, m_collision_cache, m_collision_cache_holefree, m_current_min_xy_dist_delta, m_current_outline_idx, m_ignorable_radii, m_increase_until_radius, m_layer_outlines, m_placeable_areas_cache, m_precalculated, m_radius_0, m_support_rests_on_model, m_wall_restrictions_cache, m_wall_restrictions_cache_min, precalculate(), Slic3r::TreeSupport3D::TreeSupportSettings::recommendedMinRadius(), Slic3r::PrintObject::slicing_parameters(), Slic3r::sort_remove_duplicates(), Slic3r::TreeSupport3D::TreeModelVolumes::RadiusLayerPolygonCache::sorted(), Slic3r::TreeSupport3D::TreeSupportSettings::tip_layers, Slic3r::union_ex(), and Slic3r::unscaled().
Referenced by Slic3r::TreeSupport3D::precalculate(), and precalculate().
|
private |
Storage for areas that should be avoided, like support blocker or previous generated trees.
Referenced by TreeModelVolumes(), and calculateCollision().
|
private |
Referenced by avoidance_cache(), clear_all_but_object_collision(), and precalculate().
|
private |
Caches to avoid holes smaller than the radius until which the radius is always increased, as they are free of holes. Also called safe avoidances, as they are safe regarding not running into holes.
Referenced by avoidance_cache(), clear_all_but_object_collision(), and precalculate().
|
private |
Referenced by avoidance_cache(), clear_all_but_object_collision(), and precalculate().
|
private |
Referenced by avoidance_cache(), clear_all_but_object_collision(), and precalculate().
|
private |
Referenced by avoidance_cache(), clear_all_but_object_collision(), and precalculate().
|
private |
Referenced by avoidance_cache(), clear_all_but_object_collision(), and precalculate().
| Polygon Slic3r::TreeSupport3D::TreeModelVolumes::m_bed_area |
Referenced by TreeModelVolumes().
| std::vector<Polygons> Slic3r::TreeSupport3D::TreeModelVolumes::m_belt_floor |
Referenced by TreeModelVolumes().
|
private |
Caches for the collision, avoidance and areas on the model where support can be placed safely at given radius and layer indices.
Referenced by calculateCollision(), clear(), get_collision_lower_bound_area(), getCollision(), and precalculate().
|
private |
Referenced by calculateCollisionHolefree(), clear_all_but_object_collision(), getCollisionHolefree(), and precalculate().
|
private |
The minimum required clearance between the model and the tree branches.
Referenced by TreeModelVolumes(), calculateCollision(), and calculatePlaceables().
|
private |
The difference between the minimum required clearance between the model and the tree branches and the regular one.
Referenced by TreeModelVolumes(), calculateAvoidance(), calculatePlaceables(), ceilRadius(), getAvoidance(), getCollisionHolefree(), getRadiusNextCeil(), getWallRestriction(), and precalculate().
|
private |
The index to access the outline corresponding with the currently processing mesh.
Referenced by TreeModelVolumes(), calculateCollision(), and precalculate().
|
private |
Radii that can be ignored by ceilRadius as they will never be requested, sorted.
Referenced by ceilRadius(), and precalculate().
|
private |
Increase radius in the resulting drawn branches, even if the avoidance does not allow it. Will be cut later to still fit.
Referenced by TreeModelVolumes(), calculateAvoidance(), getAvoidance(), getCollisionHolefree(), and precalculate().
|
private |
Storage for layer outlines and the corresponding settings of the meshes grouped by meshes with identical setting.
Referenced by TreeModelVolumes(), calculateCollision(), and precalculate().
|
private |
Polygons representing the limits of the printable area of the machine.
Referenced by TreeModelVolumes(), calculateCollision(), and calculatePlaceables().
|
private |
The maximum distance that the center point of a tree branch may move in consecutive layers if it has to avoid the model.
Referenced by TreeModelVolumes().
|
private |
The maximum distance that the centre-point of a tree branch may move in consecutive layers if it does not have to avoid the model.
Referenced by TreeModelVolumes().
|
private |
The smallest maximum resolution for simplify.
Referenced by TreeModelVolumes(), and calculateCollision().
|
private |
Referenced by calculatePlaceables(), clear(), clear_all_but_object_collision(), getPlaceableAreas(), and precalculate().
|
private |
Referenced by calculatePlaceables(), getAvoidance(), getCollision(), getCollisionHolefree(), getPlaceableAreas(), getWallRestriction(), and precalculate().
|
private |
Smallest radius a branch can have. This is the radius of a SupportElement with DTT=0.
Referenced by TreeModelVolumes(), ceilRadius(), and precalculate().
|
private |
Referenced by TreeModelVolumes().
|
private |
Does at least one mesh allow support to rest on a model.
Referenced by TreeModelVolumes(), calculateCollision(), and precalculate().
|
private |
Caches to represent walls not allowed to be passed over.
Referenced by clear_all_but_object_collision(), getWallRestriction(), and precalculate().
|
private |
Referenced by clear_all_but_object_collision(), getWallRestriction(), and precalculate().