Files
EgtNumKernel/MaximumFiller.h
Dario Sassi 74d34fcd1e EgtNumKernel 2.2k1 :
- aggiunta classe MaximumFiller che risolve il problema del Nesting 1D.
2020-11-06 12:09:25 +00:00

55 lines
1.9 KiB
C++

//----------------------------------------------------------------------------
// 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 <vector>
//----------------------------------------------------------------------------
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<Part> 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 ;
} ;