コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }