This commit is contained in:
yw4z 2025-12-24 13:02:25 +08:00 committed by GitHub
commit 82d2eeaaec
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 41 additions and 1 deletions

View file

@ -82,7 +82,7 @@ ColorRGBA PartPlate::UNSELECT_DARK_COLOR = { 0.384f, 0.384f, 0.412f, 1.0f };
ColorRGBA PartPlate::DEFAULT_COLOR = { 0.5f, 0.5f, 0.5f, 1.0f };
ColorRGBA PartPlate::LINE_TOP_COLOR = { 0.89f, 0.89f, 0.89f, 1.0f };
ColorRGBA PartPlate::LINE_TOP_DARK_COLOR = { 0.431f, 0.431f, 0.463f, 1.0f };
ColorRGBA PartPlate::LINE_TOP_SEL_COLOR = { 0.5294f, 0.5451, 0.5333f, 1.0f};
ColorRGBA PartPlate::LINE_TOP_SEL_COLOR = { 0.4294f, 0.4451, 0.4333f, 1.0f};
ColorRGBA PartPlate::LINE_TOP_SEL_DARK_COLOR = { 0.298f, 0.298f, 0.3333f, 1.0f};
ColorRGBA PartPlate::LINE_BOTTOM_COLOR = { 0.8f, 0.8f, 0.8f, 0.4f };
ColorRGBA PartPlate::HEIGHT_LIMIT_TOP_COLOR = { 0.6f, 0.6f, 1.0f, 1.0f };
@ -525,6 +525,8 @@ static void init_raycaster_from_model(PickingModel& model)
void PartPlate::calc_gridlines(const ExPolygon& poly, const BoundingBox& pp_bbox) {
m_gridlines.reset();
m_gridlines_bolder.reset();
m_plate_axis_x.reset();
m_plate_axis_y.reset();
// calculate and generate grid
int step = Bed_2D::calculate_grid_step(pp_bbox, scale_(1.00));
@ -534,6 +536,23 @@ void PartPlate::calc_gridlines(const ExPolygon& poly, const BoundingBox& pp_bbox
Lines lines_thin = to_lines(grid_lines[0]);
Lines lines_bold = to_lines(grid_lines[1]);
// add axis lines
Point o_pt = Point(scaled_origin.x(), scaled_origin.y());
m_axis_on_plate = pp_bbox.contains(o_pt);
//m_axis_on_plate_min = pp_bbox.min == o_pt;
coord_t axis_end_x = m_axis_on_plate ? pp_bbox.max(0) : (o_pt.x() + scale_(step * 2));
coord_t axis_end_y = m_axis_on_plate ? pp_bbox.max(1) : (o_pt.y() + scale_(step * 2));
Polylines axis_pl_x = { Polyline(o_pt, Point(axis_end_x, o_pt.y())) };
Polylines axis_pl_y = { Polyline(o_pt, Point(o_pt.x(), axis_end_y)) };
if(m_axis_on_plate){ // reqired for custom / circular plates to prevent overflow
axis_pl_x = intersection_pl(axis_pl_x, offset(poly, SCALED_EPSILON));
axis_pl_y = intersection_pl(axis_pl_y, offset(poly, SCALED_EPSILON));
} // else its IDEX with clone or mirror mode. dont use clipping to show axis outside
Lines lines_axis_x = to_lines(axis_pl_x);
Lines lines_axis_y = to_lines(axis_pl_y);
// append bed contours
Lines contour_lines = to_lines(poly);
std::copy(contour_lines.begin(), contour_lines.end(), std::back_inserter(lines_thin));
@ -543,6 +562,12 @@ void PartPlate::calc_gridlines(const ExPolygon& poly, const BoundingBox& pp_bbox
if (!init_model_from_lines(m_gridlines_bolder, lines_bold, GROUND_Z_GRIDLINE))
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << "Unable to create bed grid lines\n";
if (!init_model_from_lines(m_plate_axis_x, lines_axis_x, GROUND_Z_GRIDLINE + 0.01))
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << "Unable to create bed grid x axis\n";
if (!init_model_from_lines(m_plate_axis_y, lines_axis_y, GROUND_Z_GRIDLINE + 0.01))
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << "Unable to create bed grid y axis\n";
}
void PartPlate::calc_height_limit() {
@ -977,6 +1002,17 @@ void PartPlate::render_grid(bool bottom) {
glsafe(::glLineWidth(2.0f * m_scale_factor));
m_gridlines_bolder.set_color(color);
m_gridlines_bolder.render();
if (m_selected){
//if(m_axis_on_plate_min) // use 2x width if lines on edge because half of it clipping
// glsafe(::glLineWidth(2.0f * m_scale_factor));
float opacity = m_partplate_list->m_is_dark ? (m_axis_on_plate ? .15f : .5f)
: (m_axis_on_plate ? .21f : .5f);
m_plate_axis_x.set_color({ ColorRGB::X().r(), ColorRGB::X().g(), ColorRGB::X().b(), opacity });
m_plate_axis_x.render();
m_plate_axis_y.set_color({ ColorRGB::Y().r(), ColorRGB::Y().g(), ColorRGB::Y().b(), opacity });
m_plate_axis_y.render();
}
}
void PartPlate::render_height_limit(PartPlate::HeightLimitMode mode)

View file

@ -135,6 +135,10 @@ private:
GLModel m_logo_triangles;
GLModel m_gridlines;
GLModel m_gridlines_bolder;
GLModel m_plate_axis_x;
GLModel m_plate_axis_y;
bool m_axis_on_plate;
//bool m_axis_on_plate_min;
GLModel m_height_limit_common;
GLModel m_height_limit_bottom;
GLModel m_height_limit_top;