// update the tree. private void UpdateTree() { polyTreeView.Nodes.Clear(); // append the root node. TreeNode rootNode = polyTreeView.Nodes.Add("Boundary Polygon"); rootNode.ImageIndex = 0; rootNode.SelectedImageIndex = 0; rootNode.Tag = m_polyMat.GetMatPolygon().GetID(); // append the inner polygons. Poly2DListEx uselessHoleList = m_polyMat.GetUselessHoleList(); for (int i = 0; i < uselessHoleList.Size(); i++) { Polygon2DEx poly = uselessHoleList.GetPolygonByIndex(i); String strNodeName = "Inner Polygon "; strNodeName += (i + 1); TreeNode polyNode = rootNode.Nodes.Add(strNodeName); polyNode.ImageIndex = 0; polyNode.SelectedImageIndex = 0; polyNode.Tag = poly.GetID(); } // expand the tree. polyTreeView.ExpandAll(); }
private void RemnantMatInfoForm_Load(object sender, EventArgs e) { // build the remnant material from the sheet. double dMergeDis = 10; m_polyMat = NestFacadeEx.BuildRemnantMat(m_sheet, m_dConnectTol, dMergeDis); // init the tree. UpdateTree(); /************************************************************************/ // init the view port. m_matViewPort.InitEnv(matViewWnd.Handle, 0.00001, 10000); // all polygons in material. Poly2DListEx poly2DList = new Poly2DListEx(); poly2DList.AddPoly(m_polyMat.GetMatPolygon()); poly2DList.AddPolyList(m_polyMat.GetUselessHoleList()); // set the drawing area. Int32 iWidth = matViewWnd.Right - matViewWnd.Left; Int32 iHeight = matViewWnd.Bottom - matViewWnd.Top; Rect2DEx geomRect = poly2DList.GetRectBox(); Point2DEx leftBottomPt = new Point2DEx(); double dXDirRange = m_matViewPort.GetFitAllParam(iWidth, iHeight, geomRect, 1.2, leftBottomPt); m_matViewPort.SetDrawingArea(1.1 * dXDirRange, iWidth, iHeight, leftBottomPt); /************************************************************************/ mergeDisTextBox.Text = dMergeDis.ToString("0.000"); }
// draw the material. static public void DrawMat(MatEx mat, GlViewPortEx viewPort) { viewPort.SetDrawColor(Color.White); viewPort.SetLineWidth(1); if (mat.GetMatType() == MAT_TYPE_EX.MAT_EX_RECT) { RectMatEx rectMat = (RectMatEx)mat; Rect2DEx rect2D = rectMat.GetBoundaryRect(); Polygon2DEx poly = new Polygon2DEx(); poly.AddPoint(new Point2DEx(rect2D.GetXMin(), rect2D.GetYMin())); poly.AddPoint(new Point2DEx(rect2D.GetXMax(), rect2D.GetYMin())); poly.AddPoint(new Point2DEx(rect2D.GetXMax(), rect2D.GetYMax())); poly.AddPoint(new Point2DEx(rect2D.GetXMin(), rect2D.GetYMax())); viewPort.DrawPolygon(poly); } else if (mat.GetMatType() == MAT_TYPE_EX.MAT_EX_POLY) { PolyMatEx polyMat = (PolyMatEx)mat; Polygon2DEx poly = polyMat.GetMatPolygon(); viewPort.DrawPolygon(poly); // draw the useless holes. Poly2DListEx uselessHoles = polyMat.GetUselessHoleList(); for (int i = 0; i < uselessHoles.Size(); i++) { viewPort.DrawPolygon(uselessHoles.GetPolygonByIndex(i)); } } }
private void reGenBtn_Click(object sender, EventArgs e) { // verify input. try { Convert.ToDouble(mergeDisTextBox.Text); } catch (FormatException exception) { MessageBox.Show("Incorrect input: " + exception.Message, "NestProfessor DEMO"); return; } // re-generate the remnant material from the sheet. m_polyMat = NestFacadeEx.BuildRemnantMat(m_sheet, m_dConnectTol, Convert.ToDouble(mergeDisTextBox.Text)); // update tree nodes. UpdateTree(); /************************************************************************/ // adjust the drawing area. // the boundary rect of all polygons in material. Poly2DListEx poly2DList = new Poly2DListEx(); poly2DList.AddPoly(m_polyMat.GetMatPolygon()); poly2DList.AddPolyList(m_polyMat.GetUselessHoleList()); Rect2DEx geomRect = poly2DList.GetRectBox(); // set the drawing area. Int32 iWidth = matViewWnd.Right - matViewWnd.Left; Int32 iHeight = matViewWnd.Bottom - matViewWnd.Top; Point2DEx leftBottomPt = new Point2DEx(); double dXDirRange = m_matViewPort.GetFitAllParam(iWidth, iHeight, geomRect, 1.2, leftBottomPt); m_matViewPort.SetDrawingArea(1.1 * dXDirRange, iWidth, iHeight, leftBottomPt); m_selPoly = null; Invalidate(); /************************************************************************/ }