Jump to content

gmd

Mitglieder
  • Gesamte Inhalte

    577
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von gmd

  1. Hallo, heute mal wieder ein filmchen. Habe mir ein testbett gebaut, um die schlaternamen besser vergleichen zu koennen falls irgendwo problem enstehen. Ausserdem ist so eine einrichtung auch geeignet alle moeglich scripte zu testen, nicht nur schalter. Hier zunaechst das statische bild. unter dem mbs, mein Lua center mit allen verfuegbaren lua snippets (gruppiert bei objekttyp/funktion). Die scripte sind direct als beispiel ausfuehrbar enthalten aber parameter definitionen die von meinem preprozessor ausgewertet werden. Im film kann man sehen wie im script editor das eigentliche script aussieht bevor es als json message verschickt wird. Rechts die objektauswahl, die viele zwecken dient, unter anderem seitenphotos zu erstellen oder die schalterliste zu photografieren, und vieles mehr, ist auch die grundlage fuer meinen zugdesigner. Nun hier ist der film, ich denke der sagt noch mehr was dies bedeutet. nur noch eines, hier wurde auch eine geteilte verarbeitung zwischen Mbs und app eingesetzt. Das Mbs hat grundscripte geladen, die dann auch von der app angesprochen werden, also zum beispiel das rotierende gleis ist mit Mbs Lua gemacht, waere ueber die schnittstelle einfach nicht performant genug. Animation/Schalter Testing Gruss Gmd
  2. Easy, das ist das zentrale problem meiner App.. vorausetzung ist dass alle objekte eindeutige name haben. Das ist die erste aktion. Ich verwende dazu zunaechst einen temporaeren namen, den ich mit einer laufenden nummer ergaenze und kennzeichne, also z.B. @Quader-001. Du hast keinen einfluss darauf welcher quader welchen namen bekommt. Ich habe deswegen siebe gebaut die objekttypen filtern und nur bestimmte typen umbenennen usw. Fuer mich ist das hauptsaechlich bei gleisen wichtig und da lasse ich eine lok fahren die dann events liefert mit eindeutigen namen, dann kann ich die umbenennen in der reihenfolge wie ich sie brauche. Fuer andere objekte mach ich selektionen, lese die ein und weiss dann dass diese objekt einen zusammenhang haben. Will ich aber bestimmte objekte eindeutig identifizieren, dann um beim beispiel zu bleiben, positioniere ich 5 Quader und benenne sie eindeutig (@Quader1, usw), das ist bei mir eine automatische funktion. Du kannst ja jedes objekt mit Guid erzeugen und dabei einen name vergeben, aber nur mit der alten schnittstellen soviel ich weiss. Dann positioniere ich jeden quader mit eideutigem namen dahin wo er hingehoert, entweder manuell oder wenn ich die koordinate berechnen kann automatisch, oder zumindest in die naehe des ziels. Deswegen habe ich areas, segmente, virtuelle ebenen und gruppen etc, um objekte zu orden. Man kann auch automatisch positionieren etc .. kommt halt drauf an was du mit den objekten am hut hast. Gruss Gmd
  3. Das thema visualisierung von ablaeufen is noch ein anders. Ich arbeite nicht nur mit den Mbs kameras. Die maus controlliert das viewport (sicht auf die anlage). Nun stellt euch mal vor ihr habt zwei joysticks, wie bei der steuerung fuer eine drone und zwei einstellraeder fuer zoom und gimbal position (kamera hoch und runter) und damit steuerst du die sicht auf die anlage unabhaengig von kameras. Damit kann das programm auch jederzeit jeden beliebigen blickwinkel reproduzieren. Grundfunktionen dieses knozepts verwende ich zur position von objekten auf weissem hintergrund zur erstellung der seitenbilder oder auch die screenshots fuer die animationen (steuerungsfenster). Der phantasie sind da keine grenzen gesetzt. Gruss Gmd Edit: Hier ein beispiel joystick_driver
  4. die aussage bezog sich auf scenarien, nicht einzelne animationen.. die app controlliert die camera views. gruss Gmd
  5. Hallo, hier der naechste schritt in meiner definition the animationen/schalter wie auch immer man das nennt. Ich definiere scenarien in meiner app, die als folge von aktionen (Animationen/Schaltern) ablaufen. Scenarien sind zb. Aufruesten, Halt Bahnhof, Abfahrt Bahnhof, Rangieren, Wartung, Notfall Strecke, usw. Die Aktionsnamen sind generisch und fuer alle modelle gleich. Ich verwende nicht nur An/Aus sondern unterscheide aktionstypen (Licht,Tuer etc.) Auswahl einer aktion kann betriebsabhaengig sein, je nachdem in welcher richtung eine lok auf dem gleis steht ist es unterschiedlich welches licht bei vorwaertsfahrt einzuschalten ist. Meine app weiss in welcher richtung fuer die lok vorne oder hinten ist. Ich habe zu jeder lok die info wie sie steht wenn die koordinaten 0,0,0 und die drehung 0,0,0 ist. Loks werden meist 90 grad gedreht zu gleisen aufgesetzt, es gibt aber ausnahmen, -90 ist dann gegenrichtung. Die App weis das , ich muss das nicht in scripten unterscheiden und auch nicht aufpassen wie ich die lok aufgesetzt habe. Fuer jedes modell generiere ich einen mapper der meine "virtuelle" aktion/animation in den tatsaechlichen string umwandelt und in einem script als parameter einsetzt. Nicht alle aktionen sind fuer alle modelle vorhanden oder auch nicht unbedingt integriert (Zuglauschilder). Manche aktionen werden durch scripte simuliert, oder durch eigene modellanimationen ersetzt (weite zukunft). Zu beachten ist: Diese aktionen laufen nur ab wenn eine kamera auf das objekt focusiert ist. Ansonsten ist das ja verschwendung von rechnerleistung. Die Aktionsnamen stellen eine art standardisierten schalternamen dar, und ich bin gerne bereit meine liste fuer die verschiedenen typen zur diskussion zu stellen, und auch meine namen and einen konsensus anzupassen, aber bis so etwas existiert, werde ich weiter mein mapping benutzen. Werde von zeit zu zeit weitere sequnzen posten, derzeit implementiere ich weitere anzeige funktionen die mir helfen vollstaendigkeit zu ueberpruefen und die mapper zu erzeugen, fuer die ersten beispiele. Gruss Gmd
  6. Hallo, danke fuer den Post. Ich verwende die neue schnittstelle im augenblick nur sporadisch habe mir erst mal ein Lua manager gebaut um scripte leichter zu erzeugen. Performanceaussagen kann ich noch nicht machen Wenn du mit grafiksoftware das UI meinst ? Ich verwendet Syncfusion WPF, ist ein kommerzielles paket aber man kann eine community license beantragen. Meine software ist nicht direkt als steuerung ausgelegt, derzeit jedenfalls noch nicht. Ich bin erst mal dabei ein "virtuelle welt" zu definieren und dafuer eine datenstruktur zu erstellen und dann einen AI draufsetzen der die Steuerung macht. Falls interesse besteht kannst du gerne meine source haben, ist aber recht umfangreich, aber ich bin auch per chat zu erreichen und kann gerne hilfstellung leisten. gruss Gmd
  7. Hallo, wieder etwas weiter .. Habe aufgegeben mit der gesamten liste von schaltern zu arbeiten, macht aus verschiedenen gruenden keinen sinn, auch wenn die objekte zugeordnet sind. Ist einfach zu unuebersichtlich und zu langsam beim gruppieren, etc .. ist gut die liste in der app zu haben, da ich abgleichen kann, aber konstruktiv arbeiten und denken laesst sich besser andersherum .. Ich habe jetzt meine listen Objekte/Animationen fast vollstaendig, habe die Loks, Wagen, Autos, werde aber mit loks und wagen beginnen. Ich kann eine oder mehrere kategorien wie dieselloks,dampf, elektro einzeln oder gemeinsam laden und mit Check Animations den ablgleich zu der schalterliste von Neo machen. Der tick sagt gefunden, das kreuzt sagt nicht gefunden. In diesem fall ist die oberflaeche und die schalterliste nicht indentisch Sound (Horn, once) ist in der Schalterliste als Sound (horn, once) also H und h .. es sind auch viele tipfehler wie Loo)p oder Horm usw. aber in beidem Anzeige und Schalterliste. Das stoert mich jetzt erst mal alles nicht weiter, sondern ich werde die AI keywords in die jetzige Objektliste laden und dann anfangen zu sortieren, erstmal nur mit diesel, dann mit damp , dann mit Elektro und dann alle zusammefuehren und sehen was dabei herauskommt. Das sollte eine gute grundlage sein die virtuellen animationen abzuleiten, also eine moegliche basis fuer die standardisierung. Allerdings macht das nur sinn, wenn die begriffe vom Mbs beim hochladen von modellen auch erzwungen werden, sonst nutzt das alles nichts, da sich sonst wieder tipfehler etc einschleichen. Ich denke es macht auch sinn erst mal eine kategorie nach der anderen anzugehen, wenn man denn einen ueberblick geschaffen hat. Hier ein bild der derzeitigen liste. Der Ai hat sehr wenig fehler gemacht, die umwandlung laeuft erstaunlich gut und ist gleichzeitig eine gute kontrolle der oberflaeche. Ich hebe alle screenshots unter guid auf. kann sie jederzeit auch in meiner app anzeigen, zur kontrolle. Das ist ein screeshot der automatisch erstellt wird und unter guid.png abgelegt wird und das holt der AI raus ({7982AD89-4FFB-47DF-BE8C-E722F80FC0F3}): ['KohleKasten-Aufbau'], ['Scheinwerfer hinten rot'], ['Scheinwerfer hinten weiß'], ['Scheinwerfer vorn rot'], ['Scheinwerfer vorn weiß'] das kann dann mein programm verarbeiten Gruss Gmd
  8. Hallo ich denke ich poste ueber animations hier weiter, dann bleibt der andere thread mehr fuer diskussion. Naechster schritt: Habe ableich fertig, der zwischen der einfachen schalterliste und meiner animationsliste per fahrzeug eine verbindung herstellt. Kann nach objektname, typen, verwendung sortieren/gruppieren. Daten sind noch nicht vollstaendig, bin noch am konvertieren der screen shots mit dem AI. Habe loks, wagen und bin a pkw etc. Allerdings laesst mich der AI nur eine bestimmte menge files pro 12 stunden laden, aber das stoert mich nicht, mache andere dinge in der zwischenzeit. Mit einer groesseren menge and daten hat man dann einen besseren ueberblick und idee welche keywords relevant sind und vereinheitlicht werden und dann eine standardisierung rauszuziehen. Wenn ich die liste vollstaendig habe, dann werde ich sie wieder dem AI fuettern und mal sehen was dann rauskommt. Mein katalog derzeit hat nicht alle neuen MbsObjekte aber genug um einen Ansatz zu machen, sind aber nicht viele die fehlen. Da das studio ja nicht sagt wenn neue modelle geladen werden muss ich halt immer nachschauen. Gruss Gmd
  9. Sicher, aber das erreiche ich am besten wenn ich meine liste mit objekttype/Animationen habe, haendisch ist das zuviel arbeit. Ich werde meine klassifikation zu gegebener zeit posten. War eine meiner fruehen wissenschatlichen arbeiten, Klassifizierung von unterprogrammen zur besseren wiederverwendung in grossen prgramm bibliotheken. Klassifizierung gehoert zu einem meiner "Hobbies", daher ja auch der ansatz mit meiner app. Gruss Gmd
  10. Naechster schritt. Liste mit keywords in tool geladen. Die rohversion der liste hat gleiche keywords in verschiedenen spalten, das ist nicht gut zum sortieren und gruppieren. habe beim import die keywords vereinheitlicht, gleiches keyword in gleicher spalte. Weitere betrachtung zeigt allerdings dass die weiter strukturierung ohne objektzuordnung nicht viel bringt. Das Ruecklicht am fahradhelm gehoert nicht in die gleiche kategorie wie das ruecklicht and der rangierlok. Ich werde auf jeden fall meine virtuellen animationen in "Anwendungskategorien" und ObjektTypen einsortieren. Melde mich wieder wenn ich diese liste mit den tatsaechlichen objektspezifischen schaltern abgeglichen habe . Gruss Gmd
  11. Hier mal ein erster schritte. Habe meine hilfsfunktionen fertig mit denen ich animations namen sortieren, gruppiere, analysieren, strukturieren kann. usw. Hier ein erster ansatz, ohne den kontext des objektes ist das schwieriger, aber das ist der anfang mit dem AI. Zunaechst Neos Liste - Keyword Analysis 02-Licht Gaststube-An/Rueckwaerts-Aus || licht, gaststube, an, rueckwaerts, aus, schaltlicht, beleuchtung 02-Licht Haus An/Aus || licht, haus, an, aus, schaltlicht, beleuchtung 02-Licht hinten An/Aus || licht, hinten, an, aus, schaltlicht, beleuchtung 02-Licht links An/Aus || licht, links, an, aus, schaltlicht, beleuchtung 02-Licht oben An/Aus || licht, oben, an, aus, schaltlicht, beleuchtung 02-Licht rechts An/Aus || licht, rechts, an, aus, schaltlicht, beleuchtung 02-Licht rechts An/Aus/Unsichtbar || licht, rechts, an, aus, unsichtbar, schaltlicht, beleuchtung 02-Licht Saal An/Aus || licht, saal, an, aus, schaltlicht, beleuchtung 02-Licht vorn An/Aus || licht, vorn, an, aus, schaltlicht, beleuchtung 02-Licht vorn und links vorn An/Aus || licht, vorn, links, an, aus, schaltlicht, beleuchtung 02-Licht vorn unten links An/Aus || licht, vorn, unten, links, an, aus, schaltlicht, beleuchtung Wenn ich damit durch bin mache ich das gleiche mit meiner liste und der objektzuordnung inclusive. dann werde ich beide listen mit keywords in mein tool importieren und ableichen und mit grouping sorting etc .. mal versuchen ein strukture zu definieren die vernueftige gruppen bildet und das waere dann die voraussetzung fuer eine standardisierung.. Fuer meine steuerung brauche ich das so oder so auch wenn ich nicht vorhatte das fuer alle objekte zu machen, aber auf ein paar mehr eintraege kommt es wirklich nicht an. Nur eins hier zur klarheit - dies sind NUR Schalter .. nicht die alten animationen. gruss gmd
  12. MarkoP, Es gibt eine liste aller verwendeten objekte im MBS mit search, aber vielleicht kann ich die hier helfen. Meine app ist leider nicht fremdinstallierbar bisher, aber wenn du mir deine anlage als entwurf hochlaedst kann ich mal meinen "EbenenSieb" drueberlaufen lassen. Ich kann alle selektierten objekte in eine gruppierte liste einlesen. und auch von dort einzeln selektieren. Wenn deine toene eindeutige namen haben und sie sollte ich sie finden, brauche allerdings einen katalog eintrag in meiner app fuer die toene. Waere also gut wenn du mir eine kleine testanlage machst die deine toene enthaelt. Waere vielleicht eine idee ein plugin daraus zu machen . Ich habe das gebaut um virtuelle ebenen zu verwalten und objekte oder gruppen ein und auszublenden. Gruss gmd
  13. Hallo, Thema Animationen. Habe mir die ersten tools gebaut mit denen ich das thema sortieren, generalisieren der Animationen angehen will. Ich kann die "Schalter" eines Fahrzeugs automatisch ermittel und abspeichern. Habe das mal fuer all diesel loks getan, als testdaten. Habe eine edit funktion gebaut mit der ich die erzeugten listen importieren kann. Verschiedene dartsellungen helfen eine idee zu bekommen wie ich das thema am besten angehe. Als naechstes ergaenze ich funktionen die keywords (Schlagworte) zuordnen koennen, semi automatisiert, un dann kann ich diese struktur nach allen richtungen zerlegen. Ich knn auch transformations listen erstellen die fuer jedes modell auflisten, welche animation wie umbnannt werden koennte, wenn man sich denn auf die standardisierten namen geeinigt hat. Die schlagworte sind dann ein anfang. Wenn ich soweit bin die schlagworte (erster ansatz) zugeordnet zu haben, werde ich in einem neuen therad die ergenisse praesentieren und hoffentlich eine diskussion anregen. Auch geplant ist ein abgleich meiner animationsnamen mit der liste von Neo. Wenn jemand noch anregungen hat, bitte tut euch keinen zwang an. Mal sehen ob ich hier ein ergebnis erzielen kann. Das thema ist messy und komplex, und ohne tools wohl kaum zu einem befriedigenden ergebnis zu bringen. Gruss Gmd
  14. Das ist ein entwicklungs projekt, nicht commercial und in der entwicklung befindlich. Ob es jemals funktioniert weiss ich nicht, wird man sehen. Es ist open source und wenn du C#,Python,MySql,Avalon,NLua,Syncfusion und ein paar weitere libraries kennst und mit ein paar hundert klassen umzugehen weisst, dann kann ich dir gerne eine version auf meinen server legen. Visual Studio 2022, .Net 8.0 und Ef6 ist voraussetzung. wenn es funktioniert ist es frei fuer jeden, und ich poste weil ich feedback bekomme und dadurch weitere ideen. Gruss Gmd
  15. Hallo mal wieder, habe meine datenstruktur weiter verfeinert und einige editierungsfunktionen fertiggestellt. Irgendwie habe ich das gefuehl, dass einige der leser vielleicht noch nicht so ganz mein "Bigger Picture" sehen. Fuer mich selbst habe ich ein Beispiel Scenario beschrieben, um meine Datenstruktur darauf hin zu untersuchen inwieweit das abbildbar ist, und dabei dachte ich dass das vielleicht fuer einige auch weitere einsicht in die zielsetzung meine app gibt. Also hier ist der Text: Animations/Steuerungs Beispiel: Ein Dieselfernverkehrszug faehrt auf einen Durchgangsbahnof zu und die Betriebssteuerung verarbeitet MbsEvents und prueft Bedingungen um den zug in das dafuer vorgesehene Gleis zu lenken. Die Steuerung hierfuer verwendet die gleichen Daten (MbsTrigger, MbsCondition,EventSequence und Virtual Event). Diese sind nicht auf die Animationssteuerung beschraenkt. Die Steuerung regelt die Weichen und den Seitenschutz als auch die Einfahrgeschwindigkeiten je nach Zugart, das ist ebenfalls nicht teil der Animationssteuerung. Wir definieren Virtuelle Events Bahnhof-Einfahrt-Preview: Ereignis/Bedingung - Die Fahrstrasse zum Zielsignal ist gesetzt Ereignis/Bedingung - Zug passiert Einfahrt Vorsignal Der Event loest eine einfache Animationssequenz aus, ebenfalls eine Animation aus der App. Companion Animation: Abspielen Ankunfstansage - Die Ansage ist dem Zug (Erstellt im Zugdesigner) zugeordnet und dem Bahnhof (Definiert in den Basisdaten und Fahrplan) Die Ansage wird bei Bedarf automatisch generiert und synthesiert mit Gerauschen der entsprechenden Umgebung. Das sind kein vorgefertigten audio snippets, das wird "on the fly" erzeugt. MbSAnimation/Aktion: Der Imbisswagen faehrt auf den Bahnsteig. MbSAnimation/Aktion: Einige wartende Fahrgaeste treten vom Bahnsteig zurueck MbSAnimation/Aktion: Zwei Gepaecktraeger machen sich bereit. Bahnhof-Einfahrt: Ereignis/Bedingung - Einfahrgleis passiert Abspielen Ankunfstansage: Die zweite Ansage wird gemacht, Zug faehrt ein MbSAnimation/Aktion: Kleiner Gepaeckwagen mit Post faehrt am hinteren Ende des Bahnsteigs in Bereitstellung Bahnhof-Halt: Ereignis/Bedingung - Haltegleis erreicht MbSAnimation/Aktion: Diesel Auspuff abgestellt MbSAnimation/Aktion: Tueren Oeffnen MbSAnimation/Aktion: Engine off - oder auch nicht (Definition durch Delay und Gesamtdauer je nach Fahrplan) MbSAnimation/Aktion: Personen steigen aus MbSAnimation/Aktion: Personen steigen ein Abspielen Abfahransage: Ansage ueber Fahrziel und Stationen (Daten aus dem Fahplan) usw. Kein Ereignis oder Bedingung ist einem physischen Objekt mit festem Namen zugeordnet. Die Steuerung uebernimmt die Analyse der Mbs Events und transformiert generische Definitionen zu Anweisungen an tatsaechliche Objekte. Wenn die Ereignisse und Bedingungen entsprechend definiert sind und der Aufbau der Anlage die entsprechenden logischen Elemente enthaelt, dann benoetigt das obige Scenario nur eine einmalige Definition und funktioniert fuer alle Bahnhoefe. Die Bewegung von Personen zum Beispiel muss dabei nicht mit Fahrspuren realisiert sein, das waere viel zu aufwendig. Das automatische Erkennen und Definieren der Steuerelemente uebernimmt die Funktion BlockErkennung, damit nicht alle Elemente haendisch definiert werden muessen. Die Standardisierung der Animationen ist hier ein Teil des Gesamtproblems. Die Definitionen sind auch unabhaengig von einzelnen Anlagen solange die entsprechenden trigger und objekt als Typen/Namen vorhanden sind, was die BlockErkennung uebernimmt oder unterstuetzt. Vielleicht wieder ein Schritt weiter zur besseren Erklaerung, hoffe ich. Gruss Gmd
  16. Hallo, eine woche ueber 40 grad zu hause und ich bin froh dass ich hier im sueden bin, milde 24, leichtes lueftchen durch den caravan, sehr angenehm. Heute nun mal ein paar erklaerungen zum thema animationen. Ich mach das hier um den anderen thread nicht zu sehr belasten. Die diskussion hat mir gezeigt dass ich erst mal einiges erklaeren muss zum verstaendnis was ich eigenlich mit den animationen beabsichtige . Das Mbs und die EV sind auf ereignisse ausgerichtet und alles passiert nur ueber ereignisse, timer, schalter usw. Wenn man also etwas bewegen oder blinken lassen will dann ordnet man das einem oder mehreren ereignissen zu. Wenn man flexible sein will dann macht man sich ein paar scripte die verschiedene animation zusammenfassen und bei bestimmten ereignisse getriggert werden. So weit so gut. Das ganze passiert aber auf einer sehr niedrigen ebene und benoetigt ziemlich viel definitionsaufwand, insbesondere wenn die animationsnamen verschieden sind fuer verschiedene objekte im grunde aber das gleiche tun, also ein mapping stattfinden muss. Die definition im Mbs ist was man bottom up nennen kann, also elementare ereignisse verknuepfen zu einem groesseren ablauf. Ich hoffe das ist erst mal soweit klar. Ich denke aber prinzipiell anders, da mir der definitionsaufwand einfach zu hoch ist fuer dutzende, wenn nicht hunderte von animationen die steuerung zu definieren. Bei einer belebten anlage, und das sollen sie ja sein, kann das sehr umfangreich werden. Also ist die idee eine andere. Wenn man ein bestimmtes produkt kaufen will und jedes geschaeft oder website abklappern muss, dann kann das muehsam sein. Betrachten wir mal nicht die bots oder portals sondern nur den fall, dass alle produktanbieter innerhalb von kurzer zeit (sagen wir 1 stunde) ein angebot in gleichem format an uns schicken, sodass wir einfach nach bedingungen auswaehlen koennen, preis, lieferbarkeit etc. Nennen wir das mal top down. Nun uebertragen auf das Mbs und die steuerung bedeutet das, wir definieren virtuelle ereignisse, z.b. zug haelt am personenbahnsteig, das kann eine summe von elementaren ereignissen sein, zug betritt gleis, kontakt ausgeloest, antrieb ausgeschaltet usw. Nun haben wir definitionen vorbeitet, die eine folge von aktionen beinhalten die ausgeloest werden sollen wenn ein bestimmtes virtuelles ereignis stattfindet. Diese definitionen sind zunaechst einmal prinzipiell vom fahrzeug, lok oder wagen unabhaengig, und muessen auch nicht and jeden bahnhof, gleis oder fahrzeug angehaengt werden. Da wir einen typ definiert haben der wiederum typen von animationen enthaelt, koenen die automatisch ablaufen wann immer die bedingungen fuer das gegebene virtuelle ereignis eintritt. Nun sind nicht alle animationen bei allen objekten vorhanden oder heissen unterschiedlich. Dafuer haben wir einen mapper der die animationsnamen je nach objekt uebersetzt oder auch falls nicht vorhanden auf eine andere animation umlenkt. Prinzipiell kann ich damit generalisiert alle moeglichen situationen beschreiben und das laufzeitsystem interpretiert die elementaren ereignisse und waehlt aus welche animationstypen anwendbar sind. Theoretisch kommt man allein mit typen aus und braucht keine einzelfaelle zu definieren, aber auch das will ich moeglich machen fuer meine app. Also wenn nun die animationsnamen vereinheitlicht werden dann ist dass toll, ist aber fuer mich keine vorraussetzung. Ich passe mich and den status quo an und wenn die dadurch gewonnen erkenntnisse zur standardisierung helfen, umso besser. Hier mal einen auszug aus meiner spezifikation fuer das animation management, naemlich die eigenschaften eines fahrzeuganimationstyps und dazu erweiterte timing parameter. General Attributes for Vehicles float? Duration Approximate duration of animation sbyte? IsNight Used during night hours (Default Y) sbyte? IsDay Used during daylight hours (Default Y) sbyte? HasSound Animation creates sound (Default N) sbyte? MovingOnly Only played while vehicle is moving (Default N) sbyte? StoppedOnly Only played when vehicle has stopped sbyte? CompleteBeforeMoving Animation has be to completed before vehicle moves (Default n/s) sbyte? StartAfterEngineOff Animation starts after engine was switched off (Default n/s) string Direction Specifies directional use of animation (Default F+B) sbyte? HasRepeat Specifies if extended timing information is required (Default N) string? Delay Delay(h.m.s.ms) after event before animation is started (Default n/a) Timing Parameters sbyte? IsLoop Automatic replay of animation (Default N) sbyte? IsRandom Random start of animation when loop is specified (Default n/s) float? MinPause Minimum pause between random start (Default 0) float? MaxPause Maximum pause between random start (Default 0) sbyte? IsInterval Specifies fixed repeat interval (Default N) float? PauseInterval Time between starts when fixed interval (Default 0.0.100.0) int? Count Defines number of repeats (Default 0) string? Period Defines the maximum time span for Count of repeats (Default 0.10.0.0) sbyte? Timed Defines if the animation is started at a specific time string? Days Defines days of the week (Default M,T,W,T,F,S,S) string? Time Defines the time of the animation start (Default hh:mm:ss) float? Duration The length of played animation or repeats of animation if shorter (Default 0.0.0 hh:mm:ss) This makes the churchbell ring every hour for 5 minutes starting at 12 noon, every day IsLoop = "Y", IsInterval="Y", PauseInterval="0.1.0.0", Count="12", Period = "0.24.0.0", Timed="Y", Days="M,T,W,T,F,S,S" , Time="12:0:0" Duration="0.5.0" Ob das ausreicht wird sich zeigen, aber damit habe ich begonnen. Und hier noch ein bildchen, habe kein strenges ER diagramm gezeichnet, etwas weniger wissenschaftlich Ich hoffe dass das nachvollziehbar war und vielleicht auch meine prioritaeten erklaert. Gruss Gmd
  17. Ist schon mal eine idee fuer typen, gemeinsam sollte da doch eine brauchbare liste rauskommen. Gruss Gmd
  18. das ist doch schon mal ein anfang .. I habe meine typisierung fast fertig, dh eigenschaften fuer jede animation, wie tag,nacht, intervall, dauer und etliche weitere eigenschaften. Warted einfach mal ab was ichdamit mache. Die liste is ein einfang und eine vorlage. Ich werde meine animation/fahrzeug liste erstellen und dann damit abgleichen, ds bedeutet hinter jeder animation mit deinen eintraegen den name eine modells, welches zutrifft. Was daruas entsteht ist eine vergleichsliste weleche animationen gleiches tun aber anders heissen, damit kann ich besser steuern und die modellbauer oder wer auch immer will kann das vereinheitlichen. Die typen wuerden ja eine erste standardisierung liefern. Mal sehen wie weit ich komme, habe noch andere dinge zu erledigen zur zeit, aber trotzdem noch genug zeit mich damit zu beschaeftigen. Gruss Gmd
  19. Das ist mir nicht genug, sorry. Ich verwende liebe komplette daten auch wenn sie nicht standardisiert sind, und werde daraus einen standard fuer mich ableiten. Ich bin ja auch nicht auf einfach oder mehrfachschalter angewiesen und es ist fuer mich auch nicht wichtig ob ein modell alle funktionen hat, ich muss einfach nur wissen ob eine funktion vorhanden ist und wie sie heist. Wenn daraus etwas allgemein verwendbares entsteht, oder zumindest anregungen gibt, dann ok, aber ich warte nicht bis eine solche diskussion abgeschlossen ist. Es kostet mich nicht mehr als ein paar stunden die liste zu erstellen die ich brauche als sample. Muessen ja nicht alle sein, und wenn das zu einem brauchbaren ergenis fuehrt koenen wir weiter diskutieren. Wenn ich die fahrzeug zuordnung habe kann ich die animationen typisieren und wenn ich sie typisiert habe kann ich einen moeglichen standard ableiten. Das ist meine normal vorgehensweise. gruss Gmd
  20. Das hast du misverstanden, ich meine nur ob eine animation richtungsabhaengig ist, pantograf, tueren, stirnlicht usw. aber nicht rauch, abgase, kabinenlicht etc .. bei der typisierung geht is um eigenschaftstypen. Gruss Gmd
  21. Neo, zunaechst einmal danke, ABER .. lol die liste ist ja keine zuordnung von schalter zu modellen und das ist ja das entscheidende. Ich bin dabei eine datenstruktur aufzubauen und animationen zu typisieren und mit eigenchaften zu versehen, die dann als steuerungsparameter verwendet werden koennen. Bin gerne bereit hier input zu erhalten. Animationen koennen eigenschaften haben, was noch fehlt sind richtungsbedingungen, ich betrachte zunaechst einmal nur fahrzeuge. Typen dienen zur schnelleren definition von eigenschaften und steuerfunktionen. Mal sehen was daraus wird, werde regelmaessig berichten und du kannst ja deinen input dazu geben, happy to oblige. Nun was machen wir mit dem problem der fahrzeugzuordnung, wieder zurueck zum AI ? klingt schlimmer als es ist und die fehlerquote ist gering. Gruss Gmd
  22. Neo, danke, Ich hatte das ja bereits erwaehnt war aber nicht sicher ob du dazu bereit bist. Natuerlich ist das die beste loesung , frage ist nur in welcher form. Warte auf die liste und mal schauen was ich daraus machen kann. Gruss Gmd
  23. nur zur illustration. Ich habe begonnen das zu implementieren, habe die db tabellen definiert und eine kurze anforderungsbeschreibung mit den db tabellen fuer den ai gemacht und das bekam ich zurueck: you have created these lists from images ['01 Dach ausblenden'] ['02 Spitzenlicht vorne'] ['03 Spitzenlicht hinten'] ['04 Schlusslicht vorne'] ['05 Schlusslicht hinten'] ['06 Führerstandsbeleuchtung'] ['07 Tür rechts'] ['08 Tür links'] I want to store them in this table public partial class Vehicleanimation { public ulong Id { get; set; } public string Name { get; set; } public ulong? TypeId { get; set; } public string Description { get; set; } public ulong? FollowedBy { get; set; } public ulong? AnimationOwnerId { get; set; } public virtual Objektreferenz AnimationOwner { get; set; } public virtual Vehicleanimation FollowedByNavigation { get; set; } public virtual ICollection<Vehicleanimation> InverseFollowedByNavigation { get; set; } = new List<Vehicleanimation>(); public virtual Vehicleanimationtype Type { get; set; } public virtual ICollection<Vehicleanimationparameter> Vehicleanimationparameters { get; set; } = new List<Vehicleanimationparameter>(); } I want to link them individually to a type public partial class Vehicleanimationtype { public ulong Id { get; set; } public string TypeName { get; set; } public string Description { get; set; } public virtual ICollection<Vehicleanimationparameter> Vehicleanimationparameters { get; set; } = new List<Vehicleanimationparameter>(); public virtual ICollection<Vehicleanimation> Vehicleanimations { get; set; } = new List<Vehicleanimation>(); } and each animation can have properties(parameters) public partial class Vehicleanimationparameter { public ulong Id { get; set; } public ulong? TypeId { get; set; } public ulong? AnimationId { get; set; } public float? Duration { get; set; } public sbyte? IsLoop { get; set; } public sbyte? IsNight { get; set; } public sbyte? IsDay { get; set; } public sbyte? HasSound { get; set; } public sbyte? HasRepeat { get; set; } public float? Interval { get; set; } public sbyte? MovingOnly { get; set; } public sbyte? StoppedOnly { get; set; } public sbyte? CompleteBeforeMoving { get; set; } public sbyte? StartAfterEngineOff { get; set; } public virtual Vehicleanimation Animation { get; set; } public virtual Vehicleanimationtype Type { get; set; } } thiese parameters can be used as a preset for a type (template for the animation parameters) and for each individual animation Animations are linked with vehicles via the table ObjectReference Thast part of the prject, Now lets start with an edit funktion for the types with the ability to enter presets for each type Best is to use a syncfusion data grid and NOTE most parameters are TINYINTS with -1 not applicable 1 = true 0 = false do you need anything else ? I want the View in xaml UserControl and the Viewmodel which I load into a dockingmanager ChatGPT said: ChatGPT To create an edit functionality for Vehicleanimationtype that includes presets for animation parameters using a Syncfusion DataGrid, we will need the following: ViewModel: A VehicleanimationtypeEditViewModel with properties to manage Vehicleanimationtype and its associated Vehicleanimationparameter entries. UserControl: A XAML view for editing types and entering presets using a Syncfusion DataGrid. Command Logic: Commands for adding, saving, and deleting entries. Data Binding: Bindings between the ViewModel and the DataGrid for CRUD operations. Implementation Plan 1. ViewModel: VehicleanimationtypeEditViewModel csharp CopyEdit using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using Syncfusion.Data.Extensions; using System.Collections.ObjectModel; public class VehicleanimationtypeEditViewModel : ObservableObject { private readonly DBContextManager _dbContextManager; public VehicleanimationtypeEditViewModel(DBContextManager dbContextManager) { _dbContextManager = dbContextManager; LoadTypes(); LoadParameters(); } public ObservableCollection<Vehicleanimationtype> VehicleanimationTypes { get; set; } = new(); public ObservableCollection<Vehicleanimationparameter> AnimationParameters { get; set; } = new(); private Vehicleanimationtype _selectedType; public Vehicleanimationtype SelectedType { get => _selectedType; set { SetProperty(ref _selectedType, value); LoadParametersForType(value); } } private void LoadTypes() { var types = _dbContextManager.DbContext.Vehicleanimationtypes.ToList(); VehicleanimationTypes = new ObservableCollection<Vehicleanimationtype>(types); } private void LoadParameters() { var parameters = _dbContextManager.DbContext.Vehicleanimationparameters.ToList(); AnimationParameters = new ObservableCollection<Vehicleanimationparameter>(parameters); } private void LoadParametersForType(Vehicleanimationtype type) { if (type != null) { var parameters = _dbContextManager.DbContext.Vehicleanimationparameters .Where(p => p.TypeId == type.Id) .ToList(); AnimationParameters = new ObservableCollection<Vehicleanimationparameter>(parameters); } } [RelayCommand] private void SaveType() { _dbContextManager.DbContext.SaveChanges(); LoadTypes(); } [RelayCommand] private void AddType() { var newType = new Vehicleanimationtype { TypeName = "New Type" }; VehicleanimationTypes.Add(newType); _dbContextManager.DbContext.Vehicleanimationtypes.Add(newType); } [RelayCommand] private void DeleteType() { if (SelectedType != null) { _dbContextManager.DbContext.Vehicleanimationtypes.Remove(SelectedType); VehicleanimationTypes.Remove(SelectedType); SelectedType = null; } } } 2. XAML: VehicleanimationtypeEditView.xaml xml CopyEdit <UserControl x:Class="YourNamespace.Views.VehicleanimationtypeEditView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:syncfusion="http://schemas.syncfusion.com/wpf" mc:Ignorable="d"> <DockPanel> <StackPanel Orientation="Horizontal" DockPanel.Dock="Top" Margin="5"> <Button Content="Add Type" Command="{Binding AddTypeCommand}" Margin="5"/> <Button Content="Save" Command="{Binding SaveTypeCommand}" Margin="5"/> <Button Content="Delete" Command="{Binding DeleteTypeCommand}" Margin="5"/> </StackPanel> <syncfusion:SfDataGrid x:Name="TypeGrid" AutoGenerateColumns="False" ItemsSource="{Binding VehicleanimationTypes}" SelectedItem="{Binding SelectedType, Mode=TwoWay}" Margin="5"> <syncfusion:SfDataGrid.Columns> <syncfusion:GridTextColumn HeaderText="ID" MappingName="Id" IsReadOnly="True"/> <syncfusion:GridTextColumn HeaderText="Type Name" MappingName="TypeName"/> <syncfusion:GridTextColumn HeaderText="Description" MappingName="Description"/> </syncfusion:SfDataGrid.Columns> </syncfusion:SfDataGrid> <TextBlock Text="Presets for Selected Type:" Margin="5"/> <syncfusion:SfDataGrid x:Name="ParameterGrid" AutoGenerateColumns="False" ItemsSource="{Binding AnimationParameters}" Margin="5"> <syncfusion:SfDataGrid.Columns> <syncfusion:GridTextColumn HeaderText="ID" MappingName="Id" IsReadOnly="True"/> <syncfusion:GridNumericColumn HeaderText="Duration" MappingName="Duration" /> <syncfusion:GridCheckBoxColumn HeaderText="IsLoop" MappingName="IsLoop" /> <syncfusion:GridCheckBoxColumn HeaderText="IsNight" MappingName="IsNight" /> <syncfusion:GridCheckBoxColumn HeaderText="IsDay" MappingName="IsDay" /> <syncfusion:GridCheckBoxColumn HeaderText="HasSound" MappingName="HasSound" /> <syncfusion:GridCheckBoxColumn HeaderText="HasRepeat" MappingName="HasRepeat" /> </syncfusion:SfDataGrid.Columns> </syncfusion:SfDataGrid> </DockPanel> </UserControl> 3. Docking Manager Setup Load the VehicleanimationtypeEditViewModel into a docking manager using your existing infrastructure. For example: csharp CopyEdit var editView = new VehicleanimationtypeEditView { DataContext = new VehicleanimationtypeEditViewModel(dbContextManager) }; dockingManager.Children.Add(editView); Das ist fertig lauffaehiger code, nicht immer correct aber mit ein paar korrekturen spart man jede menge tipparbeit und bekommt den optimierten code. Meine produktivitaet mit dem AI ist faktor 10 wenn nicht mehr. Wenn das zuviel ist hier dann bitte sagen und ich loesche den post. gruss Gmd
  24. und hier der screenshot vom chat. gruss Gmd
  25. t seems my environment for processing the image has reset, and I don't have access to the necessary language data files for Tesseract. Let me fix this and retrieve the text for you. Here is the extracted text from the image in the requested format: plaintext CopyEdit ['Steuerung'] ['Maschinen-Abgase links'] ['Maschinen-Abgase rechts'] ['Maschinen-Lüfter'] ['Beleuchtung hinten'] ['0- aus'] ['Beleuchtung vorn'] ['Licht hinten'] ['0- aus'] ['Licht vorn'] ['0- aus'] ['O'] ['Antrieb einschalten'] Let me know if you need any corrections or further assistance! ich habe nur das image in meinen chat gepostet, habe einen batch fuer sowas gruss Gmd PS: und mit besseren instruktionen kann man dann auch nur die wirklich relevanten teile filtern .. bin dabai das alles zu implementieren, gib mit 2-3 tage
×
×
  • Neu erstellen...