protected override void OnClick() { if (Module1.Current.SelectedItems == null) { return; } int aantalVerdiepingen; double verdiepingsHoogte; QueuedTask.Run(() => { var editOperation = new EditOperation(); foreach (KeyValuePair <MapMember, List <long> > item in Module1.Current.SelectedItems) { var layer = item.Key as BasicFeatureLayer; foreach (long oid in item.Value) { var feature = layer.Inspect(oid); aantalVerdiepingen = new Random().Next(3, 10); verdiepingsHoogte = double.Parse(feature["PandHoogte"].ToString()) / aantalVerdiepingen; feature["PandHoogte"] = verdiepingsHoogte; editOperation.Modify(feature); for (int i = 1; i < aantalVerdiepingen; i++) { editOperation.Create(layer, GeometryEngine.Move(feature.Shape, 0, 0, (i * (verdiepingsHoogte * 2))), new Action <long>(x => newFloorCreated(x, layer, verdiepingsHoogte, feature.Shape.Extent.ZMin))); } } } bool succeded = editOperation.Execute(); }); }
protected override Task <bool> OnSketchCompleteAsync(Geometry geometry) { //Run on MCT return(QueuedTask.Run(() => { //get the templates var map = MapView.Active.Map; IEnumerable <Layer> layers = map.GetLayersAsFlattenedList().AsEnumerable(); Layer mainLayer = layers.FirstOrDefault(l => l.Name == "main"); Layer mhLayer = layers.FirstOrDefault(l => l.Name == "Manhole"); Layer conLayer = layers.FirstOrDefault(l => l.Name == "Connector"); if ((mainLayer == null) || (mhLayer == null) || (conLayer == null)) { return false; } var mainTemplate = mainLayer.GetTemplate("main"); var mhTemplate = mhLayer.GetTemplate("Manhole"); var conTemplate = conLayer.GetTemplate("Connector"); if ((mainTemplate == null) || (mhTemplate == null) || (conTemplate == null)) { return false; } var op = new EditOperation(); op.Name = "Create main-connector-manhole"; op.SelectModifiedFeatures = false; op.SelectNewFeatures = false; //create the main geom var mainGeom = GeometryEngine.Move(geometry, 0, 0, -20); op.Create(mainTemplate, mainGeom); //create manhole points and connector foreach (var pnt in ((Polyline)geometry).Points) { //manhole point at sketch vertex op.Create(mhTemplate, pnt); //vertical connector between mahole and main var conPoints = new List <MapPoint>(); conPoints.Add(pnt); //top of vertical connector conPoints.Add(GeometryEngine.Move(pnt, 0, 0, -20)); //bottom of vertical connector var conPolyLine = PolylineBuilder.CreatePolyline(conPoints); op.Create(conTemplate, conPolyLine); } return op.Execute(); })); }
private void BlowUpBuilding(MapViewMouseButtonEventArgs e) { int aantalVerdiepingen; double verdiepingsHoogte; QueuedTask.Run(() => { Dictionary <MapMember, List <long> > selectedItems = GetSelectedItems(e); EditOperation editOperation = new EditOperation(); foreach (KeyValuePair <MapMember, List <long> > item in selectedItems) { BasicFeatureLayer layer = item.Key as BasicFeatureLayer; if (layer.ShapeType != ArcGIS.Core.CIM.esriGeometryType.esriGeometryPolygon) { continue; } foreach (long oid in item.Value) { var feature = layer.Inspect(oid); aantalVerdiepingen = new Random().Next(3, 10); verdiepingsHoogte = double.Parse(feature["PandHoogte"].ToString()) / aantalVerdiepingen; double buildingZMinValue = feature.Shape.Extent.ZMin; feature["PandHoogte"] = verdiepingsHoogte; editOperation.Modify(feature); for (int i = 1; i < aantalVerdiepingen; i++) { var newFloorGeometry = GeometryEngine.Move(feature.Shape, 0, 0, (i * (verdiepingsHoogte * 2))); editOperation.Create(layer, newFloorGeometry, new Action <long>(x => OnNewFloorCreated(x, layer, verdiepingsHoogte, buildingZMinValue))); } } } bool succeded = editOperation.Execute(); }); }