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.RefreshBon 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 SubVoila 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


