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); }
public Layer2D BuildLayer(Vector3D dimBox, Vector2D dimContainer, LayerDescBox layerDesc, Vector2D actualDimensions) { // instantiate layer var layer = new Layer2D(dimBox, dimContainer, layerDesc.AxisOrtho, layerDesc.Swapped); // get layer pattern LayerPatternBox pattern = LayerPatternBox.GetByName(layerDesc.PatternName); // build layer 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); }
public Layer2DBrickImp BuildLayer(Vector3D dimBox, Vector3D bulge, Vector2D dimContainer, LayerDescBox layerDesc, Vector2D actualDimensions, double minSpace) { // instantiate layer var layer = new Layer2DBrickImp(dimBox, bulge, dimContainer, layerDesc.PatternName, layerDesc.AxisOrtho, layerDesc.Swapped) { ForcedSpace = minSpace }; // get layer pattern LayerPatternBox pattern = LayerPatternBox.GetByName(layerDesc.PatternName); // build layer pattern.GenerateLayer( layer , layer.Swapped ? actualDimensions.Y : actualDimensions.X , layer.Swapped ? actualDimensions.X : actualDimensions.Y); return(layer); }
public Layer2D BuildLayer(Vector3D dimBox, Vector2D dimContainer, LayerDescBox layerDesc) { LayerDescBox layerDescBox = layerDesc as LayerDescBox; // instantiate layer var layer = new Layer2D(dimBox, dimContainer, layerDescBox.AxisOrtho, layerDesc.Swapped); // get layer pattern LayerPatternBox pattern = LayerPatternBox.GetByName(layerDesc.PatternName); // dimensions double actualLength = 0.0, actualWidth = 0.0; if (!pattern.GetLayerDimensionsChecked(layer, out actualLength, out actualWidth)) { return(null); } pattern.GenerateLayer( layer , actualLength , actualWidth); return(layer); }
public Layer2DBrickImp BuildLayer(Vector3D dimBox, Vector2D dimContainer, LayerDescBox layerDesc, double minSpace) { LayerDescBox layerDescBox = layerDesc as LayerDescBox; // instantiate layer var layer = new Layer2DBrickImp(dimBox, dimContainer, layerDescBox.PatternName, layerDescBox.AxisOrtho, layerDesc.Swapped) { ForcedSpace = minSpace }; // get layer pattern LayerPatternBox pattern = LayerPatternBox.GetByName(layerDesc.PatternName); // dimensions if (!pattern.GetLayerDimensionsChecked(layer, out double actualLength, out double actualWidth)) { return(null); } pattern.GenerateLayer( layer , actualLength , actualWidth); return(layer); }
internal static bool FindMinLengthForCount(Vector3D dimContent, double width, LayerPatternBox pattern, bool swapped, double forcedSpace, int count , ref Vector2D dimChunk, ref int countMin, ref int countMax) { double lengthMin = 0.0, lengthMax = count * (Math.Max(dimContent.X, dimContent.Y) + forcedSpace); while (lengthMax - lengthMin > MinDiffDichotomy) { double lengthCurrent = 0.5 * (lengthMin + lengthMax); int iCount = 0; Vector2D actualDimensions = Vector2D.Zero; if (!GetCount(dimContent, lengthCurrent, width , pattern, swapped, forcedSpace, ref iCount, ref actualDimensions)) { return(false); } if (iCount < count) { lengthMin = lengthCurrent; countMin = iCount; } else if (iCount >= count) { lengthMax = lengthCurrent; countMax = iCount; dimChunk = new Vector2D(swapped ? actualDimensions.Y : actualDimensions.X, swapped ? actualDimensions.X : actualDimensions.Y); } } return(true); }