//---------------------------------------------------------------------------- // EgalTech 2015-2020 //---------------------------------------------------------------------------- // File : SawingData.h Data : 09.11.20 Versione : 2.2k2 // Contenuto : Dichiarazione della struct SawingData e costanti associate. // // // // Modifiche : 05.06.15 DS Creazione modulo. // // //---------------------------------------------------------------------------- #pragma once #include "MachiningData.h" //---------------------------------------------------------------------------- struct SawingData : public MachiningData { EgtUUID m_ToolUuid ; // identificativo universale dell'utensile std::string m_sToolName ; // nome dell'utensile std::string m_sInitAngs ; // angoli iniziali suggeriti (Nome1=val1,Nome2=val2) std::string m_sBlockedAxis ; // eventuale asse rotante bloccato (Nome=val) int m_nSolCh ; // criterio scelta soluzione (quando possibili molteplici) double m_dSpeed ; // velocità di rotazione (+ se CCW, - se CW) ( se 0 da utensile) double m_dFeed ; // velocità di lavorazione normale ( se 0 da utensile) double m_dStartFeed ; // velocità di lavorazione iniziale ( se 0 da utensile) double m_dEndFeed ; // velocità di lavorazione finale ( se 0 da utensile) double m_dTipFeed ; // velocità di lavorazione di testa ( se 0 da utensile) double m_dBackFeed ; // velocità di lavorazione dell'ultimo ritorno ( se 0 da utensile) double m_dSideAngFeed ; // velocità di lavorazione dei tagli inclinati ( se 0 da utensile) double m_dOffsR ; // offset radiale ( se UNKNOWN_PAR da utensile) double m_dOffsL ; // offset longitudinale ( se UNKNOWN_PAR da utensile) bool m_bInvert ; // flag di inversione direzione lavorazione int m_nWorkSide ; // lato di lavoro (destra, sinistra, centro) int m_nHeadSide ; // lato di posizionamento del mandrino ( destra o sinistra) std::string m_sDepth ; // affondamento (espressione numerica) double m_dStartPos ; // quota di inizio lavorazione (sempre >= 0) double m_dStep ; // passo di affondamento (0=nessun passo) double m_dStepBack ; // passo di affondamento al ritorno (0=nessun passo) double m_dStepLast ; // passo di affondamento finale double m_dStepSideAng ; // passo di affondameto su tagli inclinati (0=nessun passo) double m_dStepSideAngBack ;// passo di affondameto su tagli inclinati al ritorno (0=nessun passo) double m_dStepExtArc ; // passo di affondamento su esterno archi (0=nessun passo) double m_dStepIntArc ; // passo di affondamento su interno archi (0=nessun passo) int m_nStepType ; // tipo di lavorazione a step (a gradini, una via, va e vieni) double m_dSideAngle ; // angolo di sbandamento (0..+60deg, 99=auto) double m_dStartAddLen ; // lunghezza addizionale da aggiungere all'inizio double m_dEndAddLen ; // lunghezza addizionale da aggiungere alla fine int m_nLeadInType ; // tipo di attacco (interno, centro, fuori, esteso, esteso fuori) double m_dLiTang ; // distanza tangente da inizio attacco double m_dLiElev ; // step di attacco int m_nExtLinkType ; // tipo di collegamento su ang esterno ( centro, esteso prec, esteso succ, esteso minore) int m_nLeadOutType ; // tipo di uscita (interno, centro, esteso) int m_nCurveUse ; // gestione delle curve(salta, approssima, convesso, fai) double m_dApprox ; // valore di approssimazione per curve std::string m_sSysNotes ; // note interne std::string m_sUserNotes ; // note dell'utente SawingData( void) : m_ToolUuid(), m_nSolCh( 0), m_dSpeed( 0), m_dFeed( 0), m_dStartFeed( 0), m_dEndFeed( 0), m_dTipFeed( 0), m_dBackFeed( 0), m_dSideAngFeed( 0), m_dOffsR( UNKNOWN_PAR), m_dOffsL( UNKNOWN_PAR), m_bInvert( false), m_nWorkSide( 0), m_nHeadSide(0), m_dStartPos( 0), m_dStep( 0), m_dStepBack( UNKNOWN_PAR), m_dStepLast( UNKNOWN_PAR), m_dStepSideAng( UNKNOWN_PAR), m_dStepSideAngBack( UNKNOWN_PAR), m_dStepExtArc( 0), m_dStepIntArc( 0), m_nStepType( 0), m_dSideAngle( 0), m_dStartAddLen(0), m_dEndAddLen(0), m_nLeadInType( 0), m_dLiTang(0), m_dLiElev(0), m_nExtLinkType( 0), m_nLeadOutType( 0), m_nCurveUse( 0), m_dApprox( 0) {} SawingData* Clone( void) const override ; bool CopyFrom( const MachiningData* pMdata) override ; bool SameAs(const MachiningData* pMdata) const override ; int GetType( void) const override { return MT_SAWING ; } int GetSize( void) const override ; std::string GetTitle( void) const override ; bool FromString( const std::string& sString, int& nKey) override ; std::string ToString( int nInd) const override ; bool IsOptional( int nKey) const override ; bool SetParam( int nType, bool bVal) override ; bool SetParam( int nType, int nVal) override ; bool SetParam( int nType, double dVal) override ; bool SetParam( int nType, const std::string& sVal) override ; bool ResetTool( void) override ; bool GetParam( int nType, bool& bVal) const override ; bool GetParam( int nType, int& nVal) const override ; bool GetParam( int nType, double& dVal) const override ; bool GetParam( int nType, std::string& sVal) const override ; bool GetTool( const ToolsMgr* pToolsMgr, const ToolData*& pTdata) const override ; bool VerifyTool( const ToolsMgr* pToolsMgr, const std::string& sVal, const ToolData*& pTdata) const override ; bool VerifySolCh( int nVal) const ; bool VerifyWorkSide( int nVal) const ; bool VerifyHeadSide( int nVal) const ; bool VerifyStepType( int nVal) const ; bool VerifyLeadInType( int nVal) const ; bool VerifyExtLinkType( int nVal) const ; bool VerifyLeadOutType( int nVal) const ; bool VerifyCurveUse( int nVal) const ; bool VerifySideAngle( double dVal) const ; } ; //---------------------------------------------------------------------------- inline const SawingData* GetSawingData( const MachiningData* pMdata) { if ( pMdata == nullptr || pMdata->GetType() != MT_SAWING) return nullptr ; return ( static_cast( pMdata)) ; } inline SawingData* GetSawingData( MachiningData* pMdata) { if ( pMdata == nullptr || pMdata->GetType() != MT_SAWING) return nullptr ; return ( static_cast( pMdata)) ; }