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()); } }
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()) { } }
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(); }
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); } }
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(); }
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(); }
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(); }
public FormNewHAnalysis(Document doc, HAnalysis analysis) { InitializeComponent(); _document = doc; _analysis = analysis; }