Script sur une liste ?

Rousseau-Wallon shared this question 2 weeks ago
Answered

Bonjour,

J'ai une liste de 6 points du plan sur laquelle j'ai mis le script par clic suivant :

SoitValeur(n,n+1)

Script prévu pour que, lorsque je crée un point qui est déjà dans la liste, le compteur N s'incrémente de 1.

Seulement ça ne marche pas. Quand on crée un point qui est déjà un de la liste (avec l'outil POINT), on ne clique pas sur la liste.

Comment faire ? Pas possible ?

Comments (12)

photo
1

I think the list must be FREE

type ie l1={(1,2),(3,2),(4,5)}

then create onclick script for l1 and click in some of points

photo
1

Not what i want.

I dont want to click on a point that is on the list, i want to create a NEW point. If this new point is in the list then N = N + 1.

photo
1

En supposant que le point créé s'appelle A

photo
1

Bonour,

Non, ce n'est pas possible de cette façon.

En outre, il faudrait également tenir compte du fait que des points pourraient être supprimés ou déplacés.

Une solution n'est possible qu'avec le Java-Script.

photo
1

Bonjour rami

oui, c'est la solution "simple"...

(si le point s'appelle A, et n'est pas supprimé (as-tu essayé de déplacer mon point A sur un point de la liste..?)

il faudrait aussi cacher le bouton une fois cliqué, et recommencer avec d'autres points)

Je m'attendais à ta réaction..! J'étais sûr que cet "essai" ne te satisferait pas...

Après, c'est JS... le listener... et la boucle for...

photo
1

Bonjour jumera,

En fait, mon poste est adressé à Rousseau-Wallon (sinon j'aurais fait une indentation).

Mais ils ont une bonne idée de moi. Cela me dérange que votre solution exige que les noms soient déjà connus.

Mais si, au lieu de nouveaux points, il existait déjà un nombre limité de points (avec un name donné) qui seraient déplacés à la position souhaitée, alors le principe qu'ils ont utilisé fonctionnerait.

Cependant, j'aurais utilisé la commande suivante :


Si(Distance(A, liste) < 0.01,......)

et une liste indexée (les points prédéfinis A,B,C....) au lieu de A.


photo
photo
1

---

supprimé car erroné, l'amélioration suit.

photo
1

HE DID IT

(Bravo rami...)

juste une question : est-ce que JS "connaît" toutes les commandes de GeoGebra..?

(par exemple si on veut tester qu'un point créé est dans une région (EstDansRégion) ou...)

C'est juste une question... Ne refait pas un fichier pour cela..!

photo
1

sorry, le script est erroné dans certains cas si puis rouvrir.

Le principal problème est l'utilisation de Object(). Une nouvelle version suivra.

J'ai supprimé mon dernier post.

----------------------------

La question posée :

oui, evalCommand("xxxx") se comporte comme la ligne de saisie (input bar) et connaît toutes les commandes. Chaque fois que cela est possible, j'utilise cette variante (parce que plus compréhensible).

photo
photo
1

Je pense que cette version fonctionne dans toutes les situations (également après "sauver, fermer, rouvrir")

La règle du manual concernant Object() ne s'applique qu'au premier élément des listes. D'où l'objet "AllPntDymmy". Il doit être en première position dans le "Protokoll de Construction". De plus, cet objet fait en sorte qu'une liste de AllPointNames et AllPointValues existe toujours (et pas empty) et que les objets qui en dépendent trouvent toujours un contenu. (sinon les objets dépendants pourraient être supprimés).

photo
1

Merci rami !

Un autre script que je n'arrive pas à faire c'est d'incrémenter N à chaque fois qu'un point créé est dans un rectangle. ça devrait pourtant être plus facile, mais ces scripts je ne m'y fais vraiment pas..

photo
1

C'est le même principe. Il faut un polygone et un changement de l'objet N, le reste reste le même.

Tant qu'il est exigé que les points soient créés et modifiés avec les moyens du GGB (outil, barre d'entrée, script, etc.), cette solution est très certainement la seule possible. Note : Je ne sais pas pourquoi vous avez besoin de cette fonctionnalité, je ne peux donc pas vous proposer d'autres solutions (si possible).

Mais il n'est pas nécessaire de comprendre le code Java. Il peut être copié en tant que boîte noire comme JS global.

Seul l'objet AllPntDummy doit être déplacé à la première position dans le journal de construction.

Le JavaScript global rend l'objet AllPointNames disponible dans la vue Algebra. Le reste (dans la vue Algèbre) peut être librement conçu par l'utilisateur (AllPointValues, N, liste, polyg, autoUpdate, Text1 etc.). Ces objets n'affectent pas le JS global (sauf autoUpdate et AllPntDummy)

© 2020 International GeoGebra Institute