From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Attachement d'une annotation sur courbe

Résolu !
Accéder à la solution

Bonjour,

 

Sur un graph XY j'ajoute, via programme, des annotations libres.

Lorsque je passe le mode d'annotation de "libre" à "pour un tracé", l'annotation s'accroche sur le point le plus proche, mais pas à tous les coups.

Il arrive, selon les échelles, que l'annotation aille s'accrocher mais sur un point très éloigné.

 

Ci joint un VI d'exemple (LV2012).

 

Dans le cas où l'échelle x est à 00:00.220, alors tout se passe bien.

Dans le cas où l'échelle x est à 00:00.215, alors l'annotation s'accroche bien plus loin que prévu.

Dans ce dernier cas, si on appuie à nouveau sur Accrocher annotations alors l'annotation change encore de position.

 

Est ce qu'il y a une mauvaise manière de faire de ma part ?

 

Merci par avance.

 

Cordialement,

Julien V.

[FIRST]

[LabVIEW Programming]


[FIRST]

0 Compliments
Message 1 sur 7
4 193 Visites

Bonjour Julien,

 

J'ai fait les tests avec votre VI et en effet je constate le même comportement que vous décrivez. Je pense que lorsqu'on ne spécifie pas la position de l'annotation (par programmation), Labview la place à une position par défaut en fonction de la taille de la fenêtre (échelle X et Y) sans vraiment se soucier de la visibilité pour l'utilisateur.

 

Cependant, je vous rassure, il existe des propriétés qui vont vous permettre de venir modifier à la fois la position de la flèche d'annotation et également celle du label (dans votre cas, le texte "Move me").

 

La procédure :

1) Dans votre structure Evénement, sélectionner le cas numéro 2 : "Accrocher annotations" : Value Change.

2) Dans votre boucle for, vous avez un élément "Assembler par nom" (Bundle by name si vous utilisez LabView en anglais) qui contient "Annotation Mode". Etendez cet élément de deux crans pour faire apparaitre "Label Offset" et "Position". Lorsque vous tenterez de les sélectionner, il vous demandera "X", "Y" ou "All Elements". Choisissez la dernière option afin de pouvoir intervenir sur l'abscisse et l'ordonnée du pointeur de l'annotation ainsi que de son label.

3) Une fois cela fait, il ne vous reste plus qu'à y écrire des constantes (si vous voulez que les annotations soient toujours au même endroit).

 

J'ai fait les tests de mon côté et cela fonctionne très bien. Je vous mets en pièce jointe une capture d'écran qui montre ce que vous devez avoir dans l'élément "Assembler par nom".

 

Je vous laisse faire les tests de votre côté et m'indiquer si cela solutionne ou non votre problématique.

Si des points ne vous paraissent pas clairs dans mes explications, n'hésitez surtout pas à me poser vos questions.

 

Bien cordialement,

 

Samir
Ingénieur d'applications
National Instruments - France
0 Compliments
Message 2 sur 7
4 176 Visites

Bonjour,

 

Merci de ce retour.

 

Mais malheureusement la solution d'appliquer les coordonnées exactes et le n° d'index du point ne changent rien. À la base de l'essai c'est avec ces propriétés que j'ai remarqué cette situation aléatoire d'attachement. Il s'est avérée qu'elle se produisait exactement au moment où l'on changeait de "libre" à "attachée" c'est pourquoi je n'ai pas mis, dans ce VI d'exemple, les valeurs XY et l'index.

Cordialement,

Julien V.

[FIRST]

[LabVIEW Programming]


[FIRST]

0 Compliments
Message 3 sur 7
4 171 Visites

Julien_V,

 

En effet je pensais que la problématique était solutionnée mais en réalité cette modification ne fonctionne que si le graphe XY était étendu jusqu'à 00:11,00

 

J'ai continué à faire d'autres tests notamment en regardant de ce côté du forum :

Discussions sur les annotations de graphe

 

Cependant, en lançant une exécution pas à pas et en fixant un point d'arrêt juste avant le "Graphe XY - ForceRedraw", je me suis rendu compte que l'annotation du graphe se plaçait bien là où on le spécificait avec les propriétés "Position" et "Label Offset". Lorsque le programme exécute le "ForceRedraw", le point est déplacé se retrouve ainsi dans la zone éloignée et invisible à l'utilisateur. Je soupçonne donc le "ForceRedraw" d'être la source de la problématique.

 

De ce fait, j'ai supprimé l'appel de la méthode "ForceRedraw" et je constate que le point ne sort plus de la partie visible et s'affichage là où je l'ai spécifié.

 

Pourriez-vous faire le test en supprimant l'appel de "ForceRedraw" et voir si cela solutionne la problématique de votre côté ?

 

Bien évidemment il faut absolument affecter des valeurs aux propriétés "Position" et "Label Offset". Pour un affichage optimal, sachez que les coordonnées de "Label Offset" dépendent en réalité de ceux de "Position".  Le X et Y que vous entrerez pour "Label Offset" prendront comme origine les coordonnées de "Position" (d'où le terme "offset").

 

J'attends les résultats de votre test pour voir si cela résoud ou non votre problématique.

Si des passages ne sont pas clairs dans mes explications, n'hésitez pas à me l'indiquer et je tenterais d'apporter plus de détails.

 

Bien cordialement.

Samir
Ingénieur d'applications
National Instruments - France
0 Compliments
Message 4 sur 7
4 163 Visites

Merci pour ce retour.

 

Forcer le traçage est utile dans le projet complet car lorsqu'on place une annotation (avec X, Y, index biens mentionnés), l'annotation apparait et ne se positionne pas à l'endroit souhaité. Ou quand je supprime toutes les annotations, elles restent quand même visibles sur le graph (mais ne sont plus dans le tableau d'annotations).

Il faut que je fasse une action souris (drag-drop ou molette) pour actualiser le visuel des annotations.

La solution la plus adapatée pour palier à ce souci est donc de faire une méthode de re-traçage.

 

Supprimer la méthode semble donc résoudre le problème mais vu que les annotations sont visuellement aux mauvais endroit, je ne suis pas sûr à 100% de la solution.

De plus il est impportant pour nous de garder la méthode.

 

Cordialement.

Cordialement,

Julien V.

[FIRST]

[LabVIEW Programming]


[FIRST]

0 Compliments
Message 5 sur 7
4 160 Visites
Solution
Accepté par l'auteur du sujet Julien_V.

Bonjour,

 

Je relance le post.

Sachant que le problème persiste toujours.

Plus simplement pour le tester, il suffit de zoomer après avoir placé une annotation sur le graph puis de bouger le curseur de l'annotation, là il partira sur une extrêmité ou l'autre du graph.

Cordialement,

Julien V.

[FIRST]

[LabVIEW Programming]


[FIRST]

0 Compliments
Message 6 sur 7
2 998 Visites

Bonjour,

 

Une solution retenue (à mon sens ça reste du bricolage mais qui fonctionne) est de laisser les curseurs et annotations libres. A chaque relâchement de curseur (ou annotation), sa position est mise à jour avec le point de la courbe la plus proche, ce qui offre un semblant d'attachement à une courbe.

Le souci majeur est que c'est consommateur de ressources si le tableau des données est important. L'avantage est qu'on n'a plus ce problème de curseur qui "s'envole" n'importe où lors de petits zooms.

 

Bien entendu il ne faut pas oublier de faire la différence annotation/curseur avant de replacer celui qui a été bougé.

 

A++

Cordialement,

Julien V.

[FIRST]

[LabVIEW Programming]


[FIRST]

0 Compliments
Message 7 sur 7
2 979 Visites