示例#1
0
 public void ProcessAnalysis(PackPalletAnalysis analysis)
 {
     _packProperties       = analysis.PackProperties;
     _palletProperties     = analysis.PalletProperties;
     _interlayerProperties = analysis.InterlayerProperties;
     _constraintSet        = analysis.ConstraintSet;
     analysis.Solutions    = GenerateSolutions();
 }
示例#2
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            ComboBoxHelpers.FillCombo(_packs, cbPack, (null != _analysis) ? _analysis.PackProperties : _packs[0]);
            ComboBoxHelpers.FillCombo(_pallets, cbPallet, (null != _analysis) ? _analysis.PalletProperties : _pallets[0]);
            ComboBoxHelpers.FillCombo(_interlayers, cbInterlayer, (null != _analysis ? _analysis.InterlayerProperties : (_interlayers.Length > 0 ? _interlayers[0] : null)));

            chkbInterlayer.Enabled = cbInterlayer.Items.Count > 0;
            chkbInterlayer.Checked = (null != _analysis) ? _analysis.HasInterlayer : false;

            PackPalletConstraintSet constraintSet = (null != _analysis) ? _analysis.ConstraintSet : null;

            if (null != constraintSet)
            {
                chkbInterlayerFirstLayer.Checked = constraintSet.HasFirstInterlayer;

                OverhangX = constraintSet.OverhangX;
                OverhangY = constraintSet.OverhangY;

                MinimumOverhangX = constraintSet.MinOverhangX;
                MinimumOverhangY = constraintSet.MinOverhangY;

                MaximumSpace = constraintSet.MaximumSpaceAllowed;
                MinimumSpace = constraintSet.MinimumSpace;

                MaximumPalletHeight = constraintSet.MaximumPalletHeight;
                MaximumPalletWeight = constraintSet.MaximumPalletWeight;

                MaximumLayerWeight = constraintSet.MaximumLayerWeight;
            }
            else
            {
                chkbInterlayerFirstLayer.Checked = false;

                OverhangX = Settings.Default.OverhangX;
                OverhangY = Settings.Default.OverhangY;

                MinimumOverhangX = OptDouble.Zero;
                MinimumOverhangY = OptDouble.Zero;

                MaximumSpace = OptDouble.Zero;
                MinimumSpace = OptDouble.Zero;

                MaximumPalletHeight = new OptDouble(true, UnitsManager.ConvertLengthFrom(1200.0, UnitsManager.UnitSystem.UNIT_METRIC1));
                MaximumPalletWeight = new OptDouble(false, UnitsManager.ConvertMassFrom(1000.0, UnitsManager.UnitSystem.UNIT_METRIC1));

                MaximumLayerWeight = new OptDouble(false, UnitsManager.ConvertMassFrom(100.0, UnitsManager.UnitSystem.UNIT_METRIC1));
            }

            onInterlayerChecked(this, null);
            UpdateStatus(string.Empty);
        }
示例#3
0
        public void EditPackPalletAnalsyis(PackPalletAnalysis analysis)
        {
            // do we need to recompute analysis
            bool recomputeRequired = false;

            FormNewAnalysisPackPallet form = new FormNewAnalysisPackPallet(this, analysis);

            form.Packs       = ListByType(typeof(PackProperties)).ToArray();
            form.Pallets     = Pallets.ToArray();
            form.Interlayers = ListByType(typeof(InterlayerProperties)).ToArray();

            if (recomputeRequired = (DialogResult.OK == form.ShowDialog()))
            {
                // analysis name / description
                analysis.Name        = form.ItemName;
                analysis.Description = form.ItemDescription;
                // analysis pack / pallet /interlayer
                analysis.PackProperties       = form.PackProperties;
                analysis.PalletProperties     = form.PalletProperties;
                analysis.InterlayerProperties = form.InterlayerProperties;
                // constraint set
                PackPalletConstraintSet constraintSet = analysis.ConstraintSet;
                constraintSet.OverhangX           = form.OverhangX;
                constraintSet.OverhangY           = form.OverhangY;
                constraintSet.MinOverhangX        = form.MinimumOverhangX;
                constraintSet.MinOverhangY        = form.MinimumOverhangY;
                constraintSet.MinimumSpace        = form.MinimumSpace;
                constraintSet.MaximumSpaceAllowed = form.MaximumSpace;
                constraintSet.LayerSwapPeriod     = form.LayerSwapPeriod;
                constraintSet.InterlayerPeriod    = form.InterlayerPeriod;
                constraintSet.HasFirstInterlayer  = form.HasFirstInterlayer;
                // stop criterions
                constraintSet.MaximumPalletHeight = form.MaximumPalletHeight;
                constraintSet.MaximumPalletWeight = form.MaximumPalletWeight;
            }
            if (recomputeRequired)
            {
                analysis.OnEndUpdate(null);
                if (analysis.Solutions.Count < 1)
                {
                    MessageBox.Show(Properties.Resources.ID_ANALYSISHASNOSOLUTION, Application.ProductName, MessageBoxButtons.OK);
                }
            }
        }
