Implemented showing program extents

This commit is contained in:
2023-05-07 11:05:01 +03:00
parent 4556ddb746
commit 71e51c5033
4 changed files with 160 additions and 2 deletions
+86 -2
View File
@@ -98,16 +98,24 @@ public:
});
info_layer = tab_widget->add<Widget>();
tab_widget->append_tab("Info", info_layer);
info_layer->set_layout(new GroupLayout(10, 20, 30, 0));
info_layer->add<Label>("");
tab_widget->append_tab("Info", info_layer);
auto probe_layer = tab_widget->add<Widget>();
probe_layer->set_layout(new GroupLayout(10, 20, 30, 0));
probe_layer->add<Label>("");
tab_widget->append_tab("Probing", info_layer);
add_status_markup();
add_dro_markup();
add_program_extents();
add_pins_markup();
add_jogging_markup();
add_work_parameters_markup();
add_z_probe_markup();
perform_layout();
@@ -117,6 +125,33 @@ public:
m_render_pass->set_cull_mode(RenderPass::CullMode::Disabled);
}
TextBox *txt_min_z, *txt_feed;
void add_z_probe_markup() {
info_layer->add<Label>("Z-Probe", "sans-bold", 20);
auto z_probe_holder = info_layer->add<Widget>();
z_probe_holder->set_layout(new BoxLayout(Orientation::Vertical, Alignment::Fill, 2, 2));
auto another_holder = z_probe_holder->add<Widget>();
another_holder->set_layout(new GridLayout(Orientation::Horizontal, 2, Alignment::Fill, 2, 2));
another_holder->add<Label>("Feed", "sans-bold");
txt_feed = another_holder->add<TextBox>("100");
txt_feed->set_editable(true);
txt_feed->set_fixed_width(100);
another_holder->add<Label>("Min Z", "sans-bold");
txt_min_z = another_holder->add<TextBox>("-65");
txt_min_z->set_editable(true);
txt_min_z->set_fixed_width(100);
z_probe_holder->add<Label>("");
auto btn_start_probing = z_probe_holder->add<Button>("Start probing");
btn_start_probing->set_callback([&]() {
cnc.start_z_probe(std::stof(txt_min_z->value()), std::stof(txt_feed->value()));
});
}
void add_work_parameters_markup() {
// work parameters
info_layer->add<Label>("Work parameters", "sans-bold", 20);
@@ -151,6 +186,7 @@ public:
if (pgm.load_from_file(path)) {
init_program_geometry();
set_program_extents();
} else {
}
});
@@ -383,6 +419,31 @@ public:
});
}
TextBox *extents_min_x, *extents_max_x;
TextBox *extents_min_y, *extents_max_y;
TextBox *extents_min_z, *extents_max_z;
void add_program_extents() {
dro_ss << std::setprecision(3) << std::fixed;
// Program extents
info_layer->add<Label>("Program extents", "sans-bold", 20);
auto extents_holder = info_layer->add<Widget>();
extents_holder->set_layout(new GridLayout(Orientation::Horizontal, 3, Alignment::Fill, 4, 4));
extents_holder->add<Label>("X", "sans-bold", 20);
extents_min_x = extents_holder->add<TextBox>("");
extents_max_x = extents_holder->add<TextBox>("");
extents_holder->add<Label>("Y", "sans-bold", 20);
extents_min_y = extents_holder->add<TextBox>("");
extents_max_y = extents_holder->add<TextBox>("");
extents_holder->add<Label>("Z", "sans-bold", 20);
extents_min_z = extents_holder->add<TextBox>("");
extents_max_z = extents_holder->add<TextBox>("");
}
void add_pins_markup() {
// Pins
info_layer->add<Label>("Pins", "sans-bold", 20);
@@ -501,6 +562,20 @@ public:
cam_src_rotation = glm::quat(1.0, 0.0, 0.0, 0.0);
}
void set_program_extents() {
auto min = renderer.get_extents_min();
auto max = renderer.get_extents_max();
extents_min_x->set_value(std::to_string(min.x));
extents_max_x->set_value(std::to_string(max.x));
extents_min_y->set_value(std::to_string(min.y));
extents_max_y->set_value(std::to_string(max.y));
extents_min_z->set_value(std::to_string(min.z));
extents_max_z->set_value(std::to_string(max.z));
}
bool resize_event(const Vector2i& size) override {
// window->set_fixed_height(this->height() / 2);
tab_widget->set_fixed_height((this->height() - 30));
@@ -589,6 +664,15 @@ public:
last_alarm = alarm;
}
void on_probe_result(bool probe_touched, float *probe_coords) override {
std::stringstream ss;
ss << "Probing ended. Result: " << std::boolalpha << probe_touched << " at coords: ";
for (auto i = 0; i < 3; i++) {
ss << probe_coords[i] << ", ";
}
new MessageDialog(this, MessageDialog::Type::Warning, "Probe result", ss.str());
}
void on_check_completed(bool success, size_t failed_index, size_t error) override {
btn_check_program->set_background_color(success ? colGreen : color_red);
if (success) {