#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/libslic3r/SLA/SupportTreeBuildsteps.hpp>
Public Member Functions | |
| SupportTreeBuildsteps (SupportTreeBuilder &builder, const SupportableMesh &sm) | |
| void | filter () |
| void | add_pinheads () |
| void | classify () |
| void | routing_to_ground () |
| void | routing_to_model () |
| void | interconnect_pillars () |
| void | merge_result () |
Static Public Member Functions | |
| static bool | execute (SupportTreeBuilder &builder, const SupportableMesh &sm) |
Private Types | |
| using | PtIndices = std::vector<unsigned> |
Private Member Functions | |
| IndexedMesh::hit_result | ray_mesh_intersect (const Vec3d &s, const Vec3d &dir) |
| IndexedMesh::hit_result | pinhead_mesh_intersect (const Vec3d &s, const Vec3d &dir, double r_pin, double r_back, double width, double safety_d) |
| IndexedMesh::hit_result | pinhead_mesh_intersect (const Vec3d &s, const Vec3d &dir, double r_pin, double r_back, double width) |
| IndexedMesh::hit_result | bridge_mesh_intersect (const Vec3d &s, const Vec3d &dir, double r, double safety_d) |
| IndexedMesh::hit_result | bridge_mesh_intersect (const Vec3d &s, const Vec3d &dir, double r) |
| template<class... Args> | |
| double | bridge_mesh_distance (Args &&...args) |
| bool | interconnect (const Pillar &pillar, const Pillar &nextpillar) |
| bool | connect_to_nearpillar (const Head &head, long nearpillar_id) |
| bool | connect_to_ground (Head &head, const Vec3d &dir) |
| bool | connect_to_ground (Head &head) |
| bool | connect_to_model_body (Head &head) |
| bool | search_pillar_and_connect (const Head &source) |
| bool | create_ground_pillar (const Vec3d &jp, const Vec3d &sourcedir, double radius, long head_id=SupportTreeNode::ID_UNSET) |
| void | add_pillar_base (long pid) |
| std::optional< DiffBridge > | search_widening_path (const Vec3d &jp, const Vec3d &dir, double radius, double new_radius) |
Private Attributes | |
| const SupportTreeConfig & | m_cfg |
| const IndexedMesh & | m_mesh |
| const std::vector< SupportPoint > & | m_support_pts |
| PtIndices | m_iheads |
| PtIndices | m_iheads_onmodel |
| PtIndices | m_iheadless |
| std::map< unsigned, IndexedMesh::hit_result > | m_head_to_ground_scans |
| PointSet | m_support_nmls |
| std::vector< PtIndices > | m_pillar_clusters |
| SupportTreeBuilder & | m_builder |
| PointSet | m_points |
| ThrowOnCancel | m_thr |
| PillarIndex | m_pillar_index |
| ccr::BlockingMutex | m_bridge_mutex |
|
private |
| Slic3r::sla::SupportTreeBuildsteps::SupportTreeBuildsteps | ( | SupportTreeBuilder & | builder, |
| const SupportableMesh & | sm ) |
References m_builder, m_cfg, m_mesh, m_points, m_support_nmls, m_support_pts, m_thr, Slic3r::sla::X, Slic3r::sla::Y, and Slic3r::sla::Z.
Referenced by execute().
|
inlineprivate |
References m_builder, and m_cfg.
Referenced by create_ground_pillar(), and interconnect_pillars().
| void Slic3r::sla::SupportTreeBuildsteps::add_pinheads | ( | ) |
References add_pinheads().
Referenced by add_pinheads(), and execute().
|
inlineprivate |
References bridge_mesh_intersect(), and Slic3r::sla::IndexedMesh::hit_result::distance().
Referenced by connect_to_ground(), connect_to_ground(), connect_to_nearpillar(), create_ground_pillar(), interconnect(), interconnect_pillars(), and search_widening_path().
|
inlineprivate |
References bridge_mesh_intersect(), and m_cfg.
|
private |
References bridge_mesh_intersect().
Referenced by bridge_mesh_distance(), bridge_mesh_intersect(), bridge_mesh_intersect(), classify(), and interconnect_pillars().
| void Slic3r::sla::SupportTreeBuildsteps::classify | ( | ) |
References bridge_mesh_intersect(), classify(), Slic3r::sla::cluster(), Slic3r::sla::distance(), Slic3r::sla::DOWN, Slic3r::sla::Head::invalidate(), Slic3r::sla::Head::junction_point(), m_builder, m_cfg, m_head_to_ground_scans, m_iheads, m_iheads_onmodel, m_pillar_clusters, m_thr, Slic3r::sla::Head::r_back_mm, and Slic3r::to_2d().
Referenced by classify(), and execute().
|
inlineprivate |
References Slic3r::sla::bounds(), bridge_mesh_distance(), connect_to_ground(), Slic3r::sla::Head::dir, Slic3r::sla::dir_to_spheric(), Slic3r::sla::get_criteria(), Slic3r::sla::initvals(), Slic3r::sla::Head::junction_point(), m_cfg, Slic3r::opt::Optimizer< Method, Enable >::optimize(), PI, Slic3r::sla::Head::r_back_mm, Slic3r::opt::Optimizer< Method, Enable >::seed(), Slic3r::sla::spheric_to_dir(), and Slic3r::opt::Optimizer< Method, Enable >::to_max().
|
private |
References bridge_mesh_distance(), connect_to_ground(), create_ground_pillar(), Slic3r::sla::DOWN, Slic3r::sla::SupportTreeNode::id, Slic3r::sla::Head::junction_point(), m_builder, m_cfg, and Slic3r::sla::Head::r_back_mm.
Referenced by connect_to_ground(), connect_to_ground(), and routing_to_model().
|
private |
References connect_to_model_body(), Slic3r::Geometry::dist(), Slic3r::sla::DOWN, Slic3r::sla::Pillar::endpoint(), Slic3r::sla::Head::fullwidth(), Slic3r::sla::SupportTreeNode::id, Slic3r::sla::SupportTreeNode::ID_UNSET, Slic3r::sla::Head::junction_point(), m_builder, m_cfg, m_head_to_ground_scans, m_mesh, m_pillar_index, PI, Slic3r::sla::Head::r_back_mm, Slic3r::sla::Head::r_pin_mm, Slic3r::sla::X, Slic3r::sla::Y, and Slic3r::sla::Z.
Referenced by connect_to_model_body(), and routing_to_model().
|
private |
References bridge_mesh_distance(), connect_to_nearpillar(), Slic3r::sla::dirv(), Slic3r::sla::distance(), Slic3r::sla::DOWN, Slic3r::sla::SupportTreeNode::id, Slic3r::sla::Head::junction_point(), m_bridge_mutex, m_builder, m_cfg, Slic3r::sla::Head::r_back_mm, Slic3r::to_2d(), and Slic3r::sla::Z.
Referenced by connect_to_nearpillar(), routing_to_ground(), and search_pillar_and_connect().
|
private |
References add_pillar_base(), bridge_mesh_distance(), create_ground_pillar(), Slic3r::sla::dir_to_spheric(), Slic3r::sla::DOWN, EPSILON, Slic3r::sla::SupportTreeNode::id, Slic3r::sla::SupportTreeNode::ID_UNSET, m_builder, m_cfg, m_mesh, m_pillar_index, PI, search_widening_path(), and Slic3r::sla::spheric_to_dir().
Referenced by connect_to_ground(), create_ground_pillar(), and routing_to_ground().
|
static |
References SupportTreeBuildsteps(), add_pinheads(), Slic3r::sla::SupportableMesh::cfg, classify(), Slic3r::sla::SupportTree::ctl(), Slic3r::sla::SupportableMesh::emesh, filter(), Slic3r::sla::SupportTreeConfig::ground_facing_only, Slic3r::sla::IndexedMesh::ground_level(), Slic3r::sla::SupportTreeBuilder::ground_level, interconnect_pillars(), merge_result(), Slic3r::sla::SupportTreeConfig::object_elevation_mm, Slic3r::sla::SupportableMesh::pts, routing_to_ground(), routing_to_model(), Slic3r::sla::JobController::statuscb, and Slic3r::sla::JobController::stopcondition.
Referenced by Slic3r::sla::SupportTree::create().
| void Slic3r::sla::SupportTreeBuildsteps::filter | ( | ) |
References Slic3r::sla::bounds(), Slic3r::sla::cluster(), Slic3r::sla::D_SP, Slic3r::sla::Head::dir, Slic3r::sla::dir_to_spheric(), Slic3r::sla::IndexedMesh::hit_result::distance(), filter(), Slic3r::sla::get_criteria(), Slic3r::sla::SupportTreeNode::id, Slic3r::sla::initvals(), m_builder, m_cfg, m_iheadless, m_iheads, m_mesh, m_points, m_support_pts, m_thr, Slic3r::sla::normals(), Slic3r::opt::Optimizer< Method, Enable >::optimize(), PI, pinhead_mesh_intersect(), Slic3r::sla::Head::r_back_mm, Slic3r::opt::Optimizer< Method, Enable >::seed(), Slic3r::sla::spheric_to_dir(), Slic3r::opt::Optimizer< Method, Enable >::to_max(), Slic3r::sla::Head::width_mm, and Slic3r::sla::Z.
Referenced by execute(), and filter().
|
private |
References bridge_mesh_distance(), Slic3r::sla::cross, Slic3r::sla::dirv(), Slic3r::sla::distance(), Slic3r::sla::dynamic, Slic3r::sla::Pillar::endpoint(), interconnect(), m_builder, m_cfg, Slic3r::sla::Pillar::r, Slic3r::sla::Pillar::startpoint(), Slic3r::sla::X, Slic3r::sla::Y, and Slic3r::sla::Z.
Referenced by interconnect(), and interconnect_pillars().
| void Slic3r::sla::SupportTreeBuildsteps::interconnect_pillars | ( | ) |
References add_pillar_base(), bridge_mesh_distance(), bridge_mesh_intersect(), Slic3r::sla::dirv(), Slic3r::sla::distance(), Slic3r::sla::DOWN, Slic3r::sla::Pillar::endpoint(), EPSILON, Slic3r::sla::Pillar::height, Slic3r::sla::SupportTreeNode::id, interconnect(), interconnect_pillars(), Slic3r::sla::Pillar::links, m_builder, m_cfg, m_mesh, m_pillar_index, Slic3r::sla::pairhash(), PI, Slic3r::sla::Pillar::r, Slic3r::sla::X, Slic3r::sla::Y, and Slic3r::sla::Z.
Referenced by execute(), and interconnect_pillars().
|
inline |
|
inlineprivate |
References m_cfg, and pinhead_mesh_intersect().
|
private |
References Slic3r::sla::PointRing< N >::get(), and m_mesh.
Referenced by filter(), pinhead_mesh_intersect(), and search_widening_path().
|
inlineprivate |
| void Slic3r::sla::SupportTreeBuildsteps::routing_to_ground | ( | ) |
References Slic3r::sla::cluster_centroid(), connect_to_nearpillar(), create_ground_pillar(), Slic3r::sla::Head::dir, Slic3r::sla::distance(), Slic3r::sla::SupportTreeNode::id, Slic3r::sla::Head::junction_point(), m_builder, m_iheads_onmodel, m_pillar_clusters, m_pillar_index, m_points, m_thr, Slic3r::sla::Head::r_back_mm, routing_to_ground(), search_pillar_and_connect(), Slic3r::sla::X, and Slic3r::sla::Y.
Referenced by execute(), and routing_to_ground().
| void Slic3r::sla::SupportTreeBuildsteps::routing_to_model | ( | ) |
References connect_to_ground(), connect_to_model_body(), m_iheads_onmodel, and routing_to_model().
Referenced by execute(), and routing_to_model().
|
private |
References connect_to_nearpillar(), Slic3r::sla::PointIndex::empty(), Slic3r::sla::SupportTreeNode::ID_UNSET, Slic3r::sla::Head::junction_point(), m_builder, m_pillar_index, m_thr, Slic3r::sla::PointIndex::nearest(), Slic3r::sla::Head::r_back_mm, Slic3r::sla::PointIndex::remove(), search_pillar_and_connect(), Slic3r::sla::X, and Slic3r::sla::Y.
Referenced by routing_to_ground(), and search_pillar_and_connect().
|
private |
References Slic3r::sla::bounds(), bridge_mesh_distance(), Slic3r::sla::dir_to_spheric(), Slic3r::sla::get_criteria(), Slic3r::sla::initvals(), m_builder, m_cfg, Slic3r::opt::Optimizer< Method, Enable >::optimize(), PI, pinhead_mesh_intersect(), search_widening_path(), Slic3r::sla::spheric_to_dir(), and Slic3r::opt::Optimizer< Method, Enable >::to_max().
Referenced by create_ground_pillar(), and search_widening_path().
|
private |
Referenced by connect_to_nearpillar().
|
private |
Referenced by SupportTreeBuildsteps(), add_pillar_base(), classify(), connect_to_ground(), connect_to_model_body(), connect_to_nearpillar(), create_ground_pillar(), filter(), interconnect(), interconnect_pillars(), merge_result(), routing_to_ground(), search_pillar_and_connect(), and search_widening_path().
|
private |
Referenced by SupportTreeBuildsteps(), add_pillar_base(), bridge_mesh_intersect(), classify(), connect_to_ground(), connect_to_ground(), connect_to_model_body(), connect_to_nearpillar(), create_ground_pillar(), filter(), interconnect(), interconnect_pillars(), pinhead_mesh_intersect(), and search_widening_path().
|
private |
Referenced by classify(), and connect_to_model_body().
|
private |
Referenced by classify(), and filter().
|
private |
Referenced by classify(), routing_to_ground(), and routing_to_model().
|
private |
|
private |
Referenced by classify(), and routing_to_ground().
|
private |
|
private |
Referenced by SupportTreeBuildsteps(), filter(), and routing_to_ground().
|
private |
Referenced by SupportTreeBuildsteps().
|
private |
Referenced by SupportTreeBuildsteps(), and filter().
|
private |
Referenced by SupportTreeBuildsteps(), classify(), filter(), routing_to_ground(), and search_pillar_and_connect().