This document is archived and information here might be outdated. Recommended version. |
ArcObjects Help for .NET developers > ESRI.ArcGIS.Snippets > Snippets > Flip Line Direction Snippet (ArcObjects .NET 10.4 SDK) |
The edit sketch direction of all of the selected polyline features is changed or flipped.
///<summary>The edit sketch direction of all of the selected polyline features is changed or flipped.</summary> /// ///<param name="application">An IApplication interface.</param> ///<param name="editor">An IEditor interface.</param> /// ///<remarks>Already must have a reference to IApplication and get the editor and start an edit session in the edit session you must have an edit selection, the code checks to make sure it is a line feature class and makes sure that there is an edit selection.</remarks> public void FlipLineDirection(ESRI.ArcGIS.Framework.IApplication application, ESRI.ArcGIS.Editor.IEditor editor) { if(application == null || editor == null) { System.Windows.Forms.MessageBox.Show("Flip operation aborted"); return; } ESRI.ArcGIS.Editor.IEditLayers editLayers=editor as ESRI.ArcGIS.Editor.IEditLayers; // set up the progress bar and convert the number of selected features into an integer value. System.Int32 step=System.Convert.ToInt32(editor.SelectionCount / 100); ESRI.ArcGIS.esriSystem.IStatusBar statusBar=application.StatusBar; ESRI.ArcGIS.esriSystem.IStepProgressor stepProrogressor=statusBar.ProgressBar; stepProrogressor.MinRange=1; stepProrogressor.MaxRange=100; stepProrogressor.Message="Flipping features..."; stepProrogressor.Position=0; stepProrogressor.StepValue=1; stepProrogressor.Show(); try { // flip all the selected features in an edit operation editor.StartOperation(); ESRI.ArcGIS.Geodatabase.IEnumFeature enumFeature=editor.EditSelection; enumFeature.Reset(); for (System.Int32 featCount=0; featCount <= editor.SelectionCount - 1; featCount++) { ESRI.ArcGIS.Geodatabase.IFeature feature=enumFeature.Next(); if(!(feature is ESRI.ArcGIS.Geometry.ICurve)) { continue; } ESRI.ArcGIS.Geometry.ICurve curve=feature.Shape as ESRI.ArcGIS.Geometry.ICurve; curve.ReverseOrientation(); feature.Shape=curve; feature.Store(); if (featCount == step) { stepProrogressor.Step(); step=step + System.Convert.ToInt32(editor.SelectionCount / 100); } } editor.StopOperation("Flip"); stepProrogressor.Hide(); return; } catch(System.Exception e) { editor.AbortOperation(); System.Windows.Forms.MessageBox.Show("Flip operation aborted"); return; } }
'''<summary>The edit sketch direction of all of the selected polyline features is changed or flipped.</summary> ''' '''<param name="application">An IApplication interface.</param> '''<param name="editor">An IEditor interface.</param> ''' '''<remarks>Already must have a reference to IApplication and get the editor and start an edit session in the edit session you must have an edit selection, the code checks to make sure it is a line feature class and makes sure that there is an edit selection.</remarks> Public Sub FlipLineDirection(ByVal application As ESRI.ArcGIS.Framework.IApplication, ByVal editor As ESRI.ArcGIS.Editor.IEditor) If application Is Nothing OrElse editor Is Nothing Then System.Windows.Forms.MessageBox.Show("Flip operation aborted") Return End If Dim editLayers As ESRI.ArcGIS.Editor.IEditLayers=TryCast(editor, ESRI.ArcGIS.Editor.IEditLayers) ' set up the progress bar and convert the number of selected features into an integer value. Dim [step] As System.Int32=System.Convert.ToInt32(editor.SelectionCount / 100) Dim statusBar As ESRI.ArcGIS.esriSystem.IStatusBar=application.StatusBar Dim stepProgressor As ESRI.ArcGIS.esriSystem.IStepProgressor=statusBar.ProgressBar With stepProgressor .MinRange=1 .MaxRange=100 .Message="Flipping features..." .Position=0 .StepValue=1 .Show() End With Try ' flip all the selected features in an edit operation editor.StartOperation() Dim enumFeature As ESRI.ArcGIS.Geodatabase.IEnumFeature=editor.EditSelection enumFeature.Reset() Dim featCount As System.Int32=0 Do While featCount <= editor.SelectionCount - 1 Dim feature As ESRI.ArcGIS.Geodatabase.IFeature=enumFeature.Next If Not(TypeOf feature Is ESRI.ArcGIS.Geometry.ICurve) Then featCount += 1 Continue Do End If Dim curve As ESRI.ArcGIS.Geometry.ICurve=TryCast(feature.Shape, ESRI.ArcGIS.Geometry.ICurve) ' Dynamic Cast curve.ReverseOrientation() feature.Shape=curve feature.Store() If featCount=[step] Then stepProgressor.Step() [step]=[step] + System.Convert.ToInt32(editor.SelectionCount / 100) End If featCount += 1 Loop editor.StopOperation("Flip") stepProgressor.Hide() Return Catch e As System.Exception editor.AbortOperation() System.Windows.Forms.MessageBox.Show("Flip operation aborted") Return End Try End Sub