banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 26 May 2010 13:05

zaynabe
Participant occasionnel
Date d'inscription: 13 May 2010
Messages: 12

graphic element

bonjour tout le monde

voilà, je veux "visualiser une entité en cliquant sur son identifiant" j'ai pensé alors à travailler avec "graphic element" puisque mon but de cette manipulation est d'arriver à visualiser sur la carte l'entité correspondante à cet identifiant.
j'ai récupéré mes identifiants dans un listbox et je veux en cliquant sur cet identifiant voir son entité correspondante sur la carte!! mes entités sont toutes de type "line".
j'ai ecrit donc ce bout de code

Code:

Public Sub ListBox1_Click()
Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument

Dim pLineElement As ILineElement
Set pLineElement = New LineElement

Dim pElement As IElement
Set pElement = pLineElement

Dim pLineSymbol As ISimpleLineSymbol
Set pLineSymbol = New SimpleLineSymbol

Dim pRGBColor As IRgbColor
Set pRGBColor = New RgbColor

With pRGBColor
.Red = 255
.Green = 0
.Blue = 0
End With

With pLineSymbol
.Width = 2
.Color = pRGBColor
.Style = esriSLSDash
End With

pLineElement.Symbol = pLineSymbol

Dim pGContainer As IGraphicsContainer
Set pGContainer = pMxDoc.ActivatedView

pGContainer.AddElement pElement, 0
pElement.Activate pMxDoc.ActivatedView.ScreenDisplay

pMxDoc.ActivatedView.PartialRefresh esriViewGraphics, Nothing, Nothing

End Sub

quand je fais un click sur un identifiant dans la listbox rien ne se produit, c'est à dire que ma ligne graphique ne se trace pas, et il y a aucun message d'erreur!!!!
quelqu'un peut me dire le truc que j'ai raté dans mon code pour le rendre fonctionnel
merci

Hors ligne

 

#2 Wed 26 May 2010 13:12

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

Re: graphic element

Ben en fait, dans ton code, tu ne fais que :
- initialiser des variables,
- ajouter la variable initialisée dans la vue active
- rafraichir


Il te manque une étape deux, où après avoir initialisé ta variable pLineElement, tu lui associes une géométrie, tu dessines quelque chose.



Maintenant la méthode pour "visualiser une entité en cliquant sur son identifiant", ce n'est pas simplement sélectionner l'entité selon son identifiant (et le cas échéant zoomer autour de cette entité) ?


Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !

Hors ligne

 

#3 Wed 26 May 2010 13:23

zaynabe
Participant occasionnel
Date d'inscription: 13 May 2010
Messages: 12

Re: graphic element

merci Jeirhome pour cette rapide reponse
tu veux dire que je dois ajouter un bout de code de type:

Code:

Dim pLine As iLine
Set pLine=New Line
pElement.Geometry=pLine

j'ai integré ce bout de code, mais cela me donne un message d'erreur:
"invalid procedure call or argument" pour cette dernière ligne de code!!!!!!

Dernière modification par zaynabe (Wed 26 May 2010 13:42)

Hors ligne

 

#4 Wed 26 May 2010 13:56

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

Re: graphic element

Non, je dit qu'il faut bien plus qu'initialiser.

Il faut que tu définisses des coordonnées ou que tu récupères une géométrie existante pour la copier dans ton élément. Juste des définitions avec "New" ne te donneras jamais grand chose, il faut attribuer une valeur !

Et pour la dernière ligne, comme tu attribues un objet, en VBA tu dois mettre "Set" devant.


Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !

Hors ligne

 

#5 Wed 26 May 2010 15:17

zaynabe
Participant occasionnel
Date d'inscription: 13 May 2010
Messages: 12

Re: graphic element

ok
donc il faut définir le FromPoint et le ToPoint de la ligne (x et y)
dans mon cas la ligne existe déjà, donc je veux qu'un "graphic line" se trace suivant cette ligne
donc apparement, il faut récupérer les coordonnées de la ligne existante et les assigner à la geometrie du "graphic line"
mais quelle methode permet de récupérer ces coordonnées???
j'ai l'impression que je dis de n'importe quoi, je suis pas sûr de la logique de ce que je viens d'écrire!!!!!

Hors ligne

 

#6 Wed 26 May 2010 15:37

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

Re: graphic element

Si c'est très bien comme logique, je te suis déjà mieux que sur les messages précédents smile

Ton élément existant a une propriété geometry que tu peux directement assigner à ton "graphic line". Le plus dur restant de récupérer ton élément que tu veux dessiner. Mais ça, c'est ton sujet "récupérer les entités à partir d'un listbox" tongue


p.s : La piste que je te proposais, simplement "sélectionner ce que tu veux mettre en valeur", ça ne te tente pas. Ça sera un peu moins compliqué je crois.


Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !

Hors ligne

 

#7 Wed 26 May 2010 17:30

zaynabe
Participant occasionnel
Date d'inscription: 13 May 2010
Messages: 12

Re: graphic element

beh oui
mais la question qui est logique à poser tout juste apés cette serie de questions et réponses c'est
quelle methode me permet de récuperer la propriété Geometry de mon élément et puis l'assigner à mon "graphic line", parceque mes recherches ne m'ont pas permis de trouver la réponse, tout ce que je trouve c'est des exemples dans lesquels on donne des valeurs précises à x et y , c'est à dire, on choisit là où on veut "dessiner" le "graphic element"
alors si tu as une idée sur la solution, je te serais reconnaissante
merci

Hors ligne

 

#8 Mon 31 May 2010 10:22

zaynabe
Participant occasionnel
Date d'inscription: 13 May 2010
Messages: 12

Re: graphic element

bonjour tout le monde
personne ne peut m'aider pour trouver de solution à cette question?!
SVP, j'ai besoin de votre aide
merci

Hors ligne

 

#9 Mon 31 May 2010 11:47

Cornet Jérémie
Participant assidu
Lieu: Nouméa
Date d'inscription: 6 Apr 2008
Messages: 229

Re: graphic element

Bonjour Zaynabe,
Quand tu postes la même question sur plusieurs forums, n'oublies pas de le signaler et de mettre les liens !
http://www.forumsig.org/showthread.php?t=27101

Jérémie

Dernière modification par Cornet Jérémie (Mon 31 May 2010 11:48)

Hors ligne

 

#10 Mon 31 May 2010 12:00

Cornet Jérémie
Participant assidu
Lieu: Nouméa
Date d'inscription: 6 Apr 2008
Messages: 229

Re: graphic element

Utilises un IFeatureCursor avec un QueryFilter qui filtre sur l'ID sélectionné dans la listeBox.

Avec ce FetureCursor, tu récupère un Feature pour récupérer la géométrie (.shape).
Tu affectes ensuite cette géométrie à ton IElement.

PS : c'est la solution que donnais Jeirhome

Hors ligne

 

Pied de page des forums

Powered by FluxBB