//---------------------------------------------------------------------------- // EgalTech 2020-2020 //---------------------------------------------------------------------------- // File : MaximumFiller.h Data : 05.11.20 Versione : 2.2k1 // Contenuto : Classe per il calcolo del massimo riempimento (nesting 1D). // // // // Modifiche : 05.11.20 DS Creazione modulo. // // //---------------------------------------------------------------------------- #pragma once #include "/EgtDev/Include/ENkMaximumFiller.h" #include //---------------------------------------------------------------------------- class MaximumFiller : public IMaximumFiller { public : bool Clear( void) override ; bool AddPart( int nPartId, double dLen) override ; bool AddPart( int nPartId, double dLen, double dDispLen, int nCount) override ; bool Compute( double dLenToFill, double dStartGap, double dMidGap, double dEndGap, int nSortType = 0) override ; bool GetResults( int& nFilledParts, int& nDiffParts, double& dTotFillRatio) const override ; bool GetOneResult( int nInd, int& nPartId, int& nCount) const override ; public : void Fill( double dLen, int nPos) ; private : struct Part { int nId ; double dLen ; double dDispLen ; int nCount ; Part( void) : nId( -1), dLen( 0), dDispLen( 0), nCount( 1) {} Part( int nI, double dL, double dDL, int nC) : nId( nI), dLen( dL), dDispLen( dDL), nCount( nC) {} } ; typedef std::vector PRTVECT ; private : double m_dLenToFill ; double m_dStartGap ; double m_dMidGap ; double m_dEndGap ; PRTVECT m_vpSou ; int m_nComb ; PRTVECT m_vpCurr ; double m_dBestDim ; PRTVECT m_vpBest ; } ;