#1 Tue 23 March 2004 16:42
- Nath3615
- Invité
VBA pour selection de couche
De: Nathalie
Bonjour
j'ai recuperer sur l'excellent site : http://www.ensg.ign.fr/Formation/Format … Cours.html le code suivant. => p76 spatial filter
Code:
################################################## Private Sub UIButtonControl2_Click() Dim pMxDoc As IMxDocument Set pMxDoc = ThisDocument Dim pFrRouteLayer As IFeatureLayer Set pFrRouteLayer = pMxDoc.FocusMap.Layer(2) Dim pFeatureSelection As IFeatureSelection Dim pFBatilayer As IFeatureLayer Set pFBatilayer = pMxDoc.FocusMap.Layer(4) Dim pEnumGeom As IEnumGeometry Set pEnumGeom = New EnumFeatureGeometry Dim pEnumGeometrybind As IEnumGeometryBind 'QI entre IEnumµGeometryBind et IEnumGeometry Set pEnumGeometrybind = pEnumGeom pEnumGeometrybind.BindGeometrySource Nothing, pFBatilayer.FeatureClass Dim pGeomFactory As IGeometryFactory Set pGeomFactory = New GeometryEnvironment Dim pGeom As IGeometry 'Creation d'uens eules geometrie a a partie de l'ensemble de Bati Set pGeom = pGeomFactory.CreateGeometryFromEnumerator(pEnumGeom) 'Creation du filtre spatial Dim pSpatialFilter As ISpatialFilter Set pSpatialFilter = New SpatialFilter '..sur la geometrie pGeom ... Set pSpatialFilter.Geometry = pGeom '..avec le relation Intersectent.. pSpatialFilter.SpatialRel = esriSpatialRelIntersects ' On selectionne les entites troncons pFeatureSelection.SelectFeatures pSpatialFilter, esriSelectionResultNew, False pMxDoc.ActiveView.Refresh End Sub ##################################################
Pourquoi il me revoit sur la ligne pFeatureSelection.SelectFeatures pSpatialFilter, esriSelectionResultNew, False
erreur d'execution 91 , variable objet ou variable de bloc with non definit ??
Je suis pas une fleche en VB, j'ai fait une faute de frappe qq part parck la je n'ai fait que recopier...
Si vous pouvez m'aider.
Merci par avance
Nath
#2 Tue 23 March 2004 18:10
- Jules Fleury
- Invité
Re: VBA pour selection de couche
Bonjour,
il me semble qu'il manque la Query interface entre la Ifeatureselection et la Ifeaturelayer.
ce qui fait que l'objet pfeatureselection n'est pas instancie au moment ou vous appele la methode .selectfeatures
peut etre que si vous inserez la ligne suivante avant de lancer la methode :
'QI
set pfeatureselection=pfrroutelayer
bon codage,
Jules