Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,12 @@ target_sources( openemsh
"${CMAKE_CURRENT_SOURCE_DIR}/domain/geometrics/point.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/domain/geometrics/segment.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/domain/geometrics/edge.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/domain/geometrics/angle.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/domain/geometrics/range.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/domain/geometrics/polygon.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/domain/conflicts/conflict.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/domain/conflicts/conflict_colinear_edges.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/domain/conflicts/conflict_diagonal_or_circular_zone.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/domain/conflicts/conflict_edge_in_polygon.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/domain/conflicts/conflict_too_close_meshline_policies.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/domain/mesh/interval.cpp"
Expand Down Expand Up @@ -94,6 +96,8 @@ target_sources( openemsh_bin
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/edit/edit_dialog.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/edit/edit_model.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/edit/edit_model_global.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/edit/edit_model_angle.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/edit/edit_model_conflict_diagonal_or_circular_zone.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/edit/edit_model_conflict_too_close_meshline_policies.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/edit/edit_model_edge.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/edit/edit_model_interval.cpp"
Expand All @@ -103,7 +107,9 @@ target_sources( openemsh_bin
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/processing_view/processing_style.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/processing_view/processing_polygon.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/processing_view/processing_edge.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/processing_view/processing_angle.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/processing_view/processing_conflict_colinear_edges.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/processing_view/processing_conflict_diagonal_or_circular_zone.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/processing_view/processing_conflict_edge_in_polygon.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/processing_view/processing_conflict_too_close_meshline_policies.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/processing_view/processing_meshline_policy.cpp"
Expand All @@ -112,7 +118,9 @@ target_sources( openemsh_bin
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/processing_view/processing_scene.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/processing_view/processing_view.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/structure_view/structure_edge.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/structure_view/structure_angle.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/structure_view/structure_conflict_colinear_edges.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/structure_view/structure_conflict_diagonal_or_circular_zone.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/structure_view/structure_conflict_too_close_meshline_policies.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/structure_view/structure_meshline_policy.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ui/qt/structure_view/structure_meshline.cpp"
Expand Down
65 changes: 45 additions & 20 deletions src/app/openemsh.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@ using namespace std;
optional<Step> next(Step step) {
switch(step) {
case Step::ADJUST_EDGE_TO_MATERIAL:
return Step::DETECT_DIAG_ANGLES;
case Step::DETECT_DIAG_ANGLES:
return Step::DETECT_DIAG_ZONES;
case Step::DETECT_DIAG_ZONES:
return Step::SOLVE_DIAG_ZONES_ANGLES;
case Step::SOLVE_DIAG_ZONES_ANGLES:
return Step::DETECT_CONFLICT_EIP;
case Step::DETECT_CONFLICT_EIP:
return Step::DETECT_CONFLICT_CE;
Expand All @@ -39,6 +45,10 @@ optional<Step> next(Step step) {
case Step::DETECT_AND_SOLVE_TCMLP:
return Step::DETECT_INTERVALS;
case Step::DETECT_INTERVALS:
return Step::DETECT_INTERVALS_PER_DIAG_ZONES;
case Step::DETECT_INTERVALS_PER_DIAG_ZONES:
return Step::SOLVE_DIAG_ZONES_INTERVALS;
case Step::SOLVE_DIAG_ZONES_INTERVALS:
return Step::MESH;
case Step::MESH:
return nullopt;
Expand All @@ -53,16 +63,21 @@ set<Step> that_and_after(Step step) {

using enum Step;
switch(step) {
case ADJUST_EDGE_TO_MATERIAL: out.emplace(ADJUST_EDGE_TO_MATERIAL); [[fallthrough]];
case DETECT_CONFLICT_EIP: out.emplace(DETECT_CONFLICT_EIP); [[fallthrough]];
case DETECT_CONFLICT_CE: out.emplace(DETECT_CONFLICT_CE); [[fallthrough]];
case ADD_FIXED_MLP: out.emplace(ADD_FIXED_MLP); [[fallthrough]];
case SOLVE_ALL_EIP: out.emplace(SOLVE_ALL_EIP); [[fallthrough]];
case SOLVE_ALL_CE: out.emplace(SOLVE_ALL_CE); [[fallthrough]];
case DETECT_INDIVIDUAL_EDGES: out.emplace(DETECT_INDIVIDUAL_EDGES); [[fallthrough]];
case DETECT_AND_SOLVE_TCMLP: out.emplace(DETECT_AND_SOLVE_TCMLP); [[fallthrough]];
case DETECT_INTERVALS: out.emplace(DETECT_INTERVALS); [[fallthrough]];
case MESH: out.emplace(MESH); break;
case ADJUST_EDGE_TO_MATERIAL: out.emplace(ADJUST_EDGE_TO_MATERIAL); [[fallthrough]];
case DETECT_DIAG_ANGLES: out.emplace(DETECT_DIAG_ANGLES); [[fallthrough]];
case DETECT_DIAG_ZONES: out.emplace(DETECT_DIAG_ZONES); [[fallthrough]];
case SOLVE_DIAG_ZONES_ANGLES: out.emplace(SOLVE_DIAG_ZONES_ANGLES); [[fallthrough]];
case DETECT_CONFLICT_EIP: out.emplace(DETECT_CONFLICT_EIP); [[fallthrough]];
case DETECT_CONFLICT_CE: out.emplace(DETECT_CONFLICT_CE); [[fallthrough]];
case ADD_FIXED_MLP: out.emplace(ADD_FIXED_MLP); [[fallthrough]];
case SOLVE_ALL_EIP: out.emplace(SOLVE_ALL_EIP); [[fallthrough]];
case SOLVE_ALL_CE: out.emplace(SOLVE_ALL_CE); [[fallthrough]];
case DETECT_INDIVIDUAL_EDGES: out.emplace(DETECT_INDIVIDUAL_EDGES); [[fallthrough]];
case DETECT_AND_SOLVE_TCMLP: out.emplace(DETECT_AND_SOLVE_TCMLP); [[fallthrough]];
case DETECT_INTERVALS: out.emplace(DETECT_INTERVALS); [[fallthrough]];
case DETECT_INTERVALS_PER_DIAG_ZONES: out.emplace(DETECT_INTERVALS_PER_DIAG_ZONES); [[fallthrough]];
case SOLVE_DIAG_ZONES_INTERVALS: out.emplace(SOLVE_DIAG_ZONES_INTERVALS); [[fallthrough]];
case MESH: out.emplace(MESH); break;
default: ::unreachable();
}

Expand Down Expand Up @@ -151,16 +166,21 @@ void OpenEMSH::run(std::set<Step> const& steps) const {
};

using enum Step;
handle(ADJUST_EDGE_TO_MATERIAL, [&] { board->adjust_edges_to_materials(); });
handle(DETECT_CONFLICT_EIP, [&] { board->detect_edges_in_polygons(); });
handle(DETECT_CONFLICT_CE, [&] { board->detect_colinear_edges(); });
handle(ADD_FIXED_MLP, [&] { board->add_fixed_meshline_policies(); });
handle(SOLVE_ALL_EIP, [&] { board->auto_solve_all_edge_in_polygon(); });
handle(SOLVE_ALL_CE, [&] { board->auto_solve_all_colinear_edges(); });
handle(DETECT_INDIVIDUAL_EDGES, [&] { board->detect_individual_edges(); });
handle(DETECT_AND_SOLVE_TCMLP, [&] { board->detect_and_solve_too_close_meshline_policies(); });
handle(DETECT_INTERVALS, [&] { board->detect_intervals(); });
handle(MESH, [&] { board->mesh(); });
handle(ADJUST_EDGE_TO_MATERIAL, [&] { board->adjust_edges_to_materials(); });
handle(DETECT_DIAG_ANGLES, [&] { board->detect_diagonal_angles(); });
handle(DETECT_DIAG_ZONES, [&] { board->detect_diagonal_zones(); });
handle(SOLVE_DIAG_ZONES_ANGLES, [&] { board->solve_diagonal_zones_angles(); });
handle(DETECT_CONFLICT_EIP, [&] { board->detect_edges_in_polygons(); });
handle(DETECT_CONFLICT_CE, [&] { board->detect_colinear_edges(); });
handle(ADD_FIXED_MLP, [&] { board->add_fixed_meshline_policies(); });
handle(SOLVE_ALL_EIP, [&] { board->auto_solve_all_edge_in_polygon(); });
handle(SOLVE_ALL_CE, [&] { board->auto_solve_all_colinear_edges(); });
handle(DETECT_INDIVIDUAL_EDGES, [&] { board->detect_individual_edges(); });
handle(DETECT_AND_SOLVE_TCMLP, [&] { board->detect_and_solve_too_close_meshline_policies(); });
handle(DETECT_INTERVALS, [&] { board->detect_intervals(); });
handle(DETECT_INTERVALS_PER_DIAG_ZONES, [&] { board->detect_intervals_per_diagonal_zones(); });
handle(SOLVE_DIAG_ZONES_INTERVALS, [&] { board->solve_diagonal_zones_intervals(); });
handle(MESH, [&] { board->mesh(); });

Caretaker::singleton().remember_current_timepoint();
}
Expand All @@ -169,6 +189,9 @@ void OpenEMSH::run(std::set<Step> const& steps) const {
void OpenEMSH::run_all_steps() const {
run({
Step::ADJUST_EDGE_TO_MATERIAL,
Step::DETECT_DIAG_ANGLES,
Step::DETECT_DIAG_ZONES,
Step::SOLVE_DIAG_ZONES_ANGLES,
Step::DETECT_CONFLICT_EIP,
Step::DETECT_CONFLICT_CE,
Step::ADD_FIXED_MLP,
Expand All @@ -177,6 +200,8 @@ void OpenEMSH::run_all_steps() const {
Step::DETECT_INDIVIDUAL_EDGES,
Step::DETECT_AND_SOLVE_TCMLP,
Step::DETECT_INTERVALS,
Step::DETECT_INTERVALS_PER_DIAG_ZONES,
Step::SOLVE_DIAG_ZONES_INTERVALS,
Step::MESH
});
}
Expand Down
28 changes: 19 additions & 9 deletions src/app/steps.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ namespace app {
//******************************************************************************
enum class Step {
ADJUST_EDGE_TO_MATERIAL,
DETECT_DIAG_ANGLES,
DETECT_DIAG_ZONES,
SOLVE_DIAG_ZONES_ANGLES,
DETECT_CONFLICT_EIP,
DETECT_CONFLICT_CE,
ADD_FIXED_MLP,
Expand All @@ -23,6 +26,8 @@ enum class Step {
DETECT_INDIVIDUAL_EDGES,
DETECT_AND_SOLVE_TCMLP,
DETECT_INTERVALS,
DETECT_INTERVALS_PER_DIAG_ZONES,
SOLVE_DIAG_ZONES_INTERVALS,
MESH
};

Expand All @@ -33,15 +38,20 @@ inline std::size_t index(std::optional<Step> step) {

switch(step.value()) {
case Step::ADJUST_EDGE_TO_MATERIAL: return 1;
case Step::DETECT_CONFLICT_EIP: return 2;
case Step::DETECT_CONFLICT_CE: return 3;
case Step::ADD_FIXED_MLP: return 4;
case Step::SOLVE_ALL_EIP: return 5;
case Step::SOLVE_ALL_CE: return 6;
case Step::DETECT_INDIVIDUAL_EDGES: return 7;
case Step::DETECT_AND_SOLVE_TCMLP: return 8;
case Step::DETECT_INTERVALS: return 9;
case Step::MESH: return 10;
case Step::DETECT_DIAG_ANGLES: return 2;
case Step::DETECT_DIAG_ZONES: return 3;
case Step::SOLVE_DIAG_ZONES_ANGLES: return 4;
case Step::DETECT_CONFLICT_EIP: return 5;
case Step::DETECT_CONFLICT_CE: return 6;
case Step::ADD_FIXED_MLP: return 7;
case Step::SOLVE_ALL_EIP: return 8;
case Step::SOLVE_ALL_CE: return 9;
case Step::DETECT_INDIVIDUAL_EDGES: return 10;
case Step::DETECT_AND_SOLVE_TCMLP: return 11;
case Step::DETECT_INTERVALS: return 12;
case Step::DETECT_INTERVALS_PER_DIAG_ZONES: return 13;
case Step::SOLVE_DIAG_ZONES_INTERVALS: return 14;
case Step::MESH: return 15;
default: ::unreachable();
}
}
Expand Down
Loading
Loading