//---------------------------------------------------------------------------- // EgalTech 2017-2017 //---------------------------------------------------------------------------- // File : Tool.h Data : 28.11.17 Versione : 1.8l1 // Contenuto : Dichiarazione della classe Tool. // // // // Modifiche : 22.01.15 DS Creazione modulo. // // //---------------------------------------------------------------------------- #pragma once #include "CurveComposite.h" //---------------------------------------------------------------------------- class Tool { public : Tool( void) ; ~Tool( void) ; public : bool SetTolerances( double dLinTol, double dAngTolDeg = 90) ; bool SetStdTool( const std::string& sToolName, double dH, double dR, double dCornR, int nToolNum) ; bool SetAdvTool( const std::string& sToolName, double dH, double dR, double dTipH, double dTipR, double dCornR, int nToolNum) ; bool SetGenTool( const std::string& sToolName, const ICurveComposite* pToolOutline, int nToolNum) ; bool SetMortiserTool( const std::string& sToolName, double dH, double dW, double dTh, double dRc, int nToolNum) ; bool SetChiselTool( const std::string& sToolName, double dH, double dW, double dTh, int nToolNum) ; int GetType() const { return m_nType ; } int GetCurrentToolNum() const { return m_nCurrentNum ; } double GetHeigth() const { return m_dHeight ; } double GetTipHeigth() const { return m_dTipHeight ; } double GetRadius() const { return m_dRadius ; } double GetTipRadius() const { return m_dTipRadius ; } double GetCornRadius() const { return m_dRCorner ; } double GetMrtChsWidth() const { return m_dMrtChsWidth ; } double GetMrtChsThickness() const { return m_dMrtChsThickness ; } const CurveComposite * GetOutline() { // Se l'utensile non è stato approssimato uso l'originale if ( m_ArcLineApprox.GetCurveCount() == 0) return ( & m_Outline) ; // altrimenti uso l'approssimazione else return ( & m_ArcLineApprox) ; } public : enum ToolType { UNDEF = 0, // Utensile indefinito GEN = 1, // Generico da profilo -> usare SetTool CYLMILL = 2, // Cilindrica BALLMILL = 3, // Sferica BULLNOSEMILL = 4, // Naso di toro CONUSMILL = 5, // Con parte terminale conica MORTISER = 6, // Mortasatrice CHISEL = 7} ; // Scalpello private : double m_dLinTol ; // Dati per utensile double m_dAngTolDeg ; std::string m_sName ; int m_nType ; int m_nCurrentNum ; CurveComposite m_Outline ; CurveComposite m_ArcLineApprox ; double m_dHeight ; double m_dTipHeight ; double m_dRadius ; double m_dRCorner ; double m_dTipRadius ; double m_dMrtChsWidth ; double m_dMrtChsThickness ; } ;