ENH: add rectilinear interface pattern for organic support

1. add rectilinear interface pattern for organic support
    jira: STUDIO-7181
2. add tree support optgroup

Change-Id: I94882bc34a61c6adc06b8ecbc9f2323f9b039aac
(cherry picked from commit a8142ab3f37e0bd140a31a7e635b8475f471d7e3)
(cherry picked from commit 69cf816b9431bc21ca0187c7db1148e2d2e898ab)
This commit is contained in:
Arthur
2024-05-28 20:11:45 +08:00
committed by Noisyfox
parent f00bdfeca8
commit 532dcae37a
10 changed files with 130 additions and 230 deletions

View File

@@ -379,7 +379,7 @@ public:
int avg_node_per_layer = 0;
float nodes_angle = 0;
float nodes_angle = 0;
bool has_sharp_tails = false;
bool has_cantilever = false;
double max_cantilever_dist = 0;
@@ -405,11 +405,11 @@ private:
* Lazily computes volumes as needed.
* \warning This class is NOT currently thread-safe and should not be accessed in OpenMP blocks
*/
std::vector<std::vector<SupportNode*>> contact_nodes;
std::shared_ptr<TreeSupportData> m_ts_data;
std::unique_ptr<TreeSupport3D::TreeModelVolumes> m_model_volumes;
PrintObject *m_object;
const PrintObjectConfig *m_object_config;
const PrintObjectConfig* m_object_config;
SlicingParameters m_slicing_params;
// Various precomputed support parameters to be shared with external functions.
SupportParameters m_support_params;
@@ -441,7 +441,7 @@ private:
* save the resulting support polygons to.
* \param contact_nodes The nodes to draw as support.
*/
void draw_circles(const std::vector<std::vector<SupportNode*>>& contact_nodes);
void draw_circles();
/*!
* \brief Drops down the nodes of the tree support towards the build plate.
@@ -455,16 +455,16 @@ private:
* dropped down. The nodes are dropped to lower layers inside the same
* vector of layers.
*/
void drop_nodes(std::vector<std::vector<SupportNode*>>& contact_nodes);
void drop_nodes();
void smooth_nodes(std::vector<std::vector<SupportNode*>>& contact_nodes);
void smooth_nodes();
/*! BBS: MusangKing: maximum layer height
* \brief Optimize the generation of tree support by pre-planning the layer_heights
*
*/
std::vector<LayerHeightData> plan_layer_heights(std::vector<std::vector<SupportNode*>>& contact_nodes);
std::vector<LayerHeightData> plan_layer_heights();
/*!
* \brief Creates points where support contacts the model.
*
@@ -478,7 +478,7 @@ private:
* \return For each layer, a list of points where the tree should connect
* with the model.
*/
void generate_contact_points(std::vector<std::vector<SupportNode*>>& contact_nodes);
void generate_contact_points();
/*!
* \brief Add a node to the next layer.