コード例 #1
0
        private void FillLayerControls()
        {
            try
            {
                cbLayerType.BoxProperties = _analysis.Content;
                // build layers and fill CCtrl
                foreach (LayerDesc layerDesc in _solution.LayerDescriptors)
                {
                    LayerSolver solver = new LayerSolver();
                    Layer2D     layer  = solver.BuildLayer(_analysis.ContentDimensions, _analysis.ContainerDimensions, layerDesc);
                    cbLayerType.Items.Add(layer);
                }
                if (cbLayerType.Items.Count > 0)
                {
                    cbLayerType.SelectedIndex = 0;
                }

                // fill combo cbInterlayer
                Document document = _document as Document;
                cbInterlayer.Initialize(document, this, null);
            }
            catch (Exception /*ex*/)
            {
            }
        }
コード例 #2
0
        private void OnInputChanged(object sender, EventArgs e)
        {
            try
            {
                // get box / case
                if (!(cbBoxes.SelectedType is PackableBrick packable) ||
                    !(cbCases.SelectedType is BoxProperties caseProperties))
                {
                    return;
                }

                // update orientation control
                uCtrlCaseOrientation.BProperties = packable;

                // compute
                LayerSolver            solver = new LayerSolver();
                List <Layer2DBrickImp> layers = solver.BuildLayers(
                    packable.OuterDimensions
                    , new Vector2D(caseProperties.InsideLength, caseProperties.InsideWidth)
                    , 0.5 * (caseProperties.Height - caseProperties.InsideHeight)
                    , BuildConstraintSet()
                    , checkBoxBestLayersOnly.Checked
                    );
                // update control
                uCtrlLayerList.Packable           = packable;
                uCtrlLayerList.ContainerHeight    = caseProperties.InsideHeight;
                uCtrlLayerList.FirstLayerSelected = true;
                uCtrlLayerList.LayerList          = layers.Cast <ILayer2D>().ToList();
            }
            catch (Exception ex)
            {
                _log.Error(ex.ToString());
            }
        }
コード例 #3
0
        private void FillLayerControls()
        {
            try
            {
                cbLayerType.Packable = _analysis.Content;
                // build layers and fill CCtrl
                foreach (var layerEncap in _solution.LayerEncaps)
                {
                    if (null != layerEncap.LayerDesc)
                    {
                        LayerSolver solver = new LayerSolver();
                        ILayer2D    layer  = solver.BuildLayer(_analysis.Content, _analysis.ContainerDimensions, layerEncap.LayerDesc, _analysis.ConstraintSet.MinimumSpace.Value);
                        cbLayerType.Items.Add(layer);
                    }
                    else if (null != layerEncap.Layer2D)
                    {
                        cbLayerType.Items.Add(layerEncap.Layer2D);
                    }
                }
                if (cbLayerType.Items.Count > 0)
                {
                    cbLayerType.SelectedIndex = 0;
                }

                // fill combo cbInterlayer
                Document document = Document as Document;
                cbInterlayer.Initialize(document, this, null);
            }
            catch (Exception ex)
            {
                _log.Error(ex.ToString());
            }
        }
コード例 #4
0
 private void OnTimerTick(object sender, EventArgs e)
 {
     try
     {
         _timer.Stop();
         // get case /pallet
         Packable         packable         = cbCases.SelectedType as Packable;
         PalletProperties palletProperties = cbPallets.SelectedType as PalletProperties;
         if (null == packable || null == palletProperties)
         {
             return;
         }
         // compute
         LayerSolver solver = new LayerSolver();
         _layers = solver.BuildLayers(
             packable.OuterDimensions
             , new Vector2D(
                 palletProperties.Length + 2.0 * uCtrlOverhang.ValueX
                 , palletProperties.Width + 2.0 * uCtrlOverhang.ValueY)
             , palletProperties.Height
             , BuildConstraintSet()
             , checkBoxBestLayersOnly.Checked);
         FillGrid();
     }
     catch (Exception ex)
     {
         _log.Error(ex.ToString());
     }
 }
