Ejemplo n.º 1
0
 void IEditTask.Activate(IEditor Editor, IEditTask oldTask)
 {
     if (Editor == null)
     {
         return;
     }
 }
Ejemplo n.º 2
0
        void IEditTask.Activate(IEditor Editor, IEditTask oldTask)
        {
            if (Editor == null)
            {
                return;
            }

            //Initialize class member variables.
            m_editor     = Editor;
            m_editSketch = Editor as IEditSketch;
            m_editSketch.GeometryType = esriGeometryType.esriGeometryPolyline;
            m_editLayer = Editor as IEditLayers;
            m_mxDoc     = Editor.Parent.Document as IMxDocument;

            //Wire editor events.
            ((IEditEvents_Event)m_editor).OnCurrentLayerChanged +=
                new IEditEvents_OnCurrentLayerChangedEventHandler(OnCurrentLayerChanged);
        }
        private static bool CheckEditTask()
        {
            bool     result = false;
            IEditor3 editor = ArcUtils.Editor;

            if (editor != null)
            {
                IEditTask task = editor.CurrentTask;

                if (task != null)
                {
                    var uniqueName = task as IEditTaskName;

                    if (uniqueName != null)
                    {
                        string name = uniqueName.UniqueName;
                        result = (name == "GarciaUI_CreateNewFeatureTask") || (name == "GarciaUI_ReshapeFeatureTask");
                    }
                }
            }

            return(result);
        }
        private static void OnCurrentTaskChanged()
        {
            try
            {
                IEditor3 editor = ArcUtils.Editor;
                LogClient.Info("On CurrentTask Changed");
                _doSelection = true;

                if (editor != null)
                {
                    var sketch     = editor as IEditSketch3;
                    var editLayers = editor as IEditLayers;

                    if ((sketch != null) && (editLayers != null))
                    {
                        IEditTask   task         = editor.CurrentTask;
                        ILayer      currentLayer = editLayers.CurrentLayer;
                        VectorLayer vectorLayer  = (EditFeatures.Count != 1)
              ? ((currentLayer == null) ? null : GetLayer(currentLayer))
              : GetLayer(EditFeatures[0]);

                        if ((task != null) && ((vectorLayer != null) && (vectorLayer.IsVisibleInGlobespotter)))
                        {
                            var taskName = task as IEditTaskName;

                            if (taskName != null)
                            {
                                IGeometry geometry = sketch.Geometry;
                                string    name     = taskName.UniqueName;

                                if (name == "GarciaUI_ModifyFeatureTask")
                                {
                                    Measurement measurement = Measurement.Get(geometry, false);

                                    if (measurement != null)
                                    {
                                        int nrPoints;
                                        var ptColl = measurement.ToPointCollection(geometry, out nrPoints);

                                        if (ptColl != null)
                                        {
                                            ISketchOperation2 sketchOp = new SketchOperationClass();
                                            sketchOp.Start(editor);

                                            for (int j = 0; j < nrPoints; j++)
                                            {
                                                IPoint           point  = ptColl.Point[j];
                                                MeasurementPoint mpoint = measurement.IsPointMeasurement
                          ? measurement.GetPoint(point, false)
                          : measurement.GetPoint(point);

                                                double m      = (mpoint == null) ? double.NaN : mpoint.M;
                                                double z      = (mpoint == null) ? double.NaN : mpoint.Z;
                                                IPoint point2 = new PointClass {
                                                    X = point.X, Y = point.Y, Z = z, M = m, ZAware = sketch.ZAware
                                                };
                                                ptColl.UpdatePoint(j, point2);

                                                if (measurement.IsPointMeasurement)
                                                {
                                                    sketch.Geometry = point2;
                                                }
                                            }

                                            if (!measurement.IsPointMeasurement)
                                            {
                                                sketch.Geometry = ptColl as IGeometry;
                                            }

                                            geometry = sketch.Geometry;

                                            if (geometry != null)
                                            {
                                                sketchOp.Finish(geometry.Envelope, esriSketchOperationType.esriSketchOperationGeneral, geometry);
                                            }
                                        }

                                        measurement.SetSketch();
                                        measurement.OpenMeasurement();
                                        measurement.DisableMeasurementSeries();
                                    }
                                }
                                else
                                {
                                    Measurement measurement = Measurement.Get(geometry, false);

                                    if (measurement != null)
                                    {
                                        measurement.EnableMeasurementSeries();
                                    }

                                    OnSelectionChanged();
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LogClient.Error("VectorLayer.OnCurrentTaskChanged", ex.Message, ex);
                Trace.WriteLine(ex.Message, "VectorLayer.OnCurrentTaskChanged");
            }
        }