Lav diagram ud fra brugers sætninger

Tags:    c#

Hej alle
Skal prøve at gøre mig forståelig...
Jeg skal lave et modul i C# hvor brugere skal have mulighed for vha drag and drop at sætte nogle ikoner på et canvas.
Så skal der også være noget funktionalitet hvor brugeren i stedet for har mulighed på vha almindelige sætninger at skrive hvad der skal vises på diagrammet.
Et eksempel (udelukkende eksempel) kunne være at der var et billede af et æsel. Brugeren kunne så skrive "sæt halen på æselet". Og så skulle halen sættes på æselet. Eller "sæt to haler på" og så skulle der komme to haler på.

Der vil så være selve canvas'et og et stort tekstfelt under som brugeren kan skrive sætningerne i. Og disse sætninger kan der skrives flere af, en pr linie.
Jeg er bare lidt i tvivl om hvordan jeg skal gribe det an.
Det skal ikke være sådan at brugeren skriver en sætning og trykker på en knap. Den skal hele tiden løbende kigge efter om den genkender noget af det brugeren skriver.
Og det er i forbindelse med det jeg er i tvivl.
Hvordan får jeg hele tiden holdt øje med om den genkender det brugeren skriver og i så fald reagere på det.

Håber der er nogle der kan komme med forslag til at løse problemet.
Gerne hvis funktionaliteten findes i et open source library eller lignende

Venlig hilsen
Jakob




5 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
hvad med at lave en funktion der kobles paa et event for dit tekst-felt.
Et event som affyres ved hvert nyt tastetryk/copy-paste/ændring i tekst-feltet.

Funktionen skal saa starte en ny traad med den tekst der er i feltet nu, og gemme et handle til traaden.
Funktionen skal for hver gang, undersöge om der er et handle til en ældre traad - hvis der er skal den traad have besked om at stoppe arbejdet - saa skal den nye traad startes og sættes i handle.

Traaden skal have en maade at kalde tilbage til canvas paa hvis den naar at blive færdig inden den bliver stoppet af et eventuelt nyt kald til funktionen der startede den.

Hvordan traaden skal analysere teksten, objecterne paa canvas som brugeren har trukket rundt - ja det ved jeg ikke rigtig hvad du har tænkt dig at göre, men du har vel en ide ... f.eks. at bruge et eller andet google api til tekst-genkendelse og/eller billed-genkendelse.
Maaske der er en anden som har en lösning paa den del af opgaven.



Indlæg senest redigeret d. 16.09.2014 10:13 af Bruger #2193
Det med at starte en ny tråd pr. linie når brugeren begynder at skrive.
Det lyder som en rigtig god ide.

Med hensyn til hvordan at teksten skal genkendes er jeg lidt i tvivl om.
Det er kun nogle faste sætninger den skal kunne genkende.
Så det brugeren skriver skal på en eler anden måde løbende sammenlignes. Og her er jeg lidt i tvivl :)

Jeg har været lidt inde og kigge på
http://scintillanet.codeplex.com
og
http://avalonedit.net

Og så simpelthen lave det som når man koder i en IDE.. Og så ændre så reglerne kommer til at passe de sætninger jeg har forudbestemt



ok - kun nogle faste sætninger ... og bestemte mulige kombinationer ... lyder som en god ide at bruge en slags intellisense funktionalitet og definere dine sætninger som et programmerings-sprog ...
smart nok - og det burde kunne fungere.

Det vil dog være meget begrændset - og mon ikke du vil önske at kunne ændre det til mere normal-sprog som projektet bevæger sig frem?



Hvis jeg definerer det som et "programmeringssprog" vil det måske stadig være muligt at definere sætninger.
De sætninger der er, er der ikke den store variation i.
Men kan godt se problematikken i hvis det skal udvides.
Men vendt om kan man sige at mange af de programmeringssprog der er, er ret avancerede i syntax´en. Så tror at hvis man gør det på den måde kan man komme langt.
Og de sætninger der er vil ikke blive udvidet. Og vi snakker 20-30 sætninger.
Ellers har jeg ingen idé om hvordan det skal laves :)



Jeg vil mene du bør lave et modul der analyserer din tekst i dele.
Hvis jeg tager udgangspunkt i dine to tekster:

1) "sæt halen på æselet"

Hvis du splitter den efter " " får du ["Sæt", "halen", "på", "æselet"]
Ud fra det kan du identificere hvilken type hvert ord er.
["Aktion", "Element", "aktion", "element"]
Så du ved at Elementet "Halen" skal gøre en aktion "sæt". Det svære er nok at få den til at "samarbejde" da det er to elementer der skal arbejde sammen.

Du kan så lave algoritmer der identificerer forskellige typer af din tekst, så "to", "2", er tal. Så kan du forsøge at lave regler der "bøjer en betydning af et ord. Fx indeholder det "på", eller er "på", så ved du at du dækker både ovenpå og på, og under og nedenunder.

Jeg ville starte med et sæt af kommandoer og elementer som du kan prøve af med. Så kan du lave kommando "Vis" og element "bjørn", "hus", etc. og så udvide din liste med regler og elementer, og så lidt efter begynde at kombinere dem.
Det sværeste er nok når du begynder at flette kommandoer sammen med flere elementer.



t