Example #1
0
 /// <summary>
 /// Creates a new PackProperties object
 /// </summary>
 public void CreateNewPackUI()
 {
     using (FormNewPack form = new FormNewPack(this, null)
     {
         Boxes = Boxes.ToList()
     })
     {
         if (DialogResult.OK == form.ShowDialog())
         {
             PackProperties packProperties = CreateNewPack(
                 form.ItemName, form.ItemDescription
                 , form.SelectedPackable
                 , form.Arrangement
                 , form.BoxOrientation, form.RevSolidLayout
                 , form.Wrapper
                 , form.Tray);
             if (form.HasForcedOuterDimensions)
             {
                 packProperties.ForceOuterDimensions(form.OuterDimensions);
             }
             packProperties.StrapperSet = form.StrapperSet;
             packProperties.Bulge       = form.Bulge;
         }
     }
 }
Example #2
0
 public FormNewPack(Document doc, PackProperties packProperties)
     : base(doc, packProperties)
 {
     InitializeComponent();
     PackProp    = packProperties;
     StrapperSet = null != PackProp?PackProp.StrapperSet.Clone() : new StrapperSet();
 }
Example #3
0
        public Box(uint pickId, Packable packable, LayerPosition bPosition)
        {
            if (!bPosition.IsValid)
            {
                throw new GraphicsException("Invalid BoxPosition: can not create box");
            }
            _pickId = pickId;
            _dim[0] = packable.Length;
            _dim[1] = packable.Width;
            _dim[2] = packable.Height;

            // set position
            Position = bPosition.Position;
            // set direction length
            LengthAxis = HalfAxis.ToVector3D(bPosition.LengthAxis);
            // set direction width
            WidthAxis = HalfAxis.ToVector3D(bPosition.WidthAxis);

            _colors = Enumerable.Repeat <Color>(Color.Chocolate, 6).ToArray();

            BProperties bProperties = packable as BProperties;

            if (null != bProperties)
            {
                _colors = bProperties.Colors;

                BoxProperties boxProperties = packable as BoxProperties;
                if (null != boxProperties)
                {
                    List <Pair <HalfAxis.HAxis, Texture> > textures = boxProperties.TextureList;
                    foreach (Pair <HalfAxis.HAxis, Texture> tex in textures)
                    {
                        int iIndex = (int)tex.first;
                        if (null == _textureLists[iIndex])
                        {
                            _textureLists[iIndex] = new List <Texture>();
                        }
                        _textureLists[iIndex].Add(tex.second);
                    }
                    _showTape  = boxProperties.ShowTape;
                    _tapeWidth = boxProperties.TapeWidth;
                    _tapeColor = boxProperties.TapeColor;
                }
                // IsBundle ?
                _isBundle = bProperties.IsBundle;
                if (bProperties.IsBundle)
                {
                    BundleProperties bundleProp = packable as BundleProperties;
                    if (null != bundleProp)
                    {
                        _noFlats = bundleProp.NoFlats;
                    }
                }
            }
            PackProperties packProperties = packable as PackProperties;

            if (null != packProperties)
            {
            }
        }
Example #4
0
        private void Initialize(PackProperties packProperties)
        {
            switch (_axisOrtho)
            {
            case HalfAxis.HAxis.AXIS_Z_N:
                _boxLength  = packProperties.Width + _forcedSpace;
                _boxWidth   = packProperties.Length + _forcedSpace;
                _boxHeight  = packProperties.Height;
                _lengthAxis = HalfAxis.HAxis.AXIS_Y_P;
                _widthAxis  = HalfAxis.HAxis.AXIS_X_P;
                _vecTransf  = new Vector3D(0.0, 0.0, packProperties.Height);
                break;

            case HalfAxis.HAxis.AXIS_Z_P:
                _boxLength  = packProperties.Length + _forcedSpace;
                _boxWidth   = packProperties.Width + _forcedSpace;
                _boxHeight  = packProperties.Height;
                _lengthAxis = HalfAxis.HAxis.AXIS_X_P;
                _widthAxis  = HalfAxis.HAxis.AXIS_Y_P;
                _vecTransf  = Vector3D.Zero;
                break;

            default:
                break;
            }
        }
