Pages: 1
- Sujet précédent - Récupérer en VBA les attributs d'une entité sélectionnée par la souris - Sujet suivant
#1 Fri 18 January 2008 23:06
- rayer_mag
- Participant occasionnel
- Date d'inscription: 20 Sep 2007
- Messages: 13
Récupérer en VBA les attributs d'une entité sélectionnée par la souris
Bonjour,
Pour réaliser un projet SIG (étude de l'évolution du bocage) je dois réaliser des fiches descriptives de chaque entité qu'un utilisiteur sélectionnera grâce à la souris sous ArcGis, qui s'afficheront suite à cette sélection.
Je sais bien que je dois utiliser VBA (malheureusement je n'y connais rien) mais je n'arrive pas à récupérer ma sélection (et par conséquent ses attributs).
De plus je voudrai faire apparaître dans cette "fiche" un extrait de la carte centrée sur l'élément sélectionné (je sais que je dois utiliser Envelope) mais je ne sais pas comment la faire apparaître sur cette fiche.
Est-ce que quelqu'un pourrait m'aider ? (c'est à rendre pour la semaine prochaine !!)
Merci à ceux qui s'intéresserons à mon problème (qui n'est que le premier parmi d'autres !!!)
Magalie
Hors ligne
#2 Sat 19 January 2008 15:52
Re: Récupérer en VBA les attributs d'une entité sélectionnée par la souris
Séances de cours intensifs de programmation VB et Objets ArcGIs en progression...
Veuillez ne pas maltraitez vos ordinateurs
Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !
Hors ligne
#3 Mon 21 January 2008 10:01
- nicolas valls
- Participant assidu
- Date d'inscription: 28 Oct 2005
- Messages: 154
Re: Récupérer en VBA les attributs d'une entité sélectionnée par la souris
Bonjour,
Dans un premier temps il faut créer un UIToolControl. Sur l'evènement mousedown il faut rentrer le code suivant (à vous de vérifier si la couche a selectionner est bien chargé dans le document) :
Code:
Dim mondoc As IMxDocument, macarte As IMap, monpoint As IPoint, monrect As IEnvelope, macouche As ILayer Dim monenv As ISelectionEnvironment, trouve As Boolean, i As Byte, j As Byte, matable As ITable Dim masel As IFeatureSelection, moncurseur As ICursor, maligne As IRow, compteur_sol As Integer Dim outil As ICommandItem, num_uc As String, mess As String Set mondoc = ThisDocument Set macarte = mondoc.Maps.Item(0) Set monpoint = mondoc.CurrentLocation For i = 0 To macarte.LayerCount - 1 If macarte.Layer(i).Name = "MaTableASelectionner" Then Set macouche = macarte.Layer(i) Exit For End If Next i Set matable = macouche Set monrect = monpoint.Envelope monrect.Expand mondoc.SearchTolerance, mondoc.SearchTolerance, False Set monenv = New SelectionEnvironment monenv.AreaSelectionMethod = esriSpatialRelIntersects macarte.SelectByShape monrect, monenv, False mondoc.ActiveView.Refresh
Bon une fois que vous avez sélectionné la table il suffit de lancer une procédure qui va parcourir l'enregistrement correspondant dans la table sélectionnée. Il faut savoir que vous allez récupérer les champs 1 à 1 dans une variable (ou si vous le voulez dans un formulaire a l'aide de monfomulaire.matextbox.text=...)
voici le code de la procédure :
Code:
Dim mondoc As IMxDocument, macarte As IMap, macouche As ILayer, i As Integer Dim moncurseur As ICursor, maligne As IRow, matable As ITable,mavariable as string Set mondoc = ThisDocument Set macarte = mondoc.Maps.Item(0) For i = 0 To macarte.LayerCount - 1 If macarte.Layer(i).Name = "nom_de_ma_couche" Then Set macouche = macarte.Layer(i) Next i Set matable = macouche Set moncurseur = matable.Search(Nothing, False) Set maligne = moncurseur.NextRow If maligne Is Nothing Then MsgBox "aucun enregistrement dans la table" Else Do Until maligne Is Nothing mavariable = maligne.Fields.FindField(moncurseur.Fields.FindField("Nom_du_Champ")) Set maligne = moncurseur.NextRow Loop End If End Sub
Voila en espérant que ca vous donne les bases .
bonne journée
Hors ligne
#4 Mon 21 January 2008 16:00
- rayer_mag
- Participant occasionnel
- Date d'inscription: 20 Sep 2007
- Messages: 13
Re: Récupérer en VBA les attributs d'une entité sélectionnée par la souris
Merci beaucoup pour vos réponses et merci pour ta patience Jérôme !
Hors ligne
Pages: 1
- Sujet précédent - Récupérer en VBA les attributs d'une entité sélectionnée par la souris - Sujet suivant