Exemplo n.º 1
0
 protected void Compute()
 {
     if (null == HAnalysis)
     {
         return;
     }
     HAnalysis.ClearContent();
     HAnalysis.AddContent(ListContentItems);
     LoadContainer();
     HAnalysis.ConstraintSet = ConstraintSet;
     if (!HAnalysis.IsValid)
     {
         return;
     }
     try
     {
         HSolver solver = new HSolver();
         Solutions = solver.BuildSolutions(HAnalysis);
     }
     catch (InvalidOperationException ex)
     {
         _log.WarnFormat("Solver -> {0}", ex.Message);
     }
     catch (Exception ex)
     {
         _log.Error(ex.ToString());
     }
 }
Exemplo n.º 2
0
        public void EditAnalysis(HAnalysis analysis)
        {
            // search for DockContentHAnalysis window and close it
            var seq = (from view in Views
                       where view is DockContentHAnalysisCasePallet && (analysis == (view as DockContentHAnalysisCasePallet).Analysis)
                       select view);

            if (seq.Count() > 0)
            {
                seq.First().Close();
            }

            // instantiate a form to edit analysis
            Form form = null;

            if (analysis is HAnalysisPallet)
            {
                form = new FormNewHAnalysisCasePallet(this, analysis);
            }
            else
            {
                MessageBox.Show("Unexpected analysis type!");
                return;
            }
            if (DialogResult.OK == form.ShowDialog())
            {
            }
        }
Exemplo n.º 3
0
        public void OnAnalysisUpdated(Document doc, HAnalysis analysis)
        {
            TreeNode analysisNode = FindNode(null, new NodeTag(NodeTag.NodeType.NT_ANALYSIS, doc, analysis));

            if (null != analysisNode)
            {
                analysisNode.Name = analysis.Name;
            }
        }
        public DockContentHAnalysis(IDocument document, HAnalysis analysis)
            : base(document)
        {
            Analysis = analysis;
            Analysis.AddListener(this);
            Solution = Analysis.Solution;

            InitializeComponent();
        }
Exemplo n.º 5
0
        public FormNewHAnalysis(Document doc, HAnalysis analysis)
        {
            InitializeComponent();
            _document = doc;
            _analysis = analysis;

            if (null == _analysis)
            {
                _analysis       = IntantiateTempAnalysis();
                UseTempAnalysis = true;
                _analysis.ID.SetNameDesc(doc.GetValidNewAnalysisName("HAnalysis"), string.Empty);
            }
        }
Exemplo n.º 6
0
        public void OnNewAnalysisCreated(Document doc, HAnalysis analysis)
        {
            // get parent node
            TreeNode parentNode = FindNode(null, new NodeTag(NodeTag.NodeType.NT_LISTANALYSIS, doc));
            // instantiate analysis node
            TreeNode nodeAnalysis = new TreeNode(analysis.Name, ToIconIndex(analysis), ToIconIndex(analysis))
            {
                Tag = new NodeTag(NodeTag.NodeType.NT_ANALYSIS, doc, analysis)
            };

            // insert context menu
            parentNode.Nodes.Add(nodeAnalysis);
            parentNode.Expand();
        }
Exemplo n.º 7
0
        public DockContentView CreateViewHAnalysis(HAnalysis analysis)
        {
            DockContentView form = null;

            if (analysis is HAnalysisPallet)
            {
                form = new DockContentHAnalysisCasePallet(this, analysis);
            }
            else
            {
                _log.Error(string.Format("Analysis ({0}) type not handled", analysis.Name));
                return(null);
            }
            AddView(form);
            return(form);
        }
 public FormNewHAnalysisCasePallet(Document doc, HAnalysis analysis)
     : base(doc, analysis)
 {
     InitializeComponent();
 }
Exemplo n.º 9
0
        public List <HSolution> BuildSolutions(HAnalysis analysis)
        {
            List <ContentItem> contentItems = new List <ContentItem>(analysis.Content);
            // *** Sharp3DBinPacking : begin
            // create cuboid list
            List <Cuboid> listCuboids           = new List <Cuboid>();
            bool          bAllowAllOrientations = true;

            foreach (ContentItem ci in contentItems)
            {
                for (int i = 0; i < ci.Number; ++i)
                {
                    if (ci.Pack is BoxProperties b)
                    {
                        listCuboids.Add(
                            new Cuboid((decimal)b.Length, (decimal)b.Width, (decimal)b.Height)
                        {
                            Tag          = b,
                            AllowOrientX = ci.AllowOrientX,
                            AllowOrientY = ci.AllowOrientY,
                            AllowOrientZ = ci.AllowOrientZ
                        }
                            );
                    }
                    if (!ci.AllowOrientX || !ci.AllowOrientY || !ci.AllowOrientZ)
                    {
                        bAllowAllOrientations = false;
                    }
                }
            }
            // dim container + offset
            Vector3D dimContainer = analysis.DimContainer(0), offset = analysis.Offset(0);

            // Create a bin packer instance
            // The default bin packer will test all algorithms and try to find the best result
            // BinPackerVerifyOption is used to avoid bugs, it will check whether the result is correct
            var binPacker = BinPacker.GetDefault(BinPackerVerifyOption.BestOnly, bAllowAllOrientations);
            // The result contains bins which contains packed cuboids whith their coordinates
            var parameter = new BinPackParameter(
                (decimal)dimContainer.X, (decimal)dimContainer.Y, (decimal)dimContainer.Z,
                listCuboids.ToArray())
            {
            };

            var binPackResult = binPacker.Pack(parameter);

            List <HSolution> solutions = new List <HSolution>();
            //foreach (var result in binPackResult.BestResult)
            //{
            HSolution sol = new HSolution("")
            {
                Analysis = analysis
            };

            foreach (var bins in binPackResult.BestResult)
            {
                HSolItem hSolItem = sol.CreateSolItem();
                foreach (var cuboid in bins)
                {
                    CuboidToSolItem(contentItems, offset, cuboid, out int index, out BoxPosition pos);
                    hSolItem.InsertContainedElt(index, pos);
                }
            }
            solutions.Add(sol);
            //}
            // *** Sharp3DBinPacking : end

            return(solutions);
        }
 public DockContentHAnalysisCasePallet(IDocument document, HAnalysis analysis)
     : base(document, analysis)
 {
     InitializeComponent();
 }
Exemplo n.º 11
0
 public FormNewHAnalysis(Document doc, HAnalysis analysis)
 {
     InitializeComponent();
     _document = doc;
     _analysis = analysis;
 }