Example #5
0
        public void Draw(Graphics3DControl ctrl, Graphics3D graphics)
        {
            StrapperSet.SetDimension(OuterDimensions);
            // build pack
            PackProperties packProperties = new PackProperties(
                null, SelectedBox, Arrangement, BoxOrientation, Wrapper)
            {
                StrapperSet = StrapperSet
            };

            if (uCtrlOuterDimensions.Checked)
            {
                packProperties.ForceOuterDimensions(
                    new Vector3D(uCtrlOuterDimensions.X, uCtrlOuterDimensions.Y, uCtrlOuterDimensions.Z));
            }
            Pack pack = new Pack(0, packProperties)
            {
                ForceTransparency = true
            };

            graphics.AddBox(pack);
            graphics.AddDimensions(new DimensionCube(Vector3D.Zero, pack.Length, pack.Width, pack.Height, Color.Black, true));
            if (packProperties.Wrap.Transparent)
            {
                graphics.AddDimensions(
                    new DimensionCube(
                        packProperties.InnerOffset
                        , packProperties.InnerLength, packProperties.InnerWidth, packProperties.InnerHeight
                        , Color.Red, false));
            }
        }
Example #6
0
 public Pack(uint pickId, PackProperties packProperties)
     : base(pickId, packProperties.Length, packProperties.Width, packProperties.Height)
 {
     _packProperties = packProperties;
     _arrangement    = _packProperties.Arrangement;
     _innerBox       = new Box(0, packProperties.Box);
 }
Example #7
0
        private List <AnalysisLayered> PackOptimSolutions(ConstraintSetCasePallet constraintSet, int iNumber)
        {
            // TODO: better as IEnumerable<>?
            var analyses = new List <AnalysisLayered>();

            foreach (CaseDefinition caseDefinition in CaseDefinitions(iNumber))
            {
                try
                {
                    // build pack properties
                    Vector3D outerDimensions = caseDefinition.OuterDimensions(BoxProperties, ParamSetPackOpt);
                    var      packProperties  = new PackProperties(
                        null,
                        BoxProperties,
                        caseDefinition.Arrangement,
                        PackProperties.Orientation(caseDefinition.Dim0, caseDefinition.Dim1),
                        PackProperties.EnuRevSolidLayout.ALIGNED,
                        BuildWrapper(),
                        BuildTray()
                        );
                    packProperties.ForceOuterDimensions(outerDimensions);

                    // solver
                    var solver = new SolverCasePallet(packProperties, PalletProperties, constraintSet);
                    analyses.AddRange(solver.BuildAnalyses(false));
                }
                catch (Exception ex)
                {
                    _log.Error(ex.Message);
                }
            }
            // sort caseOptimSolution
            analyses.Sort(new AnalysisComparer());
            return(analyses);
        }
        private void onSelChangeGrid(object sender, SourceGrid.RangeRegionChangedEventArgs e)
        {
            try
            {
                SourceGrid.Selection.RowSelection select = sender as SourceGrid.Selection.RowSelection;
                SourceGrid.Grid g = select.Grid as SourceGrid.Grid;

                SourceGrid.RangeRegion region = g.Selection.GetSelectionRegion();
                int[] indexes = region.GetRowsIndex();
                if (indexes.Length < 1 || indexes[0] < 1)
                {
                    _selectedAnalysis = null;
                }
                else
                {
                    _selectedAnalysis = _analyses[indexes[0] - 1];
                    // analysis name/description
                    if (null != _selectedAnalysis)
                    {
                        BoxProperties  box  = SelectedBox;
                        PackProperties pack = _selectedAnalysis.Content as PackProperties;
                        UpdateStatus(string.Empty);
                    }
                }

                graphCtrlPack.Invalidate();
                graphCtrlSolution.Invalidate();
            }
            catch (Exception ex)
            {
                _log.Error(ex.Message);
            }
        }
        private void onNext(object sender, EventArgs e)
        {
            try
            {
                // selected analysis -> get pack
                AnalysisCasePallet analysisSel = SelectedAnalysis;
                PackProperties     packSel     = analysisSel.Content as PackProperties;
                packSel.ID.SetNameDesc(AnalysisName, AnalysisName);

                // create pack
                PackProperties   packProperties   = _doc.CreateNewPack(packSel);
                PalletProperties palletProperties = _doc.CreateNewPallet(SelectedPallet);
                // create analysis
                List <InterlayerProperties> interlayers = new List <InterlayerProperties>();
                AnalysisHomo analysis = _doc.CreateNewAnalysisCasePallet(
                    AnalysisName, AnalysisDescription,
                    packProperties, palletProperties,
                    interlayers, null, null, null,
                    BuildConstraintSet(), analysisSel.Solution.LayerDescriptors);
                FormBrowseSolution form = new FormBrowseSolution(_doc, analysis);
                if (DialogResult.OK == form.ShowDialog())
                {
                }
            }
            catch (Exception ex)
            {
                _log.Error(ex.Message);
            }
        }
