| |
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 |