74d34fcd1e
- aggiunta classe MaximumFiller che risolve il problema del Nesting 1D.
55 lines
1.9 KiB
C++
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 ;
|
|
} ;
|