Example #10
0
 public Pack(uint pickId, PackProperties packProperties, BoxPosition position)
     : base(pickId, packProperties, position)
 {
     _packProperties    = packProperties;
     _arrangement       = _packProperties.Arrangement;
     _innerBox          = new Box(0, packProperties.Box);
     _forceTransparency = false;
 }
Example #11
0
 public void ProcessAnalysis(PackPalletAnalysis analysis)
 {
     _packProperties       = analysis.PackProperties;
     _palletProperties     = analysis.PalletProperties;
     _interlayerProperties = analysis.InterlayerProperties;
     _constraintSet        = analysis.ConstraintSet;
     analysis.Solutions    = GenerateSolutions();
 }
Example #12
0
 public Pack(uint pickId, PackProperties packProperties)
     : base(pickId, packProperties.Length, packProperties.Width, packProperties.Height)
 {
     _packProperties    = packProperties;
     _arrangement       = _packProperties.Arrangement;
     _innerBox          = new Box(0, packProperties.Box);
     _forceTransparency = false;
     _boxPosition       = BoxPosition.Zero;
 }
Example #13
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);
        }
Example #14
0
        public Box(uint pickId, PackableBrick packable, LayerPosition bPosition)
        {
            // sanity checks
            CheckPosition(bPosition);
            // dimensions
            _pickId = pickId;
            _dim[0] = packable.Length;
            _dim[1] = packable.Width;
            _dim[2] = packable.Height;
            // set position
            _boxPosition = new BoxPosition(bPosition.Position, bPosition.LengthAxis, bPosition.WidthAxis);
            // colors
            _colors = Enumerable.Repeat <Color>(Color.Chocolate, 6).ToArray();

            BProperties bProperties = PackableToBProperties(packable);

            if (null != bProperties)
            {
                _colors = bProperties.Colors;

                BoxProperties boxProperties = bProperties as BoxProperties;
                if (null != boxProperties)
                {
                    List <Pair <HalfAxis.HAxis, Texture> > textures = boxProperties.TextureList;
                    foreach (Pair <HalfAxis.HAxis, Texture> tex in textures)
                    {
                        int iIndex = (int)tex.first;
                        if (null == _textureLists[iIndex])
                        {
                            _textureLists[iIndex] = new List <Texture>();
                        }
                        _textureLists[iIndex].Add(tex.second);
                    }
                    _showTape  = boxProperties.ShowTape;
                    _tapeWidth = boxProperties.TapeWidth;
                    _tapeColor = boxProperties.TapeColor;
                }
                // IsBundle ?
                _isBundle = bProperties.IsBundle;
                if (bProperties.IsBundle)
                {
                    BundleProperties bundleProp = packable as BundleProperties;
                    if (null != bundleProp)
                    {
                        _noFlats = bundleProp.NoFlats;
                    }
                }
            }
            PackProperties packProperties = packable as PackProperties;

            if (null != packProperties)
            {
            }
        }
Example #15
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));
        }
Example #16
0
 private void onPackChanged(object sender, EventArgs e)
 {
     if (sender != uCtrlOuterDimensions && !this.DesignMode)
     {
         double length = 0.0, width = 0.0, height = 0.0;
         PackProperties.GetDimensions(SelectedBox, BoxOrientation, Arrangement, ref length, ref width, ref height);
         uCtrlOuterDimensions.X = length;
         uCtrlOuterDimensions.Y = width;
         uCtrlOuterDimensions.Z = height;
     }
     graphCtrl.Invalidate();
     UpdateStatus(string.Empty);
 }
Example #17
0
 public Box(uint pickId, PackProperties packProperties, BoxPosition bPosition)
 {
     // sanity checks
     CheckPosition(bPosition);
     // dimensions
     _pickId = pickId;
     _dim[0] = packProperties.Length;
     _dim[1] = packProperties.Width;
     _dim[2] = packProperties.Height;
     // colors
     _colors = Enumerable.Repeat <Color>(Color.Chocolate, 6).ToArray();
     // set position
     _boxPosition = bPosition;
 }
