public ILayer2D BuildLayer(Packable packable, Vector2D dimContainer, LayerDesc layerDesc, Vector2D actualDimensions, double minSpace) { ILayer2D layer = null; LayerPattern pattern = null; if (packable.IsBrick) { LayerDescBox layerDescBox = layerDesc as LayerDescBox; // instantiate layer layer = new Layer2D(packable.OuterDimensions, dimContainer, layerDescBox.PatternName, layerDescBox.AxisOrtho, layerDesc.Swapped) { ForcedSpace = minSpace }; // get layer pattern pattern = LayerPatternBox.GetByName(layerDesc.PatternName); } else if (packable.IsCylinder) { CylinderProperties cylProperties = packable as CylinderProperties; layer = new Layer2DCyl(cylProperties.RadiusOuter, cylProperties.Height, dimContainer, layerDesc.Swapped); // get layer pattern pattern = LayerPatternCyl.GetByName(layerDesc.PatternName); } else { throw new EngineException(string.Format("Unexpected packable {0} (Type = {1})", packable.Name, packable.GetType().ToString())); } pattern.GenerateLayer( layer , layer.Swapped ? actualDimensions.Y : actualDimensions.X , layer.Swapped ? actualDimensions.X : actualDimensions.Y ); return(layer); }
/// <summary> /// Used to compute load dimension /// </summary> public bool GetDimensions(List <LayerDesc> layers, Packable packable, Vector2D dimContainer, double minSpace, out Vector2D actualDimensions) { actualDimensions = new Vector2D(); foreach (LayerDesc layerDesc in layers) { // dimensions double actualLength = 0.0, actualWidth = 0.0; if (packable.IsBrick) { LayerDescBox layerDescBox = layerDesc as LayerDescBox; // instantiate layer var layer = new Layer2D(packable.OuterDimensions, dimContainer, layerDescBox.PatternName, layerDescBox.AxisOrtho, layerDesc.Swapped) { ForcedSpace = minSpace }; // get layer pattern LayerPatternBox pattern = LayerPatternBox.GetByName(layerDesc.PatternName); // dimensions if (!pattern.GetLayerDimensionsChecked(layer, out actualLength, out actualWidth)) { _log.Error(string.Format("Failed to get layer dimension : {0}", pattern.Name)); break; } } else if (packable.IsCylinder) { CylinderProperties cylProp = packable as CylinderProperties; // instantiate layer var layer = new Layer2DCyl(cylProp.RadiusOuter, cylProp.Height, dimContainer, layerDesc.Swapped); // get layer pattern LayerPatternCyl pattern = LayerPatternCyl.GetByName(layerDesc.PatternName); // dimensions if (!pattern.GetLayerDimensions(layer, out actualLength, out actualWidth)) { _log.Error(string.Format("Failed to get layer dimension : {0}", pattern.Name)); break; } } else { throw new EngineException(string.Format("Unexpected packable {0} (Type = {1})", packable.Name, packable.GetType().ToString())); } actualDimensions.X = Math.Max(actualDimensions.X, layerDesc.Swapped ? actualWidth : actualLength); actualDimensions.Y = Math.Max(actualDimensions.Y, layerDesc.Swapped ? actualLength : actualWidth); } return(true); }
public ILayer2D BuildLayer(Packable packable, Vector2D dimContainer, LayerDesc layerDesc, double minSpace) { ILayer2D layer = null; if (packable.IsBrick) { // casts LayerDescBox layerDescBox = layerDesc as LayerDescBox; // layer instantiation layer = new Layer2D(packable.OuterDimensions, dimContainer, layerDesc.PatternName, layerDescBox.AxisOrtho, layerDesc.Swapped) { ForcedSpace = minSpace }; // get layer pattern LayerPatternBox pattern = LayerPatternBox.GetByName(layerDesc.PatternName); // dimensions if (!pattern.GetLayerDimensionsChecked(layer as Layer2D, out double actualLength, out double actualWidth)) { return(null); } pattern.GenerateLayer( layer as Layer2D , actualLength , actualWidth); return(layer); } else if (packable.IsCylinder) { // casts CylinderProperties cylProperties = packable as CylinderProperties; // layer instantiation layer = new Layer2DCyl(cylProperties.RadiusOuter, cylProperties.Height, dimContainer, layerDesc.Swapped); // get layer pattern LayerPatternCyl pattern = LayerPatternCyl.GetByName(layerDesc.PatternName); double actualLength = 0.0, actualWidth = 0.0; if (!pattern.GetLayerDimensions(layer as Layer2DCyl, out actualLength, out actualWidth)) { return(null); } pattern.GenerateLayer(layer as Layer2DCyl, actualLength, actualWidth); } else { throw new EngineException(string.Format("Unexpected packable {0} (Type = {1})", packable.Name, packable.GetType().ToString())); } return(layer); }