Ejemplo n.º 1
0
        public IObjectFittingStrategy <Object3D, SubContainer3D> Create3D(ObjectFittingStrategy objectFittingStrategy)
        {
            switch (objectFittingStrategy)
            {
            case (ObjectFittingStrategy.BestVolumeFit):
                return(new BestVolumeObjectFittingStrategy3D());

            case (ObjectFittingStrategy.WorstVolumeFit):
                return(new WorstVolumeObjectFittingStrategy3D());

            case (ObjectFittingStrategy.BestLongSideFit):
                return(new BestLongSideObjectFittingStrategy3D());

            case (ObjectFittingStrategy.BestShortSideFit):
                return(new BestShortSideObjectFittingStrategy3D());

            case (ObjectFittingStrategy.WorstLongSideFit):
                return(new WorstLongSideObjectFittingStrategy3D());

            case (ObjectFittingStrategy.WorstShortSideFit):
                return(new WorstShortSideObjectFittingStrategy3D());

            default:
                throw new NotSuchAlgorithmException();
            }
        }
Ejemplo n.º 2
0
        public IObjectFittingStrategy <Object2D, SubContainer2D> Create2D(ObjectFittingStrategy objectFittingStrategy)
        {
            switch (objectFittingStrategy)
            {
            case (ObjectFittingStrategy.BestAreaFit):
                return(new BestAreaObjectFittingStrategy2D());

            case (ObjectFittingStrategy.WorstAreaFit):
                return(new WorstAreaObjectFittingStrategy2D());

            case (ObjectFittingStrategy.BestLongSideFit):
                return(new BestLongSideObjectFittingStrategy2D());

            case (ObjectFittingStrategy.BestShortSideFit):
                return(new BestShortSideObjectFittingStrategy2D());

            case (ObjectFittingStrategy.WorstLongSideFit):
                return(new WorstLongSideObjectFittingStrategy2D());

            case (ObjectFittingStrategy.WorstShortSideFit):
                return(new WorstShortSideObjectFittingStrategy2D());

            case (ObjectFittingStrategy.BottomLeft):
                return(new BottomLeftObjectFittingStrategy2D());

            default:
                throw new NotSuchAlgorithmException();
            }
        }
Ejemplo n.º 3
0
        private IAlgorithm Create2DShelfAlgorithm(ObjectFittingStrategy fittingStrategy, Container2D initialContainer)
        {
            switch (fittingStrategy)
            {
            case (ObjectFittingStrategy.FirstFit):
                return(new FirstFitShelf2DAlgorithm(initialContainer));

            case (ObjectFittingStrategy.NextFit):
                return(new NextFitShelf2DAlgorithm(initialContainer));

            case (ObjectFittingStrategy.BestWidthFit):
                return(new BestFitWidthShelf2DAlgorithm(initialContainer));

            case (ObjectFittingStrategy.BestHeightFit):
                return(new BestFitHeightShelf2DAlgorithm(initialContainer));

            case (ObjectFittingStrategy.BestAreaFit):
                return(new BestFitAreaShelf2DAlgorithm(initialContainer));

            case (ObjectFittingStrategy.WorstAreaFit):
                return(new WorstFitAreaShelf2DAlgorithm(initialContainer));

            case (ObjectFittingStrategy.WorstWidthFit):
                return(new WorstFitWidthShelf2DAlgorithm(initialContainer));

            default:
                throw new NotSuchAlgorithmException();
            }
        }
Ejemplo n.º 4
0
        private IAlgorithm Create3DGuillotineAlgorithm(ObjectFittingStrategy fittingStrategy, ContainerSplittingStrategy splittingStrategy, Container3D initialContainer)
        {
            var strategyInstance = objectFittingStrategyFactory.Create3D(fittingStrategy) as AbstractFittingStrategy3D;

            switch (splittingStrategy)
            {
            case (ContainerSplittingStrategy.MaxVolumeSplitRule):
                return(new MaxVolumeGuillotineCut3DAlgorithm(initialContainer, strategyInstance));

            case (ContainerSplittingStrategy.MinVolumeSplitRule):
                return(new MinVolumeGuillotineCut3DAlgorithm(initialContainer, strategyInstance));

            case (ContainerSplittingStrategy.LongerAxisSplitRule):
                return(new LongerAxisGuillotineCut3DAlgorithm(initialContainer, strategyInstance));

            case (ContainerSplittingStrategy.LongerLeftoverAxisSplitRule):
                return(new LongerLeftoverAxisGuillotineCut3DAlgorithm(initialContainer, strategyInstance));

            case (ContainerSplittingStrategy.ShorterAxisSplitRule):
                return(new ShorterAxisGuillotineCut3DAlgorithm(initialContainer, strategyInstance));

            case (ContainerSplittingStrategy.ShorterLeftoverAxisSplitRule):
                return(new ShorterLeftoverAxisGuillotineCut3DAlgorithm(initialContainer, strategyInstance));

            default:
                throw new NotSuchAlgorithmException();
            }
        }
Ejemplo n.º 5
0
        private IAlgorithm Create3DShelfAlgorithm(ObjectFittingStrategy fittingStrategy, Container3D initialContainer)
        {
            switch (fittingStrategy)
            {
            case (ObjectFittingStrategy.NextFit):
                return(new NextFitShelf3DAlgorithm(initialContainer));

            case (ObjectFittingStrategy.FirstFit):
                return(new FirstFitShelf3DAlgorithm(initialContainer));

            default:
                throw new NotSuchAlgorithmException();
            }
        }
Ejemplo n.º 6
0
        private IAlgorithm Create2DSkylineAlgorithm(ObjectFittingStrategy fittingStrategy, Container2D initialContainer)
        {
            switch (fittingStrategy)
            {
            case (ObjectFittingStrategy.BestFitFirstContainer):
                return(new BestFitFirstContainerSkyline2DAlgorithm(initialContainer));

            case (ObjectFittingStrategy.BestFitBestContainer):
                return(new BestFitBestContainerSkyline2DAlgorithm(initialContainer));

            case (ObjectFittingStrategy.BottomLeft):
                return(new BottomLeftSkyline2DAlgorithm(initialContainer));

            default:
                throw new NotSuchAlgorithmException();
            }
        }