Example #18
0
 public Box(uint pickId, PackProperties packProperties, BoxPosition bPosition)
 {
     // sanity checks
     CheckPosition(bPosition);
     // dimensions
     PickId  = pickId;
     _dim[0] = packProperties.Length;
     _dim[1] = packProperties.Width;
     _dim[2] = packProperties.Height;
     // box position
     BoxPosition = new BoxPosition(Vector3D.Zero, HalfAxis.HAxis.AXIS_X_P, HalfAxis.HAxis.AXIS_Y_P);
     // colors
     Colors = Enumerable.Repeat <Color>(Color.Chocolate, 6).ToArray();
     // set position
     BoxPosition = bPosition;
 }
Example #19
0
 public override void UpdateStatus(string message)
 {
     if (!this.DesignMode)
     {
         double length = 0.0, width = 0.0, height = 0.0;
         PackProperties.GetDimensions(
             SelectedBox,
             BoxOrientation,
             Arrangement,
             ref length, ref width, ref height);
         if (uCtrlOuterDimensions.Checked && (uCtrlOuterDimensions.X < length || uCtrlOuterDimensions.Y < width || uCtrlOuterDimensions.Z < height))
         {
             message = Properties.Resources.ID_INVALIDOUTERDIMENSION;
         }
     }
     base.UpdateStatus(message);
 }
Example #20
0
 public Pack(uint pickId, PackProperties packProperties, BoxPosition position)
     : base(pickId, packProperties, position)
 {
     _packProperties = packProperties;
     _arrangement    = _packProperties.Arrangement;
     if (packProperties.Content is PackableBrick boxProperties)
     {
         _innerBox = new Box(0, boxProperties);
     }
     else if (packProperties.Content is CylinderProperties cylProp)
     {
         _innerBox = new Cylinder(0, cylProp);
     }
     else if (packProperties.Content is BottleProperties bottleProp)
     {
         _innerBox = new Bottle(0, bottleProp);
     }
     ForceTransparency = false;
 }
Example #21
0
        /// <summary>
        /// Creates a new PackProperties object
        /// </summary>
        public void CreateNewPackUI()
        {
            FormNewPack form = new FormNewPack(this, null);

            form.Boxes = Boxes;
            if (DialogResult.OK == form.ShowDialog())
            {
                PackProperties packProperties = CreateNewPack(
                    form.ItemName, form.ItemDescription
                    , form.SelectedBox
                    , form.Arrangement
                    , form.BoxOrientation
                    , form.Wrapper);
                if (form.HasForcedOuterDimensions)
                {
                    packProperties.ForceOuterDimensions(form.OuterDimensions);
                }
            }
        }
        private void OnSelChangeGrid(object sender, SourceGrid.RangeRegionChangedEventArgs e)
        {
            try
            {
                SourceGrid.Selection.RowSelection select = sender as SourceGrid.Selection.RowSelection;
                SourceGrid.Grid g = select.Grid as SourceGrid.Grid;

                SourceGrid.RangeRegion region = g.Selection.GetSelectionRegion();
                int[] indexes = region.GetRowsIndex();
                if (indexes.Length < 1 || indexes[0] < 1)
                {
                    _selectedAnalysis = null;
                }
                else
                {
                    _selectedAnalysis = _analyses[indexes[0] - 1];
                    // analysis name/description
                    if (null != _selectedAnalysis)
                    {
                        BoxProperties  box  = SelectedBox;
                        PackProperties pack = _selectedAnalysis.Content as PackProperties;
                        AnalysisName = string.Format("Analysis_{0}x{1}x{2}_{3}_on_{4}",
                                                     pack.Dim0, pack.Dim1, pack.Dim2, box.Name, _selectedAnalysis.Container.Name);
                        AnalysisDescription = string.Format("Packing {0}x{1}x{2} {3} on {4}",
                                                            pack.Dim0, pack.Dim1, pack.Dim2, box.Name, _selectedAnalysis.Container.Name);

                        UpdateStatus(string.Empty);
                    }
                    else
                    {
                        AnalysisName        = string.Empty;
                        AnalysisDescription = string.Empty;
                    }
                }

                graphCtrlPack.Invalidate();
                graphCtrlSolution.Invalidate();
            }
            catch (Exception ex)
            {
                _log.Error(ex.Message);
            }
        }
 public void Draw(Graphics3DControl ctrl, Graphics3D graphics)
 {
     if (null == SelectedAnalysis)
     {
         return;
     }
     try
     {
         AnalysisCasePallet analysis = SelectedAnalysis;
         if (graphCtrlPack == ctrl)
         {
             bool showDimensions = true;
             // build pack
             PackProperties packProperties = analysis.Content as PackProperties;
             Pack           pack           = new Pack(0, packProperties)
             {
                 ForceTransparency = true
             };
             graphics.AddBox(pack);
             if (showDimensions)
             {
                 graphics.AddDimensions(new DimensionCube(Vector3D.Zero, pack.Length, pack.Width, pack.Height, Color.Black, true));
                 if (packProperties.Wrap.Transparent)
                 {
                     graphics.AddDimensions(
                         new DimensionCube(
                             packProperties.InnerOffset
                             , packProperties.InnerLength, packProperties.InnerWidth, packProperties.InnerHeight
                             , Color.Red, false));
                 }
             }
         }
         else if (graphCtrlSolution == ctrl)
         {
             ViewerSolution sv = new ViewerSolution(SelectedAnalysis.Solution);
             sv.Draw(graphics, Transform3D.Identity);
         }
     }
     catch (Exception ex)
     {
         _log.Error(ex.Message);
     }
 }
