ENH:each Boolean operation has its own warning

Jira: STUDIO-6182
Change-Id: Ica5c4c299b6f0fb71ffe9890d3a2f10fa257a4a4
This commit is contained in:
zhou.xu 2024-02-18 10:34:24 +08:00 committed by Lane.Wei
parent d4e40d5b02
commit 66397a34e5
2 changed files with 16 additions and 10 deletions

View File

@ -147,7 +147,9 @@ void GLGizmoMeshBoolean::on_render()
void GLGizmoMeshBoolean::on_set_state()
{
m_warning_text = "";
for (size_t i = 0; i < m_warning_texts.size(); i++) {
m_warning_texts[i] = "";
}
if (m_state == EState::On) {
m_src.reset();
m_tool.reset();
@ -318,6 +320,7 @@ void GLGizmoMeshBoolean::on_render_input_window(float x, float y, float bottom_l
}
bool enable_button = m_src.mv && m_tool.mv;
int index =(int) m_operation_mode;
if (m_operation_mode == MeshBooleanOperation::Union)
{
if (operate_button(_L("Union") + "##btn", enable_button)) {
@ -329,10 +332,10 @@ void GLGizmoMeshBoolean::on_render_input_window(float x, float y, float bottom_l
Slic3r::MeshBoolean::mcut::make_boolean(temp_src_mesh, temp_tool_mesh, temp_mesh_resuls, "UNION");
if (temp_mesh_resuls.size() != 0) {
generate_new_volume(true, *temp_mesh_resuls.begin());
m_warning_text = "";
m_warning_texts[index] = "";
}
else {
m_warning_text = warning_text_common;
m_warning_texts[index] = warning_text_common;
}
}
}
@ -347,10 +350,10 @@ void GLGizmoMeshBoolean::on_render_input_window(float x, float y, float bottom_l
Slic3r::MeshBoolean::mcut::make_boolean(temp_src_mesh, temp_tool_mesh, temp_mesh_resuls, "A_NOT_B");
if (temp_mesh_resuls.size() != 0) {
generate_new_volume(m_diff_delete_input, *temp_mesh_resuls.begin());
m_warning_text = "";
m_warning_texts[index] = "";
}
else {
m_warning_text = warning_text_common;
m_warning_texts[index] = warning_text_common;
}
}
}
@ -365,14 +368,17 @@ void GLGizmoMeshBoolean::on_render_input_window(float x, float y, float bottom_l
Slic3r::MeshBoolean::mcut::make_boolean(temp_src_mesh, temp_tool_mesh, temp_mesh_resuls, "INTERSECTION");
if (temp_mesh_resuls.size() != 0) {
generate_new_volume(m_inter_delete_input, *temp_mesh_resuls.begin());
m_warning_text = "";
m_warning_texts[index] = "";
}
else {
m_warning_text = warning_text_intersection;
m_warning_texts[index] = warning_text_intersection;
}
}
}
if (index >= 0 && index < m_warning_texts.size()) {
render_input_window_warning(m_warning_texts[index]);
}
render_input_window_warning(m_warning_text);
float win_w = ImGui::GetWindowWidth();
if (last_w != win_w || last_y != y) {

View File

@ -16,7 +16,7 @@ enum class MeshBooleanSelectingState {
};
enum class MeshBooleanOperation{
Undef,
Undef =-1,
Union,
Difference,
Intersection,
@ -77,7 +77,7 @@ private:
MeshBooleanSelectingState m_selecting_state;
bool m_diff_delete_input = false;
bool m_inter_delete_input = false;
std::string m_warning_text;
std::array<std::string,3> m_warning_texts;
VolumeInfo m_src;
VolumeInfo m_tool;