-
Gesamte Inhalte
409 -
Benutzer seit
-
Letzter Besuch
Letzte Besucher des Profils
4030 Profilaufrufe
-
Subroutine simulation in 3D-Modellbahn Studios
gmd antwortete auf hmclays Thema in [International] Problems and solutions
Ah ok, sorry, noted. -
Hallo, just for fun, wie wir hier sagen, habe ich dem ChatGPT mal eine Frage zum MBS gestellt, und zwar die Frage nach den "simulierten subroutinen". Hier ist was ich zuerueckbekommen habe: Frage: kann das 3d modellbahnstudio in LUA subroutines aufrufen Antwort: Im 3D-Modellbahn Studio können Lua-Skripte verwendet werden, um die Steuerung von Modellbahnen zu automatisieren. Ob und wie Subroutinen aufgerufen werden können, hängt von der spezifischen Lua-Implementierung innerhalb des Studios ab. In der Regel unterstützt Lua in diesem Kontext folgende Mechanismen: 1. Funktionen definieren und aufrufen Du kannst in Lua Funktionen definieren, die wie Subroutinen arbeiten, und diese aus anderen Funktionen oder Ereignissen heraus aufrufen. Beispiel: lua Copy code -- Definition einer Subroutine function meineSubroutine(parameter) print("Parameter: " .. parameter) end -- Aufruf der Subroutine meineSubroutine("Testwert") 2. Verwendung von Ereignissen Im 3D-Modellbahn Studio werden Lua-Skripte oft an Ereignisse gebunden, z. B. an Zugbewegungen, Weichenstellungen oder Signale. Diese Ereignisse können Funktionen auslösen, die wiederum andere Subroutinen aufrufen. Beispiel: lua Copy code -- Ereignisbindung function onTrainArrival(train) print("Zug angekommen: " .. train) meineSubroutine(train) end -- Subroutine function meineSubroutine(trainName) print("Bearbeite Ankunft für Zug: " .. trainName) end 3. Rückgabewerte aus Subroutinen Subroutinen können Werte zurückgeben, die in anderen Funktionen verwendet werden: lua Copy code function berechneGeschwindigkeit(entfernung, zeit) return entfernung / zeit end local geschwindigkeit = berechneGeschwindigkeit(100, 2) print("Geschwindigkeit: " .. geschwindigkeit) 4. Lua-Module Wenn das Studio Lua-Module unterstützt, kannst du Funktionen in separaten Dateien organisieren und in deinem Hauptskript importieren. lua Copy code -- Modul: mymodule.lua local mymodule = {} function mymodule.zeigeNachricht() print("Nachricht aus dem Modul!") end return mymodule lua Copy code -- Hauptskript local mymodule = require("mymodule") mymodule.zeigeNachricht() Unterstützung im 3D-Modellbahn Studio Falls du Subroutinen in deinen Lua-Skripten nutzen möchtest, überprüfe: Dokumentation des Studios: Die Lua-API des 3D-Modellbahn Studios könnte Einschränkungen oder zusätzliche Funktionen bieten. Ereignissystem: Funktionen, die mit Ereignissen des Studios verknüpft sind, könnten Einschränkungen bei der Parameterübergabe oder Rückgabe haben. Falls du ein konkretes Beispiel hast, das du umsetzen möchtest, kann ich dir helfen, das Skript entsprechend anzupassen! Ist interessant Ich verwende ChatGPT intensiv fuer meine programmierung und auch fuer das pruefen von texten und optimieren von code. Gruss Gmd
-
Subroutine simulation in 3D-Modellbahn Studios
gmd antwortete auf hmclays Thema in [International] Problems and solutions
Hier eine demo F3B894BE-083C-4BA5-AF2D-47D96E71973F ein generisches script mit vielen function calls, alle script komponenten sind allgemein und werden nur ueber die anfaenglich intialisierten tabellen gesteuert. das sollte die frage eigentlich beantworten denke ich, oder habe ich da etwas uebersehen ? gruss Gmd -
Ich melde mich, falls ich ein problem habe. In jedem fall ist es besser immer erst einmal selbst ueber einen sachverhalt nachzudenken und nicht einfach eine loesung kopieren. Ich suche ja nach abstraktionen, anwendbar auf verschiedene scenarios aber erzeugt mit den gleichen werkzeugen. Am beispiel ist das vielleicht einfacher zu erklaeren: Nimm mal meine baustelle als gegenstand und stelle dir vor dass die verschiedenen kontakte gesetzt sind. Alle kontakte sind selektiert, das programm liest die kontakte mit koordinaten ein. Jetzt hast du ein netzdiagram mit den kontakten als knoten auf dem bildschirm und jetzt kannst du verbindungen ziehen, mit parametern, die die bewegungen und animationen definieren. An den knoten koennen aktivitaten angehaengt werden, die dann angesteuert werden. Da die neue schnittstelle erlaubt alle ereignisse auszuloesen und auch scripte zu laden, laesst sich das automatisieren. Dann muss man keinen code mehr schreiben oder bedingungen auswaehlen etc. Die EV mit ihrer graphischen oberflaeche ist die grundebene, die diagramm definition is eine logische ebene darueber und erzeugt die anweisungen fuer die logische ebene darunter. Und wenn man das noch weiter treibt dann kann man oberhalb der diagram definition einen AI legen der auf text und/oder spracheingabe reagiert. Was bleibt ist das verlegen der notwendigen spuren, aber auch da kann man automatismen einbauen wenn die kontakte gesetzt sind. Sicher nicht vollautomatisch, ein manuelles anpassen der spuren wird in vielen faellen notwendig sein. Allerdings wird es faelle geben wo ein vordefiniertes spurgeflecht mehrfach verwendet werden kann und automatisch plaziert wird. Das sind meine Scenarien. Ein anwendungsfall ist zum beispiel the fuessgaengerverkehr auf einem bahnsteig oder in einer fussgaengerzone. Es koennen dabei immer die gleichen spurkonfiguration verwendet werden, mit verschiedenen figuren und unterschiedlichen bewegungen. Zum beispiel kann damit auch eine "rushhour" simuliert werden oder wenig betrieb am abend. Das ist ja mit dem MBS moeglich aber duplizierung und anwendung auf einen anderen fall mit anderen figuren ist nicht ganz so einfach, da muss man schon recht abstraktes LUA schreiben mit einigen definitionstabellen. Ich hoffe das ist einigermassen klar. Wenn die grundlagen gelegt sind, sind die anwendungen endlos. Ist halt eine andere art zu "basteln". gruss Gmd
-
Hallo und gruesse aus Australien, 35 grad heute, aber nur heute, morgen wieder kuehler. Also heute ein tag fuer den computer mit klimaanlage an. Habe meine behandlung von variationen und deren bilder vervollstaendigt. Kann jetzt auch alle variationen eines objektes verwalten und abbilden. Damit kann ich dann auch alle zugvarianten bilden und auf dem MBS plazieren. Das Beispiel unten ist der Siemens Vectron mit seinen 16 varianten. Nicht dass das wirklich wichtig ist, aber gelegentlich mache ich einfach ein paar einfachere erweiterungen bevor ich mich dann wieder an etwas muehsamere aspekte heranwage. Habe jezt auch das kapitel betriebsansichten weitergefuehrt. Darunter verstehe ich visualisierungen bestimmter logischen aspekte bei denen eine gruppierung von ereignissnachrichten und kommandos, sowie variableninhalte, hilfreich sind eine steuerung zu ueberwachen oder auch scripte zu testen. Ok, das klingt abstrakt, hier ein beispiel eines widgets blockmonitor, das fuer jeden block auf der anlage dynamisch eingerichtet werden kann und dann die wichtigsten informationen anzeigt. Gleiches gibt es dann auch fuer andere betriebs aspekte, zb. ampeln and grosser kreuzung, gueter verladung oder generell animationen. Hier das filmchen dazu. Blockmonitor Widget Noch einen schoenen Sonntag. Gruss Gmd
-
Perfekt ! Danke fuer den tip und tolles beispiel, genau solche scenarien suche ich. Es gibt ja eine menge module, allerdings sind die bespiele die ich suche oft darin vergraben, deshalb der post und die frage. Danke, freue mich ueber die antwort. Gruss Gmd
-
Hallo und gruess aus Australien, habe ein modul mit steuerung hochgeladen 6AB8CA8E-6208-4F9E-8752-7F843CADA1F4 , baustelle am berg. Ich mache solche kleinen module um steuerungsbeispiele zu untersuchen fuer generalisierte nutzung in meinem schnittstellenprogramm. Ich moechte in der lage sein verschiedene animationen mit zugehoerigen scripten zu generieren um mehr abwechslung in solche scenarien zu bringen. Die endlose wiederholung einer animation wird ja auf dauer etwas eintoenig. Ich bin an anderen beispielen aehnlicher art interessiert, nicht zu komplex, um verschiedene anwendungsfaelle zu studieren. Fuer hinweise waere ich dankbar. Gruesse Gmd
-
Neo, https://api.3d-modellbahn.de/catalog/assets/{4F1FA1B4-DA32-4E08-9432-EA24FC30CDF2}?type=thumb&index=4 gibt 404... its die grenze immer noch 3 fuer variationen ? Ich nehme and ja und ich denke dass das auch so bleibt .. just asking .. danke,gruss GMD
-
Hallo und gruesse aus Australian, melde mich mal wieder, ist ja ne weile her dass ich einen stand meines programms gepostet habe. Ich habe immer mal wieder weitergebaut und seit NEO die neue schnittstelle angekuendigt hat, habe ich dann mein konzept angepasst, bzw. erweitert. Ich habe in der zwischenzeit so gut wie alle grundfunktionen fertiggestellt, insbesondere die gesamte funktionalitaet rund um die objektidentifikation und block erkennung. Bin immer mal wieder fuer einige zeit unterwegs in unserem grossen land und habe dann immer nur begrenzt zeit weiterzubauen. Aber es ist ja hobby und ich habe keinen deadline. Habe ein dokument angeheftet worin die die ziele des programms festgehalten sind und kurze uebersicht mit screen shoots vom jetzigen stand. Ich halte das immer fest und erweitere das document, da dadurch nach laengeren pausen ein erneutes einarbeiten erleichtert wird. Habe detaillierte documentation direkt im programm, was dann auch nach einer pause hilft. Die wesentliche neue richtung des ansatzes kommt nicht zuletzt durch die neue schnittstelle, aber auch durch meine neugier und interesse einen AI (KI) einzusetzen und zu trainieren das layout einer riesenanlage automatisch zu erkennen und dann die steuerung mit fahrplaenen durchzufuehren. Grundfunktionen und datenstrukturen sind soweit fertig um ein modell zu erstellen und die ersten tests mit einem AI zu machen. Klar muss ich da noch einiges lernen, aber das ist ja der sinn der sache. Die neue funktionen in der V9, z.b. eine vielzahl neuer beleuchtungsmoeglichkeiten, macht eine weitere automatisierung wuenschenswert. Meine grosse testanlage hat ueber 64,000 objekte und ist manuell nicht zu betreiben oder auch mit algorythmen nicht mehr zu steuern. Da braucht es schon etwas mehr flexibilitaet. Aber nachdem jetzt die grundfunktionen stehen kann ich ueber weitere automatisierung der erkennung nachdenken und wenn ich das modell fertig habe spielt die datenmenge nicht wirklich eine rolle. Jedenfalls hoffe ich dass die "alte schnittstelle" bleibt, da ich sie fuer die gesamte objektidentifikation benutze. Gruss Gmd MBS Companion V2.pdf
-
Haha, kein schnee hier. Noch ein paar punkte als anregung fuer Neo. Vielleicht geht es nur mir so und es liegt an meiner art das mbs zu benutzen, aber trotzdem, here we go: 1. Menu Gelaendegestaltung: Waere gut eine ausgewaehlte funktion mit ESC zu beenden, dann braucht man nicht immer zurueck und ausschalten, insbesondere wenn man den menue bar auf einem anderen screen liegen hat. 2. Uebernehmen funktion bei gelaendeveraenderung waere gut alternativ mit enter zu bestaetigen. 3. Mehr nutzung von "command modifier" wie ctrl oder alt, z.b. wenn man snap eingeschaltet hat aber kurzzeitig ein objekt manuell verschieben moechte muss ich den "zaun" loesen und wieder schliessen (snap on/off). Eine gedrueckte ctrl oder alt taste koennte das kurzzeitig ueberschreiben. 4. Bei eingeblendetem gizmo und highlight einer richtung, koennten cursortasten ein minimales movement ermoeglichen. Die pinselgroesse laesst sich ja auch mit den tasten aendern. 5. Bei gruppen funktionieren die "lokalen" koordinaten nicht, nur weltkoordinaten. Kann wirklich laestig sein fuer geradliniges verschieben. Auch die cursortasten arbeiten mit weltkoordinaten. 6. Menu bars koennte eine autohide option haben, zumindest im simulationsmodus, dann waeren sie aus dem weg. 7. Gizmo kann bei gruppen weit weg von der tatsaechlichen editierstelle sein. Ist bei langen gruppen laestig. Muesste nicht zwangsweise immer in der mitte des objektes liegen, sondern nur funktionieren als waere es die mitte. 8. Die gizmos am ende eines fahrdrahtes bei oberleitungsbau sind ebenfalls zu weit weg (zu niedrig). Man muss oft zu weit rauszoomen. 9. Abspeichern mit CTRL + S im pull down menue visualisieren, damit man weiss dass es anwendbar ist. Ich meine die oberflaeche der V8 ist sehr viel besser als V7, logischer, organisierter, funktionen besser gruppiert. Es sind die kleinigkeiten die einfaches, effizientes umgeehen mit der oberflaeche erleichtern. Gruss Gmd
-
omg, (oh my god, was leute hier sagen in solchen situationen). Ich werde langsam senil, habe ich doch die rotationsfunktionen in meinen anderen scripten extensiv verwendet und bin nicht auf die idee gekommen, dass die figuren ja nichts anderes sind als objekte. Das ist wirklich erschreckend ... ist ja nicht mal beschaemend, ist nur einfach total schecklich. Easy, das mit den gruppen is ok solange man nicht uebermaessig viele objekte hat. Wenn die filterfunktion auch ein eintrag fuer gruppen haette waere das noch nutzbar, ich habe jedoch ziemlich aufgegeben die strukturansicht zu verwenden bei groesseren anlagen. Dennoch, guter tip. Sorry fuer die spaete antwort. Mein frau draengelt, dass ich die benutzeranleitung fuer unseren caravan fertig mache, falls mich ein hai frisst, wenn wir in 3 wochen wieder nach norden fahren zum ueberwintern. Gruss Gmd
-
Neo, habe V8 intensiv verwendet fuer verschiedene tests und teile einer neuen anlage mit script experimenten. Folgende punkte sind mir auf-/eingefallen. Hatte sie in englisch notiert, sorry. 1. Property changes of identical objects in multi selection 2. "Click through" in groups to change properties of single object without ungrouping 3. Automatic stop of vehicles behind a standing vehicle reduces distance after several events (because deceleration not taken into account) 4. Portals with time delay between in/out 5. Depots with separate in/out tracks to avoid deadlocks or contact "Send to depot", which I am using with an event at the moment. 6. Creating a timer from LUA 7. Lua access to coordinates and rotation of objects, e.g. figures. Making non walking, non animated figures turn once in a while. Sind alles bequemlichkeitsfunktionen fuer mich, da ich meinem programm beigebracht habe sich gruppen zu merken und wiederherzustellen, nach der aenderung eines einzelnen objektes der gruppe. Wenn man gruppen als eigene modelle zur wiederverwendung im katalog ablegt und dann plaziert muss man die gruppe aufloesen wenn man ein einzelnes objekt aendern will und danach wieder gruppieren, was manchmal muehsam ist. Verschiedene programme, die ich verwende, kennen diese funktion in einer ausgewaehlten gruppe, ein element durch erneutes clicken zu aktivieren und aendern zu koennen, wenn man direkt auf das element clickt, waehrend die gruppe ausgewaehlt ist. Das koennte fuer viele eine vereinfachung sein und hilft bei der strukturierung einer anlage. Punkt 7 ist fuer mich persoenlich auch nicht wesentlich, da das ueber die schnittstelle geregelt werden kann, koennte aber etwas "Bewegung" schaffen, ohne dass man gleich eine spur und/oder animation verwendet, oder jede figur beweglich macht. Das sind die wichtigsten einer laengeren liste. Macht aber immer noch maechtig spass mit der V8 zu bauen . gruss Gmd
-
Goetz, Ich habe nicht von den differed calls gesprochen, sondern von deiner bemerkung zu functions. Ich verstehe was du sagen willst, aber performance spielt waehrend der entwicklung der scripte keine rolle fuer mich. Wenn du diese bemerkungen zum wohle aller machst ist das voelllig ok, aber fuer mich ist das derzeit irrelevant, weil diese routinen nicht so bleiben. Diese animationen in functions sind ein hack, wie ich ja bereits in anderen worten erklaert habe, bis ich eine eigene interpretation von animationssteuerung fertig habe. fuer eine entgueltige version werde ich sicher ueber performance nachdenken, jetzt aber nicht. Das lohnt sich alles erst wenn ich mal eine anlage mit 60,000 + objekte steuere, was ja das ziel ist. Differed calls sind eine einfache methode zeitverzoegerung zu erzeugen ohne den betrieb zu stoppen, im endeffect nichts anderes als implizite, benannte timer. In meinen entgueltigen scripten habe ich verschiedene zeitbasen (timer) vorgesehen, die ich fuer bestimmte zeitraster verwende. Ansteuern von statusgetrieben ablaeufen betrifft nicht nur animationen wie in diesem beispiel. Du must dich schon noch etwas gedulden, bis ich mal soweit bin dass sich eine detaillierte diskussion lohnt. Aber vielleicht lernen andere forumites ja etwas von diesen diskussionen. Ich habe kein problem, wenn du den finger hebst und darauf hinweist, dass das vielleicht keine idealloesungen sind, das ist ok, aber lass deine persoenlichen attacken aus dem spiel. Es koennte den falschen eindruck erwecken, den du sicher nicht willst. gruss Gmd
-
Da liegst du eben falsch, andere sprachen machen das automatisch, da die runtime ganz anders organisiert ist. Und ausserdem habe ich mich nie als professionellen programierer ausgegeben. Ich habe schon mal an anderer stelle gesagt, dass das alles nur hobby fuer mich ist. Programmieren war nie mein taeglich brot. Gruss Gmd
-
Goetz, was du anscheinend nicht richtig zuordnest ist die tatsache, dass ich ueber die schnittstelle keine ereignismodule und andere steuerelemente generieren kann. Deshalb bin ich auf generische scripts und variablen angewiesen, mit denen ich parameter uebergebe. Es kann ja sein, dass sich das in zukunft aendert, aber derzeit verwende ich die steuerung halt nicht wie sie vielleicht von dir verstanden wird. Wenn meine scripts fertig sind, so wie ich hoffe es zu erreichen, dann brauche ich die steuerung nicht mehr anzufassen, und auch kein Lua. Durch logische kommandos, uebertragen durch textfelder, werden die generischen scripte alles tun was ich will, zumindest im betrieb. Vielleicht kommen ja auch moeglichkeiten fuer die erstellung dazu, irgendwann. Deshalb vergleiche meine scripte nicht mit der "typischen" steuerung einer anlage, das ist es sicher nicht. Gruss Gmd