Add to current selection when creating new features

160
2
08-04-2020 10:51 AM
BrianBulla
Regular Contributor

Hi,

I'm using a MapTool to create some custom features to represent Sanitary Service Connections.  The completed line contains a line, with a point on either end.  My code is working fine, but I'd like to keep all of the created features selected.  When I go to create the next service connection, the previous one de-selects.  Is there a way to keep all features selected through the code??

        protected override Task<bool> OnSketchCompleteAsync(Geometry geometry)
        {
            var pointCollection = ((Multipart)geometry).Points;
            MapPoint connectionPoint = pointCollection[0];
            MapPoint plugPoint = pointCollection[1];

            

            QueuedTask.Run(() =>
            {
                if (IntersectsLayer(connectionPoint, gravityMainLayer) == false)
                {
                    ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("The starting point must intersect the GravitySewer layer.", "Error");
                    return;
                }

                var editOp = new EditOperation();
                editOp.Name = "Create new Sewer Connection";

                var connectionAttributes = new Dictionary<string, object>
                {
                    {"SUBTYPECD", 3 },
                    {"Shape", connectionPoint.Clone() }
                };

                //editOp.Create(sewerFittingsLayer, connectionPoint);
                editOp.Create(sewerFittingsLayer, connectionAttributes);

                var plugAttributes = new Dictionary<string, object>
                {
                    {"SUBTYPECD", 2 },
                    {"Shape", plugPoint.Clone() }
                    //determine ROTATION here also!!
                };

                editOp.Create(sewerFittingsLayer, plugAttributes);

                var lineAttributes = new Dictionary<string, object>
                {
                    {"SUBTYPECD", 1 },
                    {"Shape", GeometryEngine.Instance.ReverseOrientation((Multipart)geometry).Clone() },
                    {"DIAMETER", 50 },                    
                    //determine LENGTH here!!
                };

                editOp.Create(sewerServiceLayer, lineAttributes);


                var result = editOp.Execute();
                if (result != true || editOp.IsSucceeded != true)
                    throw new Exception($@"Edit failed: {editOp.ErrorMessage}");               

            });                       

            return base.OnSketchCompleteAsync(geometry);
        }
0 Kudos
2 Replies
SeanJones
Esri Regular Contributor

Hey Brian,

Another one for the list im afraid.

The only thing you can automagically control is if created or modified features get exclusively selected through an operation via the SelectNewFeatures and SelectModififiedFeatures methods on EditOperation. This is where we would add a 'Add to' method.

For now you would have to manually track changed features, either through rowevents or editcompleted and add them to the current selection set.

BrianBulla
Regular Contributor

OK.  Thanks Sean Jones.  I'm rebuilding an old ArcObjects tool I created ages ago to work in ArcGIS Pro.  With ArcObjects all of the features stay selected, regardless of how many you make.  I think it just did it....no special programming from what I remember.  I'll have to go back and look at the code to be sure.

Anyways, "Yes" if something could be added in a future release to "Add to Selection" that would be great.

Thanks again!

0 Kudos