private void button6_Click(object sender, EventArgs e) { List <PolygonHelper> ar1 = new List <PolygonHelper>(); for (int i = 0; i < dataModel.SelectedItems.Length; i++) { ar1.Add(dataModel.SelectedItems[i] as PolygonHelper); } if (ar1.Count != 2) { dataModel.ParentForm.StatusMessage("there are no 2 polygon selected", StatusMessageType.Warning); return; } PolyBool pb = new PolyBool(); //var poly1 = GetPolygon(ar1[0].TransformedPoints().ToArray()); //var poly2 = GetPolygon(ar1[1].TransformedPoints().ToArray()); var poly1 = ar1[0].GetPolygon(); var poly2 = ar1[1].GetPolygon(); var r = pb.intersect(poly1, poly2); if (r.regions.Count == 0) { dataModel.ParentForm.StatusMessage("no intersections", StatusMessageType.Warning); return; } var pnts = r.regions.ToArray()[0].ToArray(); PolygonHelper ph = new PolygonHelper(); ph.Polygon.Points = pnts.Select(z => new SvgPoint(z.x, z.y)).ToArray(); dataModel.AddItem(ph); }
private void button1_Click(object sender, EventArgs e) { NFP p = new NFP(); if (!(dataModel.SelectedItem is PolygonHelper ph2)) { return; } p.Points = ph2.Polygon.Points.Select(z => new SvgPoint(z.X, z.Y)).ToArray(); var jType = (JoinType)comboBox1.SelectedIndex; double offset = double.Parse(textBox2.Text.Replace(",", "."), CultureInfo.InvariantCulture); double miterLimit = double.Parse(textBox3.Text.Replace(",", "."), CultureInfo.InvariantCulture); double curveTolerance = double.Parse(textBox4.Text.Replace(",", "."), CultureInfo.InvariantCulture); var offs = ClipperHelper.offset(p, offset, jType, curveTolerance: curveTolerance, miterLimit: miterLimit); //if (offs.Count() > 1) throw new NotImplementedException(); PolygonHelper ph = new PolygonHelper(); foreach (var item in ph2.Polygon.Childrens) { var offs2 = ClipperHelper.offset(item, -offset, jType, curveTolerance: curveTolerance, miterLimit: miterLimit); var nfp1 = new NFP(); if (offs2.Any()) { //if (offs2.Count() > 1) throw new NotImplementedException(); foreach (var zitem in offs2) { nfp1.Points = zitem.Points.Select(z => new SvgPoint(z.X, z.Y)).ToArray(); ph.Polygon.Childrens.Add(nfp1); } } } if (offs.Any()) { ph.Polygon.Points = offs.First().Points.Select(z => new SvgPoint(z.X, z.Y)).ToArray(); } foreach (var item in offs.Skip(1)) { var nfp2 = new NFP(); nfp2.Points = item.Points.Select(z => new SvgPoint(z.X, z.Y)).ToArray(); ph.Polygon.Childrens.Add(nfp2); } ph.OffsetX = ph2.OffsetX; ph.OffsetY = ph2.OffsetY; ph.Rotation = ph2.Rotation; dataModel.AddItem(ph); }
private void button13_Click(object sender, EventArgs e) { var res = dataModel.GetPairOfSelectedNfps(); if (res == null) { return; } var p = res[0]; var p2 = res[1]; var offs = DeepNest.getOuterNfp(p, p2); if (offs != null) { PolygonHelper ph = new PolygonHelper(); //ph.Polygon.Points = offs.Points.Select(z => new SvgPoint(z.X, z.Y)).ToArray(); ph.Polygon = DeepNest.clone2(offs); dataModel.AddItem(ph); } }
private void button4_Click(object sender, EventArgs e) { if (!(dataModel.SelectedItem is PolygonHelper ph2)) { return; } var hull = DeepNest.getHull(new NFP() { Points = ph2.TransformedPoints() }); PolygonHelper ph = new PolygonHelper(); ph.Polygon = hull; ph.Name = "hull"; dataModel.AddItem(ph); }
private void pointToolStripMenuItem1_Click(object sender, EventArgs e) { dataModel.AddItem(new PointHelper()); UpdateList(); }