#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
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
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
Re: graphic element
Si c'est très bien comme logique, je te suis déjà mieux que sur les messages précédents
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"
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