示例#4
0
        public Layer(PackProperties packProperties, PalletProperties palletProperties, PackPalletConstraintSet constraintSet
                     , HalfAxis.HAxis axisOrtho, bool inversed)
        {
            _axisOrtho    = axisOrtho;
            _inversed     = inversed;
            _forcedSpace  = constraintSet.MinimumSpace.Value;
            _palletLength = palletProperties.Length + constraintSet.OverhangX + _forcedSpace;
            _palletWidth  = palletProperties.Width + constraintSet.OverhangY + _forcedSpace;

            Initialize(packProperties);
        }
示例#5
0
        private Layer2D BuildLayer(PackProperties packProperties, PalletProperties palletProperties, PackPalletConstraintSet constraintSet, HalfAxis.HAxis axisOrtho, bool swapped, bool inversed)
        {
            double forcedSpace = constraintSet.MinimumSpace.Value;

            return(new Layer2D(
                       new Vector3D(packProperties.Length + forcedSpace, packProperties.Width + forcedSpace, packProperties.Height)
                       , new Vector2D(
                           palletProperties.Length + constraintSet.OverhangX + forcedSpace
                           , _palletProperties.Width + constraintSet.OverhangY + forcedSpace)
                       , axisOrtho, swapped));
        }
示例#6
0
 private void btAddPackPalletAnalysis_Click(object sender, EventArgs e)
 {
     try
     {
         // get selected box
         BoxProperties boxProperties = SelectedBox;
         // get selected pallet
         PalletProperties palletProperties = SelectedPallet;
         // get selected caseOptimSolution
         CaseOptimSolution sol         = SelectedSolution;
         PackArrangement   arrangement = sol.CaseDefinition.Arrangement;
         // build new case name
         string name = string.Format("{0}_{1}*{2}*{3}_{4}{5}"
                                     , boxProperties.Name
                                     , arrangement._iLength
                                     , arrangement._iWidth
                                     , arrangement._iHeight
                                     , sol.CaseDefinition.Dim0
                                     , sol.CaseDefinition.Dim1);
         // build new case description
         string description = string.Format("Case generated by case optimization for box {0} and pallet {1}"
                                            , boxProperties.Name
                                            , palletProperties.Name);
         // analysis name/description
         string analysisName = string.Format("OptimAnalysis{0}_{1}*{2}*{3}_{4}{5}"
                                             , boxProperties.Name
                                             , boxProperties.Name
                                             , arrangement._iLength
                                             , arrangement._iWidth
                                             , arrangement._iHeight
                                             , sol.CaseDefinition.Dim0
                                             , sol.CaseDefinition.Dim1);
         string analysisDescription = string.Format("Pallet analysis generated by case optimisation for box {0} and pallet {1}"
                                                    , boxProperties.Name
                                                    , palletProperties.Name);
         // create PackProperties
         HalfAxis.HAxis axis          = PackProperties.Orientation(sol.CaseDefinition.Dim0, sol.CaseDefinition.Dim1);
         double         wrapperWeight = WrapperCardboard.EstimateWeight(
             SelectedBox
             , arrangement
             , axis
             , NoWalls
             , WallThickness
             , WallSurfaceMass);
         // cardboard wrapper
         WrapperCardboard wrapper = new WrapperCardboard(WallThickness, wrapperWeight, Color.Chocolate);
         wrapper.SetNoWalls(NoWalls[0], NoWalls[1], NoWalls[2]);
         // pack
         PackProperties pack = _document.CreateNewPack(
             name, description
             , boxProperties, arrangement, axis
             , wrapper);
         // constraint set
         PackPalletConstraintSet constraintSet = new PackPalletConstraintSet();
         constraintSet.OverhangX           = OverhangX;
         constraintSet.OverhangY           = OverhangY;
         constraintSet.MaximumPalletHeight = new OptDouble(true, MaximumPalletHeight);
         // create analysis
         _document.CreateNewPackPalletAnalysis(
             analysisName
             , analysisDescription
             , pack
             , palletProperties
             , null
             , constraintSet
             , new PackPalletSolver());
     }
     catch (Exception ex)
     {
         _log.Error(ex.ToString());
     }
 }