コード例 #5
0
 private void OnInputValueChanged(object sender, EventArgs args)
 {
     try
     {
         Packable packable = BundleProp;
         // compute
         ILayerSolver   solver = new LayerSolver();
         List <Layer2D> layers = solver.BuildLayers(
             packable.OuterDimensions
             , new Vector2D(CaseInsideLength, CaseInsideWidth)
             , 0.0
             , BuildConstraintSet()
             , true
             );
         // update control
         uCtrlLayerList.Packable           = packable;
         uCtrlLayerList.ContainerHeight    = CaseInsideHeight;
         uCtrlLayerList.FirstLayerSelected = true;
         uCtrlLayerList.LayerList          = layers.Cast <ILayer2D>().ToList();
     }
     catch (Exception ex)
     {
         _log.Error(ex.ToString());
     }
 }
コード例 #6
0
 private void FillLayerControls()
 {
     try
     {
         // get solution
         SolutionLayered solution = _analysis.SolutionLay;
         // packable
         cbLayerType.Packable = _analysis.Content;
         // build layers and fill CCtrl
         foreach (var layerEncap in solution.LayerEncaps)
         {
             if (null != layerEncap.Layer2D)
             {
                 cbLayerType.Items.Add(layerEncap.Layer2D);
             }
             else if (null != layerEncap.LayerDesc)
             {
                 LayerSolver     solver = new LayerSolver();
                 Layer2DBrickImp layer  = solver.BuildLayer(_analysis.ContentDimensions, _analysis.ContainerDimensions, layerEncap.LayerDesc as LayerDescBox, 0.0);
                 cbLayerType.Items.Add(layer);
             }
         }
         if (cbLayerType.Items.Count > 0)
         {
             cbLayerType.SelectedIndex = 0;
         }
     }
     catch (Exception ex)
     {
         _log.Error(ex.Message);
     }
 }