Example #24
0
        public Box(uint pickId, PackProperties packProperties, BoxPosition bPosition)
        {
            if (!bPosition.IsValid)
            {
                throw new GraphicsException("Invalid BoxPosition: can not create box");
            }
            _pickId = pickId;
            _dim[0] = packProperties.Length;
            _dim[1] = packProperties.Width;
            _dim[2] = packProperties.Height;

            _colors = Enumerable.Repeat <Color>(Color.Chocolate, 6).ToArray();

            // set position
            Position = bPosition.Position;
            // set direction length
            LengthAxis = HalfAxis.ToVector3D(bPosition.DirectionLength);
            // set direction width
            WidthAxis = HalfAxis.ToVector3D(bPosition.DirectionWidth);
        }
        private void OnCreateAnalysis(object sender, EventArgs e)
        {
            try
            {
                // selected analysis -> get pack
                AnalysisCasePallet analysisSel = SelectedAnalysis;
                PackProperties     packSel     = analysisSel.Content as PackProperties;
                packSel.ID.SetNameDesc(AnalysisName, AnalysisName);

                // create pack
                PackProperties packProperties = _doc.CreateNewPack(packSel);
                // create analysis
                List <InterlayerProperties> interlayers = new List <InterlayerProperties>();
                AnalysisHomo packAnalysis = _doc.CreateNewAnalysisCasePallet(
                    AnalysisName, AnalysisDescription,
                    packProperties, SelectedPallet,
                    interlayers, null, null, null,
                    BuildConstraintSet(), analysisSel.Solution.LayerEncaps);
            }
            catch (Exception ex)
            {
                _log.Error(ex.Message);
            }
        }
        private void FillGrid()
        {
            try
            {
                // remove all existing rows
                gridSolutions.Rows.Clear();
                // *** IViews
                // captionHeader
                SourceGrid.Cells.Views.RowHeader        captionHeader   = new SourceGrid.Cells.Views.RowHeader();
                DevAge.Drawing.VisualElements.RowHeader veHeaderCaption = new DevAge.Drawing.VisualElements.RowHeader();
                veHeaderCaption.BackColor   = Color.SteelBlue;
                veHeaderCaption.Border      = DevAge.Drawing.RectangleBorder.NoBorder;
                captionHeader.Background    = veHeaderCaption;
                captionHeader.ForeColor     = Color.Black;
                captionHeader.Font          = new Font("Arial", GridFontSize, FontStyle.Bold);
                captionHeader.TextAlignment = DevAge.Drawing.ContentAlignment.MiddleCenter;
                // viewRowHeader
                SourceGrid.Cells.Views.ColumnHeader        viewColumnHeader = new SourceGrid.Cells.Views.ColumnHeader();
                DevAge.Drawing.VisualElements.ColumnHeader backHeader       = new DevAge.Drawing.VisualElements.ColumnHeader();
                backHeader.BackColor                   = Color.LightGray;
                backHeader.Border                      = DevAge.Drawing.RectangleBorder.NoBorder;
                viewColumnHeader.Background            = backHeader;
                viewColumnHeader.ForeColor             = Color.Black;
                viewColumnHeader.Font                  = new Font("Arial", GridFontSize, FontStyle.Regular);
                viewColumnHeader.ElementSort.SortStyle = DevAge.Drawing.HeaderSortStyle.None;
                // viewNormal
                CellBackColorAlternate viewNormal = new CellBackColorAlternate(Color.LightBlue, Color.White);
                // ***
                // set first row
                gridSolutions.BorderStyle  = BorderStyle.FixedSingle;
                gridSolutions.ColumnsCount = 7;
                gridSolutions.FixedRows    = 1;
                gridSolutions.Rows.Insert(0);
                // header
                int iCol = 0;
                SourceGrid.Cells.ColumnHeader columnHeader;
                // A1xA2xA3
                columnHeader = new SourceGrid.Cells.ColumnHeader("A1 x A2 x A3");
                columnHeader.AutomaticSortEnabled = false;
                columnHeader.View        = viewColumnHeader;
                gridSolutions[0, iCol++] = columnHeader;
                // dimensions
                columnHeader = new SourceGrid.Cells.ColumnHeader(
                    string.Format(Properties.Resources.ID_DIMENSIONS, UnitsManager.LengthUnitString));
                columnHeader.AutomaticSortEnabled = false;
                columnHeader.View        = viewColumnHeader;
                gridSolutions[0, iCol++] = columnHeader;
                // weight
                columnHeader = new SourceGrid.Cells.ColumnHeader(string.Format(Properties.Resources.ID_WEIGHT_WU, UnitsManager.MassUnitString));
                columnHeader.AutomaticSortEnabled = false;
                columnHeader.View        = viewColumnHeader;
                gridSolutions[0, iCol++] = columnHeader;
                // #packs
                columnHeader = new SourceGrid.Cells.ColumnHeader("#");
                columnHeader.AutomaticSortEnabled = false;
                columnHeader.View        = viewColumnHeader;
                gridSolutions[0, iCol++] = columnHeader;
                // weight
                columnHeader = new SourceGrid.Cells.ColumnHeader(string.Format(Properties.Resources.ID_PALLETWEIGHT, UnitsManager.MassUnitString));
                columnHeader.AutomaticSortEnabled = false;
                columnHeader.View        = viewColumnHeader;
                gridSolutions[0, iCol++] = columnHeader;
                // efficiency
                columnHeader = new SourceGrid.Cells.ColumnHeader(Properties.Resources.ID_EFFICIENCYPERCENTAGE);
                columnHeader.AutomaticSortEnabled = false;
                columnHeader.View        = viewColumnHeader;
                gridSolutions[0, iCol++] = columnHeader;
                // maximum space
                columnHeader = new SourceGrid.Cells.ColumnHeader(string.Format(Properties.Resources.ID_MAXIMUMSPACE, UnitsManager.LengthUnitString));
                columnHeader.AutomaticSortEnabled = false;
                columnHeader.View        = viewColumnHeader;
                gridSolutions[0, iCol++] = columnHeader;

                int iRow = 0;
                foreach (AnalysisHomo analysis in _analyses)
                {
                    AnalysisCasePallet analysisCasePallet = analysis as AnalysisCasePallet;
                    PackProperties     pack = analysisCasePallet.Content as PackProperties;
                    int layerCount          = analysisCasePallet.Solution.Layers.Count;
                    if (layerCount < 1)
                    {
                        continue;
                    }
                    int    packPerLayerCount = analysisCasePallet.Solution.Layers[0].BoxCount;
                    int    itemCount         = analysisCasePallet.Solution.ItemCount;
                    double palletWeight      = analysisCasePallet.Solution.Weight;
                    double volumeEfficiency  = analysisCasePallet.Solution.VolumeEfficiency;
                    double maximumSpace      = analysisCasePallet.Solution.LayerCount > 0 ? analysisCasePallet.Solution.LayerMaximumSpace(0) : 0;


                    gridSolutions.Rows.Insert(++iRow);
                    iCol = 0;
                    gridSolutions[iRow, iCol++] = new SourceGrid.Cells.Cell(string.Format("{0} x {1} x {2}",
                                                                                          pack.Arrangement.Length, pack.Arrangement.Width, pack.Arrangement.Height));
                    gridSolutions[iRow, iCol++] = new SourceGrid.Cells.Cell(string.Format("{0:0.#} x {1:0.#} x {2:0.#}",
                                                                                          pack.OuterDimensions.X, pack.OuterDimensions.Y, pack.OuterDimensions.Z));
                    gridSolutions[iRow, iCol++] = new SourceGrid.Cells.Cell(string.Format("{0:0.###}",
                                                                                          pack.Weight));
                    gridSolutions[iRow, iCol++] = new SourceGrid.Cells.Cell(string.Format("{0} = {1} x {2}", itemCount, packPerLayerCount, layerCount));
                    gridSolutions[iRow, iCol++] = new SourceGrid.Cells.Cell(string.Format("{0:0.###}", palletWeight));
                    gridSolutions[iRow, iCol++] = new SourceGrid.Cells.Cell(string.Format("{0:0.#}", volumeEfficiency));
                    gridSolutions[iRow, iCol++] = new SourceGrid.Cells.Cell(string.Format("{0:0.#}", maximumSpace));
                }

                gridSolutions.AutoStretchColumnsToFitWidth = true;
                gridSolutions.AutoSizeCells();
                gridSolutions.Columns.StretchToFit();

                // select first solution
                if (gridSolutions.RowsCount > 1)
                {
                    gridSolutions.Selection.SelectRow(1, true);
                }
                else
                {
                    // grid empty -> clear drawing
                    _selectedAnalysis = null;
                    graphCtrlPack.Invalidate();
                    graphCtrlSolution.Invalidate();
                }
            }
            catch (Exception ex)
            {
                _log.Error(ex.Message);
            }
        }
