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); }
public void DebugScratchpad() { var demo = DemoData.polyCases.Where(x => x.name == "Two Triangles With Common Edge").First(); var buildLog = new BuildLog(); var clipper = new PolyBool() { BuildLog = buildLog }; var result = clipper.intersect(demo.poly1, demo.poly2); var json = buildLog.ToJSON(); using (var file = File.CreateText("DebugLog.json")) { file.Write(json); } Assert.IsNotNull(result); validateResult(result, demo.validate[0], demo.name, "intersect"); }