コード例 #7
0
        static void Main(string[] args)
        {
            bool     bestLayersOnly = true;
            Vector3D dimBox         = new Vector3D(400.0, 300.0, 150.0);
            Vector2D dimContainer   = new Vector2D(1200.0, 1000.0);
            ConstraintSetCasePallet constraintSet = new ConstraintSetCasePallet();

            constraintSet.SetMaxHeight(new OptDouble(true, 1200.0));

            try
            {
                LayerSolver    solver = new LayerSolver();
                List <Layer2D> layers = solver.BuildLayers(dimBox, dimContainer, 0.0, constraintSet, bestLayersOnly);

                int solIndex = 0;
                foreach (Layer2D layer in layers)
                {
                    string fileName = string.Format("{0}_{1}.bmp", layer.Name, solIndex++);
                    string filePath = Path.Combine(Path.GetTempPath(), fileName);
                    Console.WriteLine(string.Format("Generating {0}...", filePath));

                    Graphics2DImage graphics    = new Graphics2DImage(new Size(150, 150));
                    ViewerILayer2D  solViewer   = new ViewerILayer2D(layer);
                    BoxProperties   bProperties = new BoxProperties(null, 400.0, 300.0, 150.0);
                    bProperties.SetColor(Color.Brown);
                    solViewer.Draw(graphics, bProperties, 1500.0, false);
                    graphics.SaveAs(filePath);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
コード例 #8
0
 private void OnInputChanged(object sender, EventArgs e)
 {
     try
     {
         // get loaded pallet / truck
         PackableBrick   packable        = cbPallets.SelectedType as PackableBrick;
         TruckProperties truckProperties = cbTrucks.SelectedType as TruckProperties;
         if (null == packable || null == truckProperties)
         {
             return;
         }
         // compute
         LayerSolver    solver = new LayerSolver();
         List <Layer2D> layers = solver.BuildLayers(
             packable.OuterDimensions
             , new Vector2D(
                 truckProperties.InsideLength - 2.0 * uCtrlMinDistanceLoadWall.ValueX
                 , truckProperties.InsideWidth - 2.0 * uCtrlMinDistanceLoadWall.ValueY)
             , 0.0 /* offsetZ */
             , BuildConstraintSet()
             , checkBoxBestLayersOnly.Checked
             );
         // update control
         uCtrlLayerList.SingleSelection    = true;
         uCtrlLayerList.Packable           = packable;
         uCtrlLayerList.ContainerHeight    = truckProperties.InsideHeight - uCtrlMinDistanceLoadRoof.Value;
         uCtrlLayerList.FirstLayerSelected = true;
         uCtrlLayerList.LayerList          = layers.Cast <ILayer2D>().ToList();
     }
     catch (Exception ex)
     {
         _log.Error(ex.ToString());
     }
 }
コード例 #9
0
 private void OnInputChanged(object sender, EventArgs e)
 {
     try
     {
         // get cylinder / case
         if (cbCylinders.SelectedType is CylinderProperties cylinder &&
             cbPallets.SelectedType is PalletProperties palletProperties)
         {
             // compute
             LayerSolver          solver = new LayerSolver();
             List <Layer2DCylImp> layers = solver.BuildLayers(
                 cylinder.RadiusOuter, cylinder.Height
                 , new Vector2D(palletProperties.Length + 2.0 * uCtrlOverhang.ValueX, palletProperties.Width + 2.0 * uCtrlOverhang.ValueY)
                 , palletProperties.Height
                 , BuildConstraintSet()
                 , checkBoxBestLayersOnly.Checked
                 );
             //  update control
             uCtrlLayerList.Packable           = cylinder;
             uCtrlLayerList.ContainerHeight    = uCtrlMaximumHeight.Value - palletProperties.Height;
             uCtrlLayerList.FirstLayerSelected = true;
             uCtrlLayerList.LayerList          = layers.Cast <ILayer2D>().ToList();
         }
     }
     catch (Exception ex)
     {
         _log.Error(ex.ToString());
     }
 }
コード例 #10
0
        private void onInputChanged(object sender, EventArgs e)
        {
            try
            {
                // get box / case
                PackableBrick packable       = cbBoxes.SelectedType as PackableBrick;
                BoxProperties caseProperties = cbCases.SelectedType as BoxProperties;
                if (null == packable || null == caseProperties)
                {
                    return;
                }

                // update orientation control
                uCtrlCaseOrientation.BProperties = packable;

                // compute
                LayerSolver    solver = new LayerSolver();
                List <Layer2D> layers = solver.BuildLayers(
                    packable.OuterDimensions
                    , new Vector2D(caseProperties.InsideLength, caseProperties.InsideWidth)
                    , 0.0 /* offsetZ */
                    , BuildContraintSet()
                    , checkBoxBestLayersOnly.Checked
                    );
                // update control
                uCtrlLayerList.Packable           = packable;
                uCtrlLayerList.ContainerHeight    = caseProperties.InsideHeight;
                uCtrlLayerList.FirstLayerSelected = true;
                uCtrlLayerList.LayerList          = LayerSolver.ConvertList(layers);
            }
            catch (Exception ex)
            {
                _log.Error(ex.ToString());
            }
        }
コード例 #11
0
 private void onInputChanged(object sender, EventArgs e)
 {
     try
     {
         // get cylinder / case
         CylinderProperties cylinder       = cbCylinders.SelectedType as CylinderProperties;
         BoxProperties      caseProperties = cbCases.SelectedType as BoxProperties;
         if (null == cylinder || null == caseProperties)
         {
             return;
         }
         // compute
         LayerSolver       solver = new LayerSolver();
         List <Layer2DCyl> layers = solver.BuildLayers(
             cylinder.RadiusOuter, cylinder.Height
             , new Vector2D(caseProperties.InsideLength, caseProperties.InsideWidth)
             , 0.0
             , BuildConstraintSet()
             , checkBoxBestLayersOnly.Checked
             );
         uCtrlLayerList.Packable           = cylinder;
         uCtrlLayerList.ContainerHeight    = caseProperties.InsideHeight;
         uCtrlLayerList.FirstLayerSelected = true;
         uCtrlLayerList.LayerList          = layers.Cast <ILayer2D>().ToList();
     }
     catch (Exception ex)
     {
         _log.Error(ex.ToString());
     }
 }
コード例 #12
0
 private void FillLayerControls()
 {
     try
     {
         // get solution
         Solution solution = _analysis.Solution;
         // packable
         cbLayerType.Packable = _analysis.Content;
         // build layers and fill CCtrl
         foreach (LayerDesc layerDesc in solution.LayerDescriptors)
         {
             LayerSolver solver = new LayerSolver();
             Layer2D     layer  = solver.BuildLayer(_analysis.ContentDimensions, _analysis.ContainerDimensions, layerDesc as LayerDescBox, 0.0);
             cbLayerType.Items.Add(layer);
         }
         if (cbLayerType.Items.Count > 0)
         {
             cbLayerType.SelectedIndex = 0;
         }
     }
     catch (Exception ex)
     {
         _log.Error(ex.Message);
     }
 }
コード例 #13
0
        private void FillLayerControls()
        {
            try
            {
                cbLayerType.Packable = _analysis.Content;
                // build layers and fill CCtrl
                foreach (LayerDesc layerDesc in _solution.LayerDescriptors)
                {
                    LayerSolver solver = new LayerSolver();
                    Layer2D     layer  = solver.BuildLayer(_analysis.ContentDimensions, _analysis.ContainerDimensions, layerDesc as LayerDescBox);
                    cbLayerType.Items.Add(layer);
                }
                if (cbLayerType.Items.Count > 0)
                {
                    cbLayerType.SelectedIndex = 0;
                }

                // interlayer combo box
                Document doc = _document as Document;
                if (null == doc)
                {
                    return;
                }
                ItemBase[] interlayers = doc.ListByType(typeof(InterlayerProperties)).ToArray();
                ComboBoxHelpers.FillCombo(interlayers, cbInterlayer, null);
            }
            catch (Exception ex)
            {
                _log.Error(ex.Message);
            }
        }
コード例 #14
0
        private void OnBestCombinationClicked(object sender, EventArgs e)
        {
            try
            {
                Packable         packable         = cbCases.SelectedType as Packable;
                PalletProperties palletProperties = cbPallets.SelectedType as PalletProperties;
                if (null == packable || null == palletProperties)
                {
                    return;
                }

                // get best combination
                List <KeyValuePair <LayerDesc, int> > listLayer = new List <KeyValuePair <LayerDesc, int> >();
                LayerSolver.GetBestCombination(
                    packable.OuterDimensions,
                    new Vector2D(palletProperties.Length + 2.0 * uCtrlOverhang.ValueX, palletProperties.Width + 2.0 * uCtrlOverhang.ValueY),
                    BuildConstraintSet(),
                    ref listLayer);

                // select best layers
                List <LayerDesc> listLayerDesc = new List <LayerDesc>();
                foreach (KeyValuePair <LayerDesc, int> kvp in listLayer)
                {
                    listLayerDesc.Add(kvp.Key);
                }
                uCtrlLayerList.SelectLayers(listLayerDesc);
            }
            catch (Exception ex)
            {
                _log.Error(ex.ToString());
            }
        }
コード例 #15
0
 private void OnInputChanged(object sender, EventArgs e)
 {
     try
     {
         // get case /pallet
         Packable         packable         = cbCases.SelectedType as Packable;
         PalletProperties palletProperties = cbPallets.SelectedType as PalletProperties;
         if (null == packable || null == palletProperties)
         {
             return;
         }
         // compute
         LayerSolver    solver = new LayerSolver();
         List <Layer2D> layers = solver.BuildLayers(
             packable.OuterDimensions
             , new Vector2D(palletProperties.Length + 2.0 * uCtrlOverhang.ValueX, palletProperties.Width + 2.0 * uCtrlOverhang.ValueY)
             , palletProperties.Height
             , BuildConstraintSet()
             , checkBoxBestLayersOnly.Checked);
         // update control
         uCtrlLayerList.Packable           = packable;
         uCtrlLayerList.ContainerHeight    = uCtrlMaximumHeight.Value - palletProperties.Height;
         uCtrlLayerList.FirstLayerSelected = true;
         uCtrlLayerList.LayerList          = layers.Cast <ILayer2D>().ToList();
     }
     catch (Exception ex)
     {
         _log.Error(ex.ToString());
     }
 }
コード例 #16
0
        private void onInputChanged(object sender, EventArgs e)
        {
            try
            {
                // get case /pallet
                ItemBaseCB itemBaseCase = cbCases.SelectedItem as ItemBaseCB;
                if (null == itemBaseCase)
                {
                    return;
                }
                BProperties bProperties = itemBaseCase.Item as BProperties;

                ItemBaseCB itemBasePallet = cbPallets.SelectedItem as ItemBaseCB;
                if (null == itemBasePallet)
                {
                    return;
                }
                PalletProperties palletProperties = itemBasePallet.Item as PalletProperties;
                // compute
                LayerSolver    solver = new LayerSolver();
                List <Layer2D> layers = solver.BuildLayers(
                    bProperties.OuterDimensions
                    , new Vector2D(palletProperties.Length + 2.0 * uCtrlOverhang.ValueX, palletProperties.Width + 2.0 * uCtrlOverhang.ValueY)
                    , BuildConstraintSet()
                    , checkBoxBestLayersOnly.Checked);
                // update control
                uCtrlLayerList.BProperties     = bProperties;
                uCtrlLayerList.ContainerHeight = uCtrlOptMaximumHeight.Value.Value;
                uCtrlLayerList.LayerList       = layers;
            }
            catch (Exception ex)
            {
                _log.Error(ex.Message);
            }
        }
コード例 #17
0
        public static void GetLayers(Vector3D caseDim, double caseWeight, int palletIndex, double palletWeight, int layerNumber, bool bestLayersOnly, ref List <LayerDetails> listLayers)
        {
            // case
            var boxProperties = new BoxProperties(null, caseDim.X, caseDim.Y, caseDim.Z)
            {
                TapeColor = Color.Tan,
                TapeWidth = new OptDouble(true, 50.0)
            };

            boxProperties.SetWeight(caseWeight);
            boxProperties.SetAllColors(Enumerable.Repeat(Color.Beige, 6).ToArray());
            // pallet
            Vector3D palletDim        = PalletIndexToDim3D(palletIndex);
            var      palletProperties = new PalletProperties(null, PalletIndexToPalletType(palletIndex), palletDim.X, palletDim.Y, palletDim.Z)
            {
                Weight = palletWeight,
                Color  = Color.Yellow
            };
            // ### define a constraintset object
            var constraintSet = new ConstraintSetCasePallet()
            {
                OptMaxNumber = new OptInt(false, 0),
                OptMaxWeight = new OptDouble(true, 1000.0),
                Overhang     = Vector2D.Zero,
            };

            constraintSet.SetAllowedOrientations(new bool[] { false, false, true });
            constraintSet.OptMaxLayerNumber = layerNumber;
            Vector3D vPalletDim = palletProperties.GetStackingDimensions(constraintSet);
            // ###

            // get a list of all possible layers and fill ListView control
            ILayerSolver solver = new LayerSolver();
            var          layers = solver.BuildLayers(boxProperties.OuterDimensions, new Vector2D(vPalletDim.X, vPalletDim.Y), 0.0, constraintSet, bestLayersOnly);

            foreach (var layer in layers)
            {
                listLayers.Add(
                    new LayerDetails(
                        layer.Name,
                        layer.LayerDescriptor.ToString(),
                        layer.Count,
                        layer.NoLayers(caseDim.Z),
                        caseDim.X, caseDim.Y, caseDim.Z,
                        palletIndex)
                    );
            }
        }
コード例 #18
0
        private void OnBestCombinationClicked(object sender, EventArgs e)
        {
            try
            {
                // get box & case
                if (!(cbBoxes.SelectedType is PackableBrick packable) ||
                    !(cbCases.SelectedType is BoxProperties caseProperties))
                {
                    return;
                }
                var constraintSet = BuildConstraintSet();
                // get best combination
                var listLayer = new List <KeyValuePair <LayerEncap, int> >();
                LayerSolver.GetBestCombination(
                    packable.OuterDimensions,
                    packable.Bulge,
                    caseProperties.GetStackingDimensions(constraintSet),
                    constraintSet,
                    ref listLayer);
                if (0 == listLayer.Count)
                {
                    _log.Warn("Failed to find a single valid layer");
                    return;
                }
                // select best layer
                List <LayerDesc> layerDesc = new List <LayerDesc>();
                foreach (var kvp in listLayer)
                {
                    layerDesc.Add(kvp.Key.LayerDesc);
                }
                uCtrlLayerList.SelectLayers(layerDesc);

                _item = _document.CreateNewAnalysisBoxCase(
                    ItemName, ItemDescription
                    , SelectedBoxProperties, SelectedCase
                    , new List <InterlayerProperties>()
                    , BuildConstraintSet()
                    , listLayer
                    );
                Close();
            }
            catch (Exception ex)
            {
                _log.Error(ex.ToString());
            }
        }
コード例 #19
0
        private void OnBestCombinationClicked(object sender, EventArgs e)
        {
            try
            {
                Packable         packable         = cbCases.SelectedType as Packable;
                PalletProperties palletProperties = cbPallets.SelectedType as PalletProperties;
                if (null == packable || null == palletProperties)
                {
                    return;
                }
                ConstraintSetAbstract constraintSet = BuildConstraintSet();
                // get best combination
                List <KeyValuePair <LayerDesc, int> > listLayer = new List <KeyValuePair <LayerDesc, int> >();
                LayerSolver.GetBestCombination(
                    packable.OuterDimensions,
                    palletProperties.GetStackingDimensions(constraintSet),
                    constraintSet,
                    ref listLayer);

                // select best layers
                List <LayerDesc> listLayerDesc = new List <LayerDesc>();
                foreach (KeyValuePair <LayerDesc, int> kvp in listLayer)
                {
                    listLayerDesc.Add(kvp.Key);
                }
                uCtrlLayerList.SelectLayers(listLayerDesc);

                _item = _document.CreateNewAnalysisCasePallet(
                    ItemName, ItemDescription
                    , SelectedPackable, SelectedPallet
                    , new List <InterlayerProperties>()
                    , null, null, null
                    , BuildConstraintSet()
                    , listLayer
                    );
                Close();
            }
            catch (Exception ex)
            {
                _log.Error(ex.ToString());
            }
        }
コード例 #20
0
        private void FillLayerList()
        {
            // get case /pallet
            if (!(cbCases.SelectedType is Packable packable) || !(cbPallets.SelectedType is PalletProperties palletProperties))
            {
                return;
            }
            // compute
            LayerSolver            solver = new LayerSolver();
            List <Layer2DBrickImp> layers = solver.BuildLayers(
                packable.OuterDimensions
                , new Vector2D(palletProperties.Length + 2.0 * uCtrlOverhang.ValueX, palletProperties.Width + 2.0 * uCtrlOverhang.ValueY)
                , palletProperties.Height
                , BuildConstraintSet()
                , checkBoxBestLayersOnly.Checked);

            // update control
            uCtrlLayerList.Packable           = packable;
            uCtrlLayerList.ContainerHeight    = uCtrlMaximumHeight.Value - palletProperties.Height;
            uCtrlLayerList.FirstLayerSelected = true;
            uCtrlLayerList.LayerList          = layers.Cast <ILayer2D>().ToList();
        }
コード例 #21
0
        private void OnInputChanged(object sender, EventArgs e)
        {
            try
            {
                // get box / case
                PackableBrick   packable = SelectedPackable;
                TruckProperties truck    = SelectedTruck;
                if (null == packable || null == truck)
                {
                    return;
                }

                // update orientation control
                uCtrlCaseOrientation.BProperties = packable;

                // compute
                LayerSolver            solver = new LayerSolver();
                List <Layer2DBrickImp> layers = solver.BuildLayers(
                    packable.OuterDimensions
                    , packable.Bulge
                    , new Vector2D(
                        truck.InsideLength - 2.0 * uCtrlMinDistanceLoadWall.ValueX
                        , truck.InsideWidth - 2.0 * uCtrlMinDistanceLoadWall.ValueY)
                    , 0.0 /* offsetZ */
                    , BuildConstraintSet()
                    , checkBoxBestLayersOnly.Checked
                    );
                // update control
                uCtrlLayerList.Packable           = packable;
                uCtrlLayerList.ContainerHeight    = truck.InsideHeight - uCtrlMinDistanceLoadRoof.Value;
                uCtrlLayerList.FirstLayerSelected = true;
                uCtrlLayerList.LayerList          = layers.Cast <ILayer2D>().ToList();
            }
            catch (Exception ex)
            {
                _log.Error(ex.ToString());
            }
        }