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(); } }
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(); } }
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(); } }
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(); } }
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(); } }
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(); } }