Jump to content

gmd

Mitglieder
  • Gesamte Inhalte

    670
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von gmd

  1. Tolles projekt, verfolge das mit interesse gruss gmd
  2. Hallo, wird wieder etwas langsamer werden. Ab morgen einpacken und dann wieder unterwegs auf dem naechsten trip fuer 4 monate . Nut ein paar stunden pro woche am computer. Hoffentlich ein paar fortschritte wenn ich ich zurueck bin . Habe nur umstrukturiert, etwas klarere linien geschaffen im program und an einem punkt ueber 600 fehler produziert .. hat ne weile gadauert das wieder aufzuraeumen, hat sich ber gelohnt wenn ich nach vorne schaue. Jeder der programmiert kennt ja solche punkte, an denen sich ein konzept totlaeuft und aenderung braucht. Wenn eine tabelle 50 attribute hat, dann muss man das halt teilen. gruss Gmd
  3. Neo, habe noch nicht den versuch gemacht die funktionen der alten schnittstelle umzustellen, fuer steuerung benutze ich die neue schnittstelle. Ich habe bisher nur folgenden wissensstand: Ich erkenne bisher nur meist steuerfunktionen und nach deinen eigenen worten ist das ja auch das ziel der schnittstelle. Die alte schnittstelle verwende ich zum einlesen aller objekte oder selektierter objekte, coordinaten, rotationen, plazieren von objekten, lesen guid, umbenennen objekte, duplizieren von objekten, alles funktionen die mit dem anlagenbau zu tun haben und nicht primaer mit der steuerung. Verbergen objekte, ersetzen objekte usw. also alles konstruktionsfunktionen. ich weiss dass ich mit layout.xxx viele der funktionen ersetzen kann, also coordinaten, transformation (rotation), aber ich habe noch nicht rausgefunden wie ich 100,101,130,131,134,135,136,143,144 auf einfache art ersetzen kann. Einiges geht bestimmt ich habe es nur noch nicht gefunden. Wenn du mir da helfen kannst waere das gut, dann kann ich sagen ob was fehlt. Derzeit waere das falsch, da mein wissen noch nicht gesichert ist um zu sagen ob etwas fehlt. Die ereignisse sind ja kein thema, die sind ohnehin viel detaillierter mit der neuen schnittstelle. Ich lasse zwei offene windows mit beiden ports laufen, da kann man die beiden schnittstellen gut vergleichen und die parsersoftware anpassen. Mit Json sind die kommandos nicht mehr so einfach abzusetzen, die muss man dann vorbereiten und bei bedarf pasten zum testen. Gruss Gmd
  4. Hallo, wen es interessiert die derzeitige liste der block eigenschaften, die ich verwalten kann und auf den der AI fuer die steuerung aufbaut. Habe wert darauf gelegt, dass viele parameter fuer den betrieb als defaults definiert werden koennen, das reduziert erst mal den definitionsaufwand drastisch, erlaubt aber den stueckweise ausbau und verfeinerung des betriebs fuer unterschiedliche zugtypen und strecken. Realistische geschwindigkeitsunterschiede zwischen zugtypen koennen damit abgebildet werden und auch spontan zu entscheidende ausweichmanoever werden moeglich bzw. notwendig, damit hat der betrieb auch eine art zufaelligkeit trotz fahrplaene. Ist moeglicherweise noch nicht vollstaendig , werde das aber bei der schrittweisen implementierung des control AIs merken. Gruss Gmd Blockeigenschaften in Datenbank Identification Attributes User defined and partially traced ulong Id Unique Id of the record ulong? SectionId The section the block is located in ulong? StationId The station the block is located at ulong? DepotId Block may belong to a Depot not a station string BlockKennung Comprises segment name and block number int BlockNummer Just the block number, unique on the set short? Konfiguration The main purpose of the block, see Enum short? BlockRichtung Start direction of block string BlockStartGleis Name of the first track or switch of the block string BlockEndGleis Name of the last track or switch of the block string Beschreibung Dscription of the block short? IstEndblock If the block ends with no other connection Block Charactersistics Determined with block tracing float? Blocklaenge Total length of the block float? Bremsweg Length from brake contact to stop contact float? AusfahrtLaenge Length from stop contact to end track float? Bremsbereich Distance stop contact to signal – safety zone float? MaxZugLaenge Maximum length of train safely in block float? HalteLaenge Length between last switch and stop contact Block Track Elements Determined with block tracing short? AbzweigungVoraus Turnoff ahead of braking contact short? EinfahrtVoraus Incoming Lane ahead of braking contact short? KreuzungVoraus Crossing ahead of braking contact ulong? EingangsweicheId Switch at start of block – foreign key float? EingangsweichePosition Distance from first track to switch short? EingangsweicheVorhanden Flag if entry switch is present string EingangsweicheName Name of entry switch ulong? EinfahrtweicheId Merge in switch – foreign key float? EinfahrtWeichePosition Distance from first track to switch short? EinfahrtweicheVorhanden Merge in switch exists string EinfahrtWeicheName Name of merge in switch ulong? AbzweigweicheId Turn off switch – foreign key float? AbzweigweichePosition Distance from first track to switch short? AbzweigweicheVorhanden Flag if turn off switch exists string AbzweigweicheName Turn off switch name ulong? AusgangsweicheId Exit switch – foreign key float? AusgangsweichePosition Distance from first track to switch short? AusgangsweicheVorhanden Flag if exit switch exists string AusgangsweicheName Exit switch name Block Connections Determined with route tracing ulong? VorgaengerId1 Block connected to start track or switch lane1 ulong? VorgaengerId2 Block connected to entry switch lane2 ulong? VorgaengerId3 Block connected to entry switch lane3 ulong? NachfolgerId1 Block connected to end track or switch lane1 ulong? NachfolgerId2 Block connected to end switch lane 2 ulong? NachfolgerId3 Block connected to end switch lane 3 ulong? AbzweigId1 Block connected to turnoff lane 1 ulong? AbzweigId2 Block connected to turnoff lane 2 ulong? AbzweigId3 Block connected to turnoff lane 3 ulong? EinfahrtId1 Block connected to merge in lane 1 ulong? EinfahrtId2 Block connected to merge in lane 2 ulong? EinfahrtId3 Block connected to merge in lane 3 Block Operation Conditions User defined characteristics short? DoppeltraktionErlaubt Two coupled locomotives may enter short? AntriebErlaubtDampf Steam engines are allowed on the track short? AntriebErlaubtElektrisch Track is ready for electrical locomotives short? AntriebErlaubtDiesel Track can be used by diesel locomotives short? LokWechselErlaubt Lokomotive change permitted short? RichtungswechselErlaubt Switch of train direction permitted short? GegenverkehrErlaubt Two way traffic permitted short? AbzweigMitHalt Turnoff second train while train stops short? KreuzfahrtMoeglich Train can cross block short? KreuzfahrtWaehrendHalt Train can cross block while other train stops short? BlocksperrungMoeglich Block can be locked short? AusweichErlaubt Use of a siding permitted short? AusweichVorhanden Siding exists short? UseBlockDefaults Flag if block defaults should be activated short? UseVehicleDefaults Flag if vehicle defaults should be activated Block Default Types User defined types and values for operation sbyte? IsBlockDefault Default valid for a block sbyte? IsBlocktypeDefault Default valid for a block type sbyte? IsSetDefault Default globally valid for the set sbyte? IsVehicleDefault Default for a vehicle sbyte? IsTrainDefault Default for a train string VehicleType Vehicle type for vehicle default string TrainOpNumber Train operation number for train default Block Default Values float? VerzoegerungEk Deceleration at entry contact float? VerzogerungBk Deceleration brake contact float? BeschleunigungHk Acceleration stop contact float? BeschleunigungAk Acceleration exit contact short? GeschwindigkeitEg Speed at entry contact track short? GeschwindigkeitBg Speed at brake contact track short? GeschwindigkeitHg Speed at stop contact track short? GeschwindigkeitAg Speed at exit contact track short? MingeschwindigkeitBk Minimum speed at brake contact track short? MingeschwindigkeitEk Minimum speed at entry contact track short? GeschwindigkeitHp Speed at stop contact when leaving short? WartezeitHg Waiting time at stop track short? WartezeitHk Waiting time at stop contact short? HatHaltepunkt Has short stop point float? HaltepunktVerzoegerung Deceleration at brake contact float? HaltepunktBeschleunigung Acceleration at stop contact short? HaltepunktHatvorsignal Short stop has pre signal short? HaltepunktHatrangiersignal Short stop has shunting signal short? WartezeitHp Waiting time short stop signal short? WartezeitHkg Waiting time at short stop wait track Block Train Type Permissions short? ZugtypGueter Cargo train allowed short? ZugtypLokal Local train short? ZugtypRegional Regional train short? ZugtypFern Long distance train short? ZugtypSpezial Special train short? ZugtypServive Service train
  5. Hallo an alle, Habe jetzt die datenstruktur zum fuettern der ersten stufe des AI fertiggestellt. Es gibt eine Json version alsauch eine version in der datenbank auf der der AI arbeitet. Hier nur ein kleiner Ausschnitt weiter unten als beispiel. Da groessere Json strukturen nicht sehr freundlich zu lesen sind hat mein programm auch eine einfache visualisierung fuer einen block mit seinen moeglichen komponenten. Das sieht dann so aus: Hier sind alle elemente zunaechst eindeutig benannt. Dafuer gibt es andere funktionen. Ein endgueltiger name wird vorgeschlagen und kann uebernommen werden. Der prefix des namens ist das segment und der postfix ist die blocknummer. Die weichen sind alle erkannt in welcher richtung sie liegen und wie sie befahren werden, als einfahrt oder abzweig usw. Fuer einen block koennen im eigenschaftsfenster einige parameter gesetzt werden, die dann im betrieb relevant werden. Beispiele von blockkonfigurationen, die verschiedene nutzung ermoeglichen. Weichen zu beginn, am ende, oder auch in der mitte sind optional und haben unterschiedliche verwendungsregeln, je nach blocktyp. Einfahr-,Brems-,Halte- und Ausfahrgleise sind markiert. Die absicht ist, den AI in der ersten stufe all blockvarianten erkennen zu lassen ohne alle kontakte und signale gesetzt zu haben. Sind vorschlaege vorhanden habe ich funktionen kontakte und signale automatisch zu plazieren und die erkennung fortzusetzen oder zu wiederholen, bis die gesamte anlage erkannt und definiert ist. Dabei wird die tracer lock vom AI gesteuert und die weichen geschaltet. Der AI ist nun in der lage verknuepfungen zwischen den bloecken herzustellen und zu erkennen wo bloecke mit weichen verbunden sind. Daraus ergeben sich notwendige schutzeinrichtungen (signale) es sei denn ein abschnitt is zu kurz (minimum zuglaenge erforderlich plus sicherheitsbereiche), dann bleibt er ungeschuetzt und wird als solches im betrieb beruecksichtigt. Unten ein kleines beispiel der Json struktur zur blockdefinition. Damit lassen sich alle elementaren fahrwege beschreiben. Die definition von routen ist der naechste schritt. { "BlockComponents": [ { "type": "track", "timestamp": "2024-11-26T11:31:54Z", "vehicle": { "name": "Tracer", "type": "Loc", "speed": "na", "rotation": "121.9843" }, "track": { "name": "6001@64-JK_S01", "segment": "JK_S01", "guid": "{47D517F6-AC25-4E62-BEA3-E7DA7149A435}", "rotation": "31.98428", "use": "8", "length": "20.4", "type": "11", "state": "DU" } }, { "type": "switch", "timestamp": "2024-11-26T11:31:55Z", "vehicle": { "name": "Tracer", "type": "Loc", "speed": "na", "rotation": "121.9842" }, "track": { "name": "6070-1@53-JK_S01", "segment": "JK_S01", "guid": "{5732350C-F049-4BEB-8F22-7D83282EAD0C}", "rotation": "-31.98427", "use": "EIW", "length": "16.81355", "type": "4", "switchState": "1", "direction": "ER", "state": "EIW" } }, { "type": "signal", "timestamp": "2024-11-26T11:31:56Z", "vehicle": { "name": "Tracer", "type": "Loc", "speed": "na", "rotation": "121.9844" }, "signal": { "name": "Formvorsignal 2@5-JK_S01", "segment": "JK_S01", "guid": "{7E4AAF26-0023-408F-8F42-C8D781AFD241}", "rotation": "-148.0157", "use": "1", "position": "1", "type": "1", "state": "VS" } }, { "type":"contact", "timestamp":"2024-11-26T11:32:11Z", "vehicle":{ "name":"Tracer", "type":"Loc", "speed":"na", "rotation":"-48.26498" }, "contact":{ "name":"Gleiskontakt@56-JK_S01", "segment":"JK_S01", "guid":"{E2A3CA8B-50A7-4247-9C02-4DC0306E1ED6}", "rotation":"-138.6383", "use":"2", "value":"0", "type":"0", "state":"BK" } } ] } gruss Gmd
  6. gmd

    Autotuning

    Sorry, Ich hatte meinen kommentar auf Easys antwort bezogen und die autos und nicht die trucks .. bleib beim Modell mit den trucks rechteckig ist besser hier denke ich. Habe halt auf einen alten post geantwortet.. werde in zukunft deutlicher sein. Keep up the good work gruss Gmd
  7. gmd

    Autotuning

    sehe ich auch so, ist aber ein schoener versuch, mehr beleuchtete Objekte sind immer wilkommen Gmd
  8. Neo, bei meinen Bemuehungen meinen eigenen Objektkatalog zu organisieren und die Seitenbilder zu erzeugen um Zuege auch graphisch zusammenzustellen ist mir aufgefallen, dass sehr viele Objekte viele Variationen haben, mehr als nur 3. Das ist ok, ich kann das jetzt behandeln, allerdings ist es fuer die Benutzung des MBS-Katalogs schade dass soviele schoene Objekte so verborgen sind. Es werden ja auch nur maximal 3 Beispielvariationen angezeigt, daher ja auch die Bildbegrenzung, und man muss das Objekt plazieren um and die weiteren Variation ranzukommen und kann die auch nur einzeln anschauen, zumindest ist es moeglich mit Tastaturcursor die Variationen schnell abzurufen. Mein Vorschlag ist, in der freien Ecke der Katalogbilder ein symbol zu plazieren mit der Anzahl der Variationen dieses Objektes. Und dazu die Moeglichkeit das symbol anzuklicken und alle Variationen zu sehen, oder falls du die Bilder nicht erzeugen willst, eine Plazierungsfunktion zu schaffen, die wie bei Duplizieren Mehrfach, nach klick auf die Grundplatte die Variationen nebeneinader plaziert. Man kann dann ja die ungewuenschten Variationen entfernen. Ich denke dies wuerde den Bemuehungen der Modellbauer, die diese Modelle und Varianten zur Verfuegung stellen, mehr gerecht werden. Ich weiss den Vorteil einer kompletten Uebersicht der Variationen zu schaetzen, seit ich alle Variationsbilder erzeugen kann und verwende. Ist ja nicht uebermaessig wichtig, wuerde meiner Meinung nach aber den Katalog bereichern. Gruss Gmd
      • 4
      • Gefällt mir
  9. 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
      • 3
      • Gefällt mir
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. Fuer mich ist eine Zeitverzoegerung genau das was das wort sagt, und in der function funktioniert das, zumindest sieht das fuer mich so aus. Wenn es anders waere sollte der Begriff anders lauten. Die globalen funktionen liegen im globalen script. Die functions, die das lokale scenario betreffen, liegen im lokalen ereignismodul, bis ich sie alle mehr oder weniger verallgemeinert habe und meist nur noch globale funktionen uebrig sind. Lua wird das schon aushalten, zumindest bei diesen mini anlagen. Gruss Gmd
  24. Naja, wenn ich den deferred call falsch verwende dann wende dich an Neo. Dieses script is eine direkte uebersetzung aus der grafischen steuerung, da habe ich nichts geaendert. Gruss Gmd
×
×
  • Neu erstellen...