Jump to content

gmd

Mitglieder
  • Gesamte Inhalte

    577
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von gmd

  1. Ich misch mich mal kurz hier ein. Aus dem was ich gelesen habe schliesse ich daraus dass ein plugin zur ansteuerung und "Short Cuts" die bessere Loesung waere, wesentlich flexible, wie Neo ja schon sagte. Was ich fuer die erweiterung von steuerungsmoeglichkeiten in der EV machen wuerde und dann aufrufbar, unter anderem, durch simples plugin sind Macros, wurde ja oben schon angedeutet. Macros sind eine methode das MBS lernen zu lassen (in elementarem umfang). Macros wuerden erstellt durch schaltaktionen, die ueber gbs, direct am objekt oder ueber steuerfenster ausgefuehrt werden und das MBS zeichnet die einzelnen aktionen auf und man gibt dem macro einen namen und natuerlich auch schlagworte. Dann kann das jederzeit ausgefuehrt werden. Es koennen gruppen gebildet werden (schlagworte) und die macros koennen auf tasten im gbs gelegt werden. Die einfachste form eines Macros waere dann ein "short cut", ausgeloest ueber ev, taste, oder auch externe schnittstelle. Es laesst sich auch in der graphischen EV darstellen und noch manipulieren, zb. zeitverzoegerungen einbauen etc. Das gilt dann auch fuer animationen. Das waere fuer mich ein konzept dass sich gut in die jetzige logik einfuegt. Damit lassen sich externe geraet leicht anschliessen und benoetigen nicht eine "tiefe" programmierung. Die logik der macros wird dann durch ausfuehrungsbefehle ("short cuts") "durchgereicht". Damit sind externe gearete leicht auswechselbar und die logik verbleibt im MBS. Die grafische EV ist sehr gut geeignet die macros darzustellen und zu manipulieren. Durch diese mechanismen haette man auch eine einfache eingabemoeglichkeit fuer steuerungskomponenten die keine macros werden sollen, die man dann verfeinern kann. Ich habe die ersten elemente davon in meinem steuerprogram, so lege ich routen an. Im MBS setzt man start und ziel und die fahrstrasse wird geschaltet. Das ist ok und einfach zu definieren, ist aber ein sonderfall. Ich definiere routen, das sind wege die ein zug nimmt um einen fahrplan abzufahren und nicht die kuerzeste strecke zwischen punkten, also eigentlich viele fahrstrassen verbinden. Dafuer verwende ich macros, die die flexible definition von beliebigen fahrstrecken ermoeglicht und dabei auch alle moeglichen aktionen startet oder beendet, inclusive tuere oeffnen und schliessen, lautsprecher ansagen starten usw. Ich waehle allerdings nur bloecke aus, signale und weichen steuert das programm automatisch. Man kann das auch mit automatisch ermittelten fahrstrassen zwischen haltepunkten machen, aber die manuelle definition von macros erlaubt mehr variationen. Das bedeutet man kann mit der kirche ums dorf fahren bevor man am naechsten bahnhof ankommt . Gruss Gmd
  2. gmd

    Zweiseitiges Depot

    DoppelDepot natuerlich, sorry... war ein langer tag regards Gmd
  3. gmd

    Zweiseitiges Depot

    Prima, wieder was gelernt.. das doppelportal ist "close enough". Danke Gmd
  4. Mehr ein vorschlag als ein request. Bei der liste von features fuer mein steuerprogramm habe ich unter anderem features wie eingleisigem schattenbahnhof mit ein und ausfahrt, oder auch einer zeitverzoegerung im berg nachgedacht. Mit meinem programm kann ich das alles machen aber ich denke es kommt allen zugute wenn das depot eine variante bekommt. Einfahrt an einer seite, ausfahrt an der anderen. Damit lassen sich lange fahrstrecken simulieren, zweiseitige schattenbahnhoefe und anderes. Vielleicht weiss ich ja etwas nicht und das deport kann das schon, dann lass ich mich gerne belehren. Gruss Gmd
  5. Hallo, Ich habe ja nichts inhaltliches beizutragen zu diesem thread kann mich aber einfach nicht zurueckhalten mal einen post hier abzusetzen. Ueber die jahre habe ich etliches in Solidworks (3dCad) modelliert und danach in realitaet gebaut. Solidworks ist auch nicht gerade simple, aber blender "intimidated' mich immer noch. Weiss gar nicht mehr was das auf deutsch heisst. Ich muss einfach sagen dass ich eure geduld und ausdauer mit diesem modellbau total bewundere. Irgendwann werde ich vielleicht mal die motivation aufbringen da weiter hineinzuschauen. Ich habe mit interesse alle 16 seiten dieses threads gelesen, und man kann da eine menge lernen und die reise beginnen in der Klartexter schon weit fortgeschritten ist. Well done. Und noch ein wort zu den unglaublich detaillierten beitraegen von unermuedlichen unterstuetzern, insbesondere BahnLand. Maechtig beeindruckt von der grosszuegigkeit und ausdauer mit der ihr neueinsteigern helft. Vielen dank fuer die vielen guten informationen. Gruss Gmd
  6. Neujahrsgruesse fuer alle auch aus Australien, alles Gute fuer 2025 und auch von unseren derzeitigen Nachbarn . Gmd
  7. Vielen Dank fuer die vielen schoenen modelle. Gruss Gmd
  8. Hallo nochmal im alten Jahr, mein naechster schritt: Fuer verschiedene funktionen benoetige ich kleinere, definierte anlagenteile und nicht immer das gesamte bild. Ein beispiel sind die abschnitte im stellpult (siehe oben). Diese sind mehr fuer den betrieb gedacht. Ich habe aber auch funktionen, die auf die gestaltung von teilen der analge wirken. Beispiel: Ein Laubwald, in einem bestimmten teil der anlage, soll langsam von Sommer nach Herbst umgewandelt werden. Ein modul der anlage soll complett dynamisch ersetzt werden. In einem teil der anlage (z.B. vor einem bahnhof) soll der fussgangerbetrieb tageszeitbedingt ersetzt werden. Objekte in einem teil der anlage sollen auf ebenen aufgeteilt werden. Ein wanderzirkus soll auf verschiedenen teilen der anlage auf- und abgebaut werden und zwischen den standorten transportiert werden. Baustellen sollen eingerichtet und wieder abgebaut werden. Ebenen sollen ein/ausgeblendet werden. usw. Fuer gestaltungsbedingte einteilung habe ich area und segment. Area ist eine teilanlage mit klaren, nicht zu vielen verbindungen zu anderen teilen. Segmente sind teile von areas mit bestimmten bedeutungen/funktionen und koennen, mussen aber nicht, einen gbs abschnitt darstellen. Um diese aufteilung effizient zu definieren und auch gleichzeitig alle objekte innerhalb eines teils zu finden bedarf es weiterer automatismen, sonst wird das muehsam. Ich verwende benannte Fluchtstaebe, um die ecken einer Area zu definieren und kann diese einlesen. Ich verwende ein layout bild wie oben als hintergrund eines diagramms und kann dann die areas als polygone zeichnen, basierend auf der position der fluchtstaebe. Die koordinaten werden transformiert zwischen dem diagramm in der analage und damit kann ich alle objekt innerhal einer area finden. Gleiches kann innerhalb der areas fuer segment geschehen, ich kann aber auch umgekehrt im diagramm segmente festlegen, wenn einmal die koordinaten des diagrams in bezug auf die anlage festgelegt sind. Gruss und alles gute zum neuen Jahr Gmd
  9. Hallo aus Australien, Hoffe alle hatten gute Festtage und etwas zeit zum spielen . Wir hatten den kaeltesten 24ten Dezember in Perth seit Aufzeichnung, 23 Grad. Auch hier im Sueden, wo ich mich zur zeit aufhalte, aber da ist es ja sowiso kuehler, aber auch hier war es ein Record. Zwei tage vorher waren es 43 Grad in Perth. Ist halt ziemlich weit weg von Deutschland . Weihnachten bei 42 Grad is halt schwer vorstellbar wenn man auf der Norhalbkugel lebt. Ich habe immer mal etwas zeit un habe an meinem programm weiter gebastelt. Zunaechst mal am Gbs, allerdings habe ich ja nicht vor damit den verkehr zu steuern, sondern nur zu ueberwachen. Noch ein paar kleine kosmetische aenderungen muessen gemacht werden, dann gehe ich and die automatische streckenerzeugung basierend auf den erkannten bloecken. Eine manuelle nachbearbeitung is natuerlich moeglich. Ich sehe derzeit nicht dass ich das layout vollautomatisch erstellen kann, jedenfalls noch nicht in naechster zeit. Die referenzen zu den aktuellen gleisen, weichen und signalen werden dann automatisch erzeugt. Die farben bedeuten derzeit noch nichts, dahinter verbergen sich verschiedenste einstellungen, die dann zur visualisierung der zustaende verwendet werden. Zugnummern anzeigen usw. koennen gesetzt werden. Meine grosse Anlage laesst sich damit nicht wirklich vernueftig abbilden. das GBS wird einfach zu gross und unuebersichtlich und macht ja auch nicht wirklich sinn, da ja lange strecken nicht wirklich ein gbs brauchen, sondern nur teile and die verzweigter sind. Das fuehrt dann zu einer abschnitteinteilung, die jeweils einen relevanten abschnitt darstellt und moegliche teilabschnitte als detailsichten. Die verkuepfungspunkte im bild oben verbinden dann zum naechste abschnitt, falls vorhanden. Fuer die definition von abschnitten und ihrer beziehung untereinander habe ich ein eigenes diagramm gebaut. Bilder von der anlage sind vorbeitet und als abschnitte und teilabschitte vorsortiert. Diese koennen geladen und verknuepft werden und dienen dann im betrieb zum schnellen zugriff auf die gleisbilder und die zugeordneten fahrplaene falls vorhanden. So allmaehlich habe ich alle grundfunktionen und anzeigen fertig. Als naechstes geht es dann mehr und mehr and die tatsechliche erkennung und definition einer anlage. Bisher habe ich nur mit testdaten gearbeitet. Das ganze ist aber immer noch eine mehr experimentelle entwicklung, da ich immer wieder auch teile verwerfe, die mir nicht gefallen oder unpraktisch sind. Ich probiere funktionen aus und wenn sie mir gefallen, nehme ich sie ins konzept auf. Mit einer kommerziellen entwicklung ist das anders, das arbeitet man mehr direkt auf ein ziel hin. Alles gute zum neuen Jahr Bis bald und gruesse Gmd
  10. Definitiv langsamer, und auch das laden dauert laenger, was nicht so entscheidend ist. Meine monster anlage die ich gelegentlich zum testen meiner software benutze laeuft nur noch mit 6 fps V8 mit 12 fps. Zugegeben sie ist gross, 60,000+ objekte, 30+ zuege. Das ist zu langsam. Ich kann nicht wirklich beurteilen welche moeglichkeiten Neo hat, da ich zuwenig ueber die grafik engine weiss, aber ich vermute dass er noch nicht am ende ist die neuen gpus zu nutzen. Ich habe keine problem eine 4090 in den rechner zu setzen, wenn ich weiss dass sie auch voll genutzt wird, was ich derzeit bezweifele. Ich hoffe auf verbesserungen in den naechsten versionen. Bis ich meine software einsatzbereit habe ist das sicher der fall , aber das nuetzt dir ja nicht so viel. Optimierungen oder aenderungen an grundsaetzlichen funktionen sind immer ein problem mit solch umfangreichen programmen, das will gut ueberlegt sein und auch nicht immer moeglich. Ich bin sicher Neo hat schon darueber nachgedacht und ist sich der tatsache bewusst. Gruss gmd
  11. Tolles projekt, verfolge das mit interesse gruss gmd
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. gmd

    Autotuning

    sehe ich auch so, ist aber ein schoener versuch, mehr beleuchtete Objekte sind immer wilkommen Gmd
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
×
×
  • Neu erstellen...