Example #27
0
        private void btAddCasePalletAnalysis_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.Length
                                            , arrangement.Width
                                            , arrangement.Height
                                            , 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.Length
                                                    , arrangement.Width
                                                    , arrangement.Height
                                                    , 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);

/*
 *              // add new case
 *              CaseOfBoxesProperties caseProperties = _document.CreateNewCaseOfBoxes(
 *                  name, description
 *                  , boxProperties
 *                  , sol.CaseDefinition
 *                  , BuildCaseOptimConstraintSet());
 *              // set color
 *              caseProperties.SetColor(Color.Chocolate);
 *              // add new pallet analysis
 *              List<CasePalletSolution> palletSolutionList = new List<CasePalletSolution>();
 *              palletSolutionList.Add(sol.PalletSolution);
 *              Analysis analysis = _document.CreateNewCasePalletAnalysis(
 *                  analysisName
 *                  , analysisDescription
 *                  , caseProperties
 *                  , palletProperties
 *                  , null, null
 *                  , null, null, null
 *                  , BuildCasePalletConstraintSet()
 *                  , palletSolutionList);
 */
            }
            catch (Exception ex)
            {
                _log.Error(ex.ToString());
            }
        }
Example #28
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.Length
                                            , arrangement.Width
                                            , arrangement.Height
                                            , 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.Length
                                                    , arrangement.Width
                                                    , arrangement.Height
                                                    , 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
                ConstraintSetCasePallet constraintSet = new ConstraintSetCasePallet()
                {
                    Overhang = new Vector2D(OverhangX, OverhangY)
                };
                constraintSet.SetMaxHeight(new OptDouble(true, MaximumPalletHeight));
                constraintSet.OptMaxWeight = new OptDouble(false, 0);
                // interlayer
                List <InterlayerProperties> listInterlayers = new List <InterlayerProperties>();
                // layer desc
                List <LayerDesc> layerDescs = new List <LayerDesc>();
                // create analysis
                Analysis analysis = _document.CreateNewAnalysisCasePallet(
                    analysisName, analysisDescription
                    , pack, palletProperties
                    , listInterlayers
                    , null, null, null
                    , constraintSet, layerDescs
                    );

                /*
                 * // 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());
            }
        }
Example #29
0
 public FormNewPack(Document doc, PackProperties packProperties)
     : base(doc, packProperties)
 {
     InitializeComponent();
     _packProperties = packProperties;
 }
Example #30
0
 public SubContent(PackProperties pack)
 {
     PackProperties = pack;
 }