Customer Service | Training | Contact Us
You are here: Home > User Forums > arcgis desktop discussion forums > Thread Replies

ArcGIS Desktop Discussion Forums

ArcGIS Desktop - ArcObjects Data Editing forum

CHANGE ATTRIBUTES OF MANUALLY SELECTED FEAT...   NITIN SHINDE Nov 03, 2009
Re: CHANGE ATTRIBUTES OF MANUALLY SELECTED...   Paritosh Gupta Nov 03, 2009
Report Inappropriate Content • Top • Print • Reply    
Subject CHANGE ATTRIBUTES OF MANUALLY SELECTED FEATURES 
Author NITIN SHINDE 
Date Nov 03, 2009 
Message I WANT TO CHANGE ATTRIBUTES OF MANUALLY SELECTED FEATURES.... 
   
Report Inappropriate Content • Top • Print • Reply    
Subject Re: CHANGE ATTRIBUTES OF MANUALLY SELECTED FEATURES 
Author Paritosh Gupta 
Date Nov 03, 2009 
Message Hi
You can use IMap:FeatureSelection to catch selected features and use IWorkspaceEdit to alter desired attribute values. Below is a sample code:- 
 
Public Sub LoopThruSelection()
  Dim pDoc As IMxDocument
  Dim pMap As IMap
  Dim pEnumFeat As IEnumFeature
  Dim pFeat As IFeature
  
  Set pDoc = ThisDocument
  Set pMap = pDoc.FocusMap
  Set pEnumFeat = pMap.FeatureSelection
  Set pFeat = pEnumFeat.Next
  Do While (Not pFeat Is Nothing)
  Debug.Print pFeat.Value(pFeat.Fields.FindField("Name"))
  Set pFeat = pEnumFeat.Next
  Loop
End Sub


Public Sub LoopThruSelection2()
  Dim pMxDoc As IMxDocument
  Dim pMap As IMap
  Dim pEnumFeature As IEnumFeature
  Dim pEnumFeatureSetup As IEnumFeatureSetup
  Dim pFeature As IFeature
  
  Set pMxDoc = ThisDocument
  Set pMap = pMxDoc.FocusMap
  Set pEnumFeature = pMap.FeatureSelection
  Set pEnumFeatureSetup = pEnumFeature 'QI
  pEnumFeatureSetup.AllFields = True
  Set pFeature = pEnumFeature.Next
  Do While (Not pFeature Is Nothing)
  Debug.Print pFeature.Value(pFeature.Fields.FindField("Name"))
  Set pFeature = pEnumFeature.Next
  Loop
End Sub


Public Sub QuerySelectedFeatures()
  Dim pMxDoc As IMxDocument
  Dim pEnumLayer As IEnumLayer
  Dim pFeature As IFeature
  Dim pFeatureCursor As IFeatureCursor
  Dim pFeatureLayer As IFeatureLayer
  Dim pFeatureClass as IFeatureClass
  Dim pFeatureSelection As IFeatureSelection
  Dim pMap As IMap
  Dim pDataSet as IDataSet
  Dim pWorkSpace as IWorkSpace
  Dim pWorkSpaceEdit as IWorkSpaceEdit 
  Dim pSelectionSet As ISelectionSet
  Dim pUID As IUID'the UID specifies the interface identifier (GUID)'that represents the type of layer you want returned.'in this case we want an EnumLayer containing all the FeatureLayer objects  
  Set pUID = New UID
  pUID = "{E156D7E5-22AF-11D3-9F99-00C04F6BC78E}" ' Identifies FeatureLayer objects
  Set pMxDoc = Application.Document
  Set pMap = pMxDoc.FocusMap
  
  'Loop through all feature layers in the map
  Set pEnumLayer = pMap.Layers(pUID, True)
  pEnumLayer.Reset
  Set pFeatureLayer = pEnumLayer.Next
  Do While Not pFeatureLayer Is Nothing
    'Loop through the selected features per layer
    Set pFeatureSelection = pFeatureLayer 'QI
    Set pSelectionSet = pFeatureSelection.SelectionSet
    pSelectionSet.Search Nothing, False, pFeatureCursor
    Set pFeature = pFeatureCursor.NextFeature
    
    Do While Not pFeature Is Nothing
      'Do something with the feature

       Set pFeatureclass = pFeature.Class
       Set pDataset = pFeatureclass.FeatureDataset
       Set pWorkspace = pDataset.Workspace
       Set pWorkSpaceEdit = pWorkSpace
       pWorkSpaceEdit.StartEditing True
       pWorkSpaceEdit.StartEditOperation 
 
       pFeature.Value(pFeature.Fields.FindField("Name")) = "New Value"
      
 
       pWorkSpaceEdit.StopEditOperation
       pWorkSpaceEdit.StopEditing True

      Set pFeature = pFeatureCursor.NextFeature
    Loop
    Set pFeatureLayer = pEnumLayer.Next
  Loop
  
End Sub
 
  Paritosh Gupta
Consultant- GIS Software
Mailto: paritosh.aps@gmail.com
Cell : +91 9810884817