| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #ifndef PATHSIMULATOR_CAMSimulatorGui_H |
| | #define PATHSIMULATOR_CAMSimulatorGui_H |
| |
|
| | #ifdef _MSC_VER |
| | # pragma warning(disable : 4251) |
| | #endif |
| |
|
| | #include <Mod/Part/App/TopoShape.h> |
| | #include <QWindow> |
| | #include <QOpenGLExtraFunctions> |
| | #include <QPainter> |
| | #include <QExposeEvent> |
| | #include <QResizeEvent> |
| | #include <QMouseEvent> |
| | #include <QOpenGLContext> |
| |
|
| | namespace MillSim |
| | { |
| | |
| | class MillSimulation; |
| | struct Vertex; |
| | } |
| |
|
| | namespace CAMSimulator |
| | { |
| |
|
| | struct SimStock |
| | { |
| | public: |
| | SimStock(float px, float py, float pz, float lx, float ly, float lz, float res); |
| | ~SimStock(); |
| |
|
| | public: |
| | float mPx, mPy, mPz; |
| | float mLx, mLy, mLz; |
| | }; |
| |
|
| | class DlgCAMSimulator: public QWindow, public QOpenGLExtraFunctions |
| | { |
| | Q_OBJECT |
| | public: |
| | explicit DlgCAMSimulator(QWindow* parent = nullptr); |
| | ~DlgCAMSimulator() override; |
| |
|
| | virtual void render(QPainter* painter); |
| | virtual void render(); |
| | virtual void initialize(); |
| |
|
| | void setAnimating(bool animating); |
| | static DlgCAMSimulator* GetInstance(); |
| | void SetStockShape(const Part::TopoShape& tshape, float resolution); |
| | void SetBaseShape(const Part::TopoShape& tshape, float resolution); |
| |
|
| | public: |
| | void renderLater(); |
| | void renderNow(); |
| | void startSimulation(const Part::TopoShape& stock, float quality); |
| | void resetSimulation(); |
| | void addGcodeCommand(const char* cmd); |
| | void addTool( |
| | const std::vector<float>& toolProfilePoints, |
| | int toolNumber, |
| | float diameter, |
| | float resolution |
| | ); |
| |
|
| | protected: |
| | bool event(QEvent* event) override; |
| | void checkInitialization(); |
| | void doGlCleanup(); |
| | void exposeEvent(QExposeEvent* event) override; |
| | void mouseMoveEvent(QMouseEvent* ev) override; |
| | void mousePressEvent(QMouseEvent* ev) override; |
| | void mouseReleaseEvent(QMouseEvent* ev) override; |
| | void wheelEvent(QWheelEvent* ev) override; |
| | void hideEvent(QHideEvent* ev) override; |
| | void resizeEvent(QResizeEvent* event) override; |
| | void GetMeshData( |
| | const Part::TopoShape& tshape, |
| | float resolution, |
| | std::vector<MillSim::Vertex>& verts, |
| | std::vector<GLushort>& indices |
| | ); |
| |
|
| | private: |
| | bool mAnimating = false; |
| | bool mNeedsInitialize = false; |
| |
|
| | QOpenGLContext* mContext = nullptr; |
| | QOpenGLContext* mLastContext = nullptr; |
| | MillSim::MillSimulation* mMillSimulator = nullptr; |
| | static DlgCAMSimulator* mInstance; |
| | float mQuality = 10; |
| | }; |
| |
|
| |
|
| | } |
| |
|
| |
|
| | #endif |
| |
|