From 55e79f0d7179f5105eff11897bb3926a8f7b36cb Mon Sep 17 00:00:00 2001 From: Nikita Kostovsky Date: Wed, 7 Jan 2026 02:10:04 +0100 Subject: add x start/end range; implement export to .scad --- src/graphicsscene.cpp | 47 +++++++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 20 deletions(-) (limited to 'src/graphicsscene.cpp') diff --git a/src/graphicsscene.cpp b/src/graphicsscene.cpp index d7e0bba..0bb8e32 100644 --- a/src/graphicsscene.cpp +++ b/src/graphicsscene.cpp @@ -209,7 +209,7 @@ GraphicsScene::GraphicsScene(QObject* parent) QBrush{Qt::green, Qt::DiagCrossPattern} ); m_xzDebugItem->setOpacity(0.1); - m_xzDebugItem->setParentItem(m_laserBodyItem); + // m_xzDebugItem->setParentItem(m_laserBodyItem); } void GraphicsScene::update(OpticalDesign* design) @@ -589,6 +589,7 @@ void GraphicsScene::update(OpticalDesign* design) design->get_laserBodyLengthMm() ) ); + m_laserBodyItem->setPos(QPointF{design->get_laserZOffsetMm(), 0.}); m_scannerBodyFrontWallItem->setRect( orphex::scannerBodyFrontWallRect( @@ -604,32 +605,38 @@ void GraphicsScene::update(OpticalDesign* design) } { - const auto item = m_actualRangeItem; - const auto line = item->line(); - const auto x1 = item->mapToScene(line.p1()).x(); - const auto x2 = item->mapToScene(line.p2()).x(); + const auto zRangeItem = m_actualRangeItem; + const auto line = zRangeItem->line(); + + const auto zBase = zRangeItem->mapToScene(line.p1()).x(); + const auto zEnd = zRangeItem->mapToScene(line.p2()).x(); + + const auto xStartRight = + imageToObject(m_xzSensorItem->rect().topLeft()).y(); + const auto xStartLeft = + imageToObject(m_xzSensorItem->rect().bottomLeft()).y(); + + const auto xEndRight = + imageToObject(m_xzSensorItem->rect().topRight()).y(); + const auto xEndLeft = + imageToObject(m_xzSensorItem->rect().bottomRight()).y(); + + design->set_actualXStartMm(-(xStartRight - xStartLeft)); + design->set_actualXEndMm(-(xEndRight - xEndLeft)); + QPolygonF xzActualRangePolygon{QList{ - QPointF{x1, imageToObject(m_xzSensorItem->rect().topLeft()).y()}, - QPointF{x1, imageToObject(m_xzSensorItem->rect().bottomLeft()).y()}, - QPointF{ - x2, - imageToObject(m_xzSensorItem->rect().bottomRight()).y() - }, - QPointF{x2, imageToObject(m_xzSensorItem->rect().topRight()).y()}, + QPointF{zBase, xStartRight}, + QPointF{zBase, xStartLeft}, + QPointF{zEnd, xEndLeft}, + QPointF{zEnd, xEndRight}, }}; m_xzActualRangeAreaItem->setPolygon(xzActualRangePolygon); m_xzDebugItem->setPolygon( QPolygonF{QList{ QPointF{0., 0.}, - QPointF{ - x1, - imageToObject(m_xzSensorItem->rect().topLeft()).y() - }, - QPointF{ - x1, - imageToObject(m_xzSensorItem->rect().bottomLeft()).y() - }, + QPointF{zBase, xStartRight}, + QPointF{zBase, xStartLeft}, }} ); } -- cgit v1.2.3-70-g09d2