private Task OnBeforeSketchCompletedEvent(BeforeSketchCompletedEventArgs arg) { //replace curved sketch segments with straight segments //return if sketch geometry is not polygon or polyline if (!(arg.Sketch.GeometryType == GeometryType.Polyline || arg.Sketch.GeometryType == GeometryType.Polygon)) { return(Task.CompletedTask); } var sketchMP = arg.Sketch as Multipart; //if the sketch doesnt have curves then return if (!sketchMP.HasCurves) { return(Task.CompletedTask); } //itterate through each sketch part var newParts = new List <List <Segment> >(); foreach (var sketchPart in sketchMP.Parts) { //itterate through each sketch segment var newSegments = new List <Segment>(); foreach (var sketchSegment in sketchPart) { if (sketchSegment.IsCurve) { newSegments.Add(LineBuilder.CreateLineSegment(sketchSegment.StartPoint, sketchSegment.EndPoint)); } else { newSegments.Add(sketchSegment); } } newParts.Add(newSegments); } //create the new sketch geometry based on sketch type and set back on the sketch if (arg.Sketch.GeometryType == GeometryType.Polyline) { var polyline = PolylineBuilder.CreatePolyline(newParts); arg.SetSketchGeometry(polyline); } else { var polygon = PolygonBuilder.CreatePolygon(newParts); arg.SetSketchGeometry(polygon); } return(Task.CompletedTask); }
private async Task OnBeforeSketchCompletedEvent(BeforeSketchCompletedEventArgs arg) { //check if surfacename is in the map if (arg.MapView.Map.ElevationSurfaces.Count(s => s.Name == surfaceName) == 0) { MessageBox.Show("Surface: " + surfaceName + " is not in the map"); return; } //set the sketch Z values from the specified elevation surface var ZResult = await arg.MapView.Map.GetZsFromSurfaceAsync(arg.Sketch, surfaceName); if (ZResult.Status == SurfaceZsResultStatus.Ok) { arg.SetSketchGeometry(ZResult.Geometry); } }