public void Draw(Graphics3DControl ctrl, Graphics3D graphics) { // instantiate solution viewer HCylinderPalletSolutionViewer sv = new HCylinderPalletSolutionViewer(GetCurrentSolution()); sv.Draw(graphics); }
private void AppendHCylinderPalletSolutionElement(ReportData inputData, XmlElement elemPalletAnalysis, XmlDocument xmlDoc) { if (!inputData.IsHCylinderPalletAnalysis) return; string ns = xmlDoc.DocumentElement.NamespaceURI; SelHCylinderPalletSolution selSolution = inputData.SelHCylinderPalletSolution; HCylinderPalletSolution sol = inputData.HCylinderPalletSolution; // solution XmlElement elemSolution = xmlDoc.CreateElement("palletSolution", ns); elemPalletAnalysis.AppendChild(elemSolution); // title XmlElement elemTitle = xmlDoc.CreateElement("title", ns); elemTitle.InnerText = sol.Title; elemSolution.AppendChild(elemTitle); AppendElementValue(xmlDoc, elemSolution, "palletWeight", UnitsManager.UnitType.UT_MASS, inputData.ActualPalletWeight); AppendElementValue(xmlDoc, elemSolution, "palletHeight", UnitsManager.UnitType.UT_LENGTH, sol.PalletHeight); // cylinderCount XmlElement elemCaseCount = xmlDoc.CreateElement("cylinderCount", ns); elemCaseCount.InnerText = string.Format("{0}", sol.CylinderCount); elemSolution.AppendChild(elemCaseCount); // --- pallet images for (int i = 0; i < 5; ++i) { // initialize drawing values string viewName = string.Empty; Vector3D cameraPos = Vector3D.Zero; int imageWidth = ImageSizeDetail; bool showDimensions = false; switch (i) { case 0: viewName = "view_palletsolution_front"; cameraPos = Graphics3D.Front; imageWidth = ImageSizeDetail; break; case 1: viewName = "view_palletsolution_left"; cameraPos = Graphics3D.Left; imageWidth = ImageSizeDetail; break; case 2: viewName = "view_palletsolution_right"; cameraPos = Graphics3D.Right; imageWidth = ImageSizeDetail; break; case 3: viewName = "view_palletsolution_back"; cameraPos = Graphics3D.Back; imageWidth = ImageSizeDetail; break; case 4: viewName = "view_palletsolution_iso"; cameraPos = Graphics3D.Corner_0; imageWidth = ImageSizeWide; showDimensions = true; break; default: break; } // instantiate graphics Graphics3DImage graphics = new Graphics3DImage(new Size(imageWidth, imageWidth)); // set camera position graphics.CameraPosition = cameraPos; // instantiate solution viewer HCylinderPalletSolutionViewer sv = new HCylinderPalletSolutionViewer(sol); sv.ShowDimensions = showDimensions; sv.Draw(graphics); // --- XmlElement elemImage = xmlDoc.CreateElement(viewName, ns); TypeConverter converter = TypeDescriptor.GetConverter(typeof(Bitmap)); elemImage.InnerText = Convert.ToBase64String((byte[])converter.ConvertTo(graphics.Bitmap, typeof(byte[]))); XmlAttribute styleAttribute = xmlDoc.CreateAttribute("style"); styleAttribute.Value = string.Format("width:{0}pt;height:{1}pt", graphics.Bitmap.Width / 3, graphics.Bitmap.Height / 3); elemImage.Attributes.Append(styleAttribute); elemSolution.AppendChild(elemImage); // Save image ? SaveImageAs(graphics.Bitmap, viewName + ".png"); } }