From 6ecfdc4d8291a0e8dd651c4de089d1be1f50a04b Mon Sep 17 00:00:00 2001 From: Shai Seger Date: Mon, 3 Jun 2024 19:31:35 +0300 Subject: [PATCH] CAM: Simulator: A fix for Issue #14369: Wrong drill operation simulation (#14401) * remove redundant code * Fix G8x drill sequence bug. issue #14369 * fix bad simulation artifacts under Linux and QT. Issue #14369 --- src/Mod/CAM/PathSimulator/AppGL/DlgCAMSimulator.cpp | 9 ++------- src/Mod/CAM/PathSimulator/AppGL/DlgCAMSimulator.h | 8 ++++---- src/Mod/CAM/PathSimulator/AppGL/GCodeParser.cpp | 3 --- src/Mod/CAM/PathSimulator/AppGL/MillSimulation.cpp | 12 ++++++------ src/Mod/CAM/PathSimulator/AppGL/OpenGlWrapper.h | 3 +++ 5 files changed, 15 insertions(+), 20 deletions(-) diff --git a/src/Mod/CAM/PathSimulator/AppGL/DlgCAMSimulator.cpp b/src/Mod/CAM/PathSimulator/AppGL/DlgCAMSimulator.cpp index 3a61704d21..bff77663bf 100644 --- a/src/Mod/CAM/PathSimulator/AppGL/DlgCAMSimulator.cpp +++ b/src/Mod/CAM/PathSimulator/AppGL/DlgCAMSimulator.cpp @@ -24,17 +24,10 @@ #include "DlgCAMSimulator.h" #include "MillSimulation.h" -#include -#include #include #include -#include -#include #include -using namespace CAMSimulator; -using namespace MillSim; - QOpenGLContext* gOpenGlContext; using namespace MillSim; @@ -214,6 +207,8 @@ DlgCAMSimulator* DlgCAMSimulator::GetInstance() QSurfaceFormat format; format.setSamples(16); format.setSwapInterval(2); + format.setDepthBufferSize(24); + format.setStencilBufferSize(8); mInstance = new DlgCAMSimulator(); mInstance->setFormat(format); mInstance->resize(800, 600); diff --git a/src/Mod/CAM/PathSimulator/AppGL/DlgCAMSimulator.h b/src/Mod/CAM/PathSimulator/AppGL/DlgCAMSimulator.h index c3927be35d..a60b434860 100644 --- a/src/Mod/CAM/PathSimulator/AppGL/DlgCAMSimulator.h +++ b/src/Mod/CAM/PathSimulator/AppGL/DlgCAMSimulator.h @@ -25,11 +25,11 @@ #include #include - -#include #include - - +#include +#include +#include +#include namespace MillSim { diff --git a/src/Mod/CAM/PathSimulator/AppGL/GCodeParser.cpp b/src/Mod/CAM/PathSimulator/AppGL/GCodeParser.cpp index 3cb2f78332..4702f32838 100644 --- a/src/Mod/CAM/PathSimulator/AppGL/GCodeParser.cpp +++ b/src/Mod/CAM/PathSimulator/AppGL/GCodeParser.cpp @@ -222,9 +222,6 @@ bool GCodeParser::AddLine(const char* ptr) Operations.push_back(lastState); lastState.z = rPlane; Operations.push_back(lastState); - // restore original state - lastState.z = finalDepth; - lastState.cmd = eDril; } else { Operations.push_back(lastState); diff --git a/src/Mod/CAM/PathSimulator/AppGL/MillSimulation.cpp b/src/Mod/CAM/PathSimulator/AppGL/MillSimulation.cpp index 16223c2ae1..661df0a253 100644 --- a/src/Mod/CAM/PathSimulator/AppGL/MillSimulation.cpp +++ b/src/Mod/CAM/PathSimulator/AppGL/MillSimulation.cpp @@ -351,12 +351,12 @@ namespace MillSim { void MillSimulation::ProcessSim(unsigned int time_ms) { static int ancient = 0; - static int last = 0; - static int msec = 0; + static unsigned int last = 0; + static unsigned int msec = 0xFFFFFFFF; static int fps = 0; static int renderTime = 0; - last = msec; + last = msec == 0xFFFFFFFF ? time_ms : msec; msec = time_ms; if (mIsRotate) { mEyeRoration += (msec - last) / 4600.0f; @@ -447,9 +447,9 @@ namespace MillSim { { mEyeRoration += rotStep; if (mEyeRoration > PI2) - mEyeRoration = PI2; + mEyeRoration -= PI2; else if (mEyeRoration < 0) - mEyeRoration = 0; + mEyeRoration += PI2; } void MillSimulation::MoveEye(float x, float z) @@ -480,7 +480,7 @@ namespace MillSim { { // gray background glClearColor(0.6f, 0.8f, 1.0f, 1.0f); - + mEyeRoration = 0.0; // use shaders // standard diffuse shader diff --git a/src/Mod/CAM/PathSimulator/AppGL/OpenGlWrapper.h b/src/Mod/CAM/PathSimulator/AppGL/OpenGlWrapper.h index 11c144fb6b..92ad6483de 100644 --- a/src/Mod/CAM/PathSimulator/AppGL/OpenGlWrapper.h +++ b/src/Mod/CAM/PathSimulator/AppGL/OpenGlWrapper.h @@ -28,6 +28,9 @@ #include "DlgCAMSimulator.h" extern QOpenGLContext* gOpenGlContext; #define gSimWindow CAMSimulator::DlgCAMSimulator::GetInstance() +#define glClearColor gSimWindow->glClearColor +#define glBlendFunc gSimWindow->glBlendFunc +#define glClear gSimWindow->glClear #define glGenBuffers gSimWindow->glGenBuffers #define glBindBuffer gSimWindow->glBindBuffer #define glBufferData gSimWindow->glBufferData