-
Gesamte Inhalte
5985 -
Benutzer seit
-
Letzter Besuch
Alle erstellten Inhalte von Goetz
-
Hallo Timba, Damit hat er aber nicht gemeint, dass das Studio würfelt. Die Reihenfolge ist weniger zufällig als vielmehr ungeordnet. Das liegt an der Arbeitsweise von in pairs(), welches die Elemente einer Tabelle in einer Reihenfolge durchläuft, die der User nicht beeinflussen kann. (Das ist einer der Unterschiede zur ähnlichen Funktion in ipairs()). Beim Studio kommt hinzu, dass Lua hier nicht alleine werkelt, sondern im Wechselspiel mit der Software (und den Datenstrukturen) des Studios. Kein leichtes Unterfangen, wenn man sich zum Beispiel vor Augen hält, dass Tabellen in Lua alles umfassen, was andere Sprachen in Lists, Tuples, Dictionaries und mehr unterscheiden. Diese Dynamik in Luas Tabellen (Dynamik = variable Größen, Mischung aller Datentypen etc.) hat zur Folge, dass Lua Tabellen per se unsortiert sind. Soweit mein rudimentäres Verständnis der Materie. Ich will damit auch nur sagen, dass die ungeordnete Reihenfolge keine Absicht ist, sondern eine Konsequenz. Viele Grüße Götz
-
Level Crossing control
Goetz antwortete auf 220hotwheelss Thema in [International] Problems and solutions
... in some cases, Pete. Craftsmanship for instance. Dexterity and similar skills. But definitely not when you're learning control mechanisms. They are all about cause and effect. Nothing else. -
Hallo Hawkeye, Ich vermute, dass du da etwas fehlinterpretierst. Das Studio versucht die Aktivierung bei allen angemeldeten Fahrstraßen. Und manche werden früher frei als andere. Deshalb haben sie scheinbar den Vorzug. Hier wird der Weg ins Gleis 1 zuerst frei. Unabhängig von der Reihenfolge der Anmeldungen. Eine Bearbeitung in der Reihenfolge der Anmeldungen würde z.B. keine Ausfahrt aus einem Bahnhof zulassen, wenn zuvor am anderen Ende des Bahnhofs eine Fahrstraße angemeldet wurde, die noch besetzt ist und erst lange Zeit später frei wird. Weil ein first in, first out Prinzip mehr Nach- als Vorteile hätte, versucht das Studio nicht, die Fahrstraßen in der Reihenfolge der Anmeldungen zu aktivieren. Dort, wo Reihenfolgen erforderlich sind, musst du sie per Tabelle selbst verwalten. Viele Grüße Götz
-
Level Crossing control
Goetz antwortete auf 220hotwheelss Thema in [International] Problems and solutions
Hello Pete, in your latest attempt (the small test layout) you are counting the trains going in and out, but without purpose. That was much better before, where at least you checked the number before opening the barriers. All that was missing then was the same check before closing. You need one counter and one counter only for each level crossing. Not four (as you did now) When the first train enters "the zone", you want to close all barriers. When the last train exits "the zone", you want to open them. and therein lies your problem, Pete You try things at random, hoping to strike it lucky. You have no concept and you apply no logic. Don't try to memorise these principles, Pete. You have to understand them. That's the only path to success. Greets Goetz -
handelt es sich nicht um einen Block, sondern eine Einfahrt. Deshalb greift hier weder das Selbst-, noch das Zentralblock Verfahren.
-
Das von Hawkeye verwendete Prinzip entspricht dem Selbstblock Verfahren. Deins entspricht dem Zentralblock Verfahren. Mehr dazu findest du hier:
-
Hallo Hans, Es geht dabei um Klassen und deren Eigenschaften. Ein Objekt hat beispielsweise Positionswerte. Eine Fahrstraße nicht. Fahrstraßen bilden daher eine eigene Klasse "Route" und gehören nicht zur Klasse "Entity" Der Suchbefehl getEntitiesByKeyword() durchsucht alle Elemente der Klasse "Entity". Er liefert übrigens eine Tabelle zurück. Und wenn man sich anschließend aus dieser Tabelle bedienen will, dann kommt nahezu immer eine Wiederholung ins Spiel. Drum lag es nahe, die korrekte Schreibweise mit einer Wiederholung zu suchen. Viele Grüße Götz
-
Level Crossing control
Goetz antwortete auf 220hotwheelss Thema in [International] Problems and solutions
Hello Pete, Grouping has no relevance in the context of EV actions. That's why you want an identical keyword in all four barriers. It enables you to address all four in one loop. And that also clarifies why a keyword is indeed the correct choice (and a number wouldn't be). Anyway, I'm really excited that you still keep me in the dark. I love a good mystery and though I'm pretty certain that the gardener is the evil doer this time, I wouldn't be surprised if you come up with a plot twist at the last minute and present me with an unexpected culprit after all. -
Hallo Timba, durch deinen Hinweis, dass table.insert() unter bestimmten Umständen richtig arbeitet, habe ich jetzt als Zwischenspeicher anstelle einer lokalen Lua Variable eine Modulvariable benutzt. Und dann kann man auch in der Reihenfolge remove -> insert arbeiten: Tabelle umschichten 2.mbp
-
Level Crossing control
Goetz antwortete auf 220hotwheelss Thema in [International] Problems and solutions
Hello Pete, Your theory is spot on. And your screenshots hold no information as to what's going wrong or why. Greets Goetz -
Hallo Roland, das ist selbstverständlich möglich. Aber du musst bitte verstehen, dass Abschnitte, die über verzweigende Weichen führen, keine Blöcke sind. Das sind entweder Ausfahrten oder Einfahrten. Eine Einfahrt hast du dann, wenn Gleise aufgeteilt werden. Eine Ausfahrt ist es, wenn Gleise zusammen kommen. Du kannst solche Stellen nicht wie einfache Blockabschnitte behandeln. Ein ankommender Zug muss die für ihn benötigte Fahrstraße "anfordern". Diese Anforderung geht am besten mittels Gleiskontakt. Und sie kann schon weit vor dem Signal erfolgen, das den entsprechenden Abschnitt deckt. Im Grunde kannst du die Ein- bzw. Ausfahrt schon anfordern, wenn der Zug das letzte Blocksignal passiert. Denn an dieser Stelle ist ja schon klar, wo die Reise hingehen soll. Viele Grüße Götz
-
Ja, Wolfgang, die gibt es. In der EV findest du unter "Aktionen -> Fahrzeuge" den Befehl "Zug/Fahrzeug von einem virtuellen Depot starten" Eigentlich ist das doch selbsterklärend, oder? Und dann stellst du ein, aus welchem Depot du das Fahrzeug schicken möchtest und ob es das erste, letzte oder ein zufälliges sein soll: Auch klar und verständlich, oder nicht? Viel Spaß beim Ausprobieren Götz
-
Nur eine Kleinigkeit, Hans. Fahrstraßen sind keine Entities (= Objekte) Mit layout:getRoutesByKeyword() bekommst du sie zu fassen. Woher ich das weiß? Ich habe das hier in der grafischen EV erstellt und dann in Lua gewandelt: Viele Grüße Götz
-
Verstehe. Mein Umweg über das lokale t war damit Blödsinn. Auf dem Weg erzeuge ich eine Kopie der Objektreferenz, aber keine neue Tabelle. table.remove() funktioniert mit einer Liste, die ich über die Objektreferenz erreiche. Die Funktion entfernt ein Element und lässt alle nachfolgenden aufrücken. Und sie liefert mir auch das entfernte Element zurück. Nur table.insert() scheitert. Wenn ich ein Element ans Ende anhängen möchte, dann kann ich herausfinden, wo das Ende ist und dann ein neues Element an der gewünschten Stelle erzeugen. Das funktioniert zuverlässig. (Und table.concat() klappt auch!) Deine Implementierung von Lua und das Zusammenspiel mit Objektvariablen ist bemerkenswert gut, Neo! Beispieldatei: Tabelle umschichten.mbp
-
Ja, ist es auch für mein Verständnis.
-
True, Simon. The flexible track is a different beast altogether and cannot be treated the way I demonstrated with a straight piece and a curve. The mathematics behind the flex track is very different. Even when you place a switch manually ontop of the flex track and then reconnect one flex end to this switch, it produces a rather different curve. Greets Goetz
-
Daran hänge ich auch gerade, Timba. Ich hatte versucht das letzte Beispiel für dich umzuschreiben: local t = $("Ereignisse").variables["Beispiele"] table.insert(t, table.remove(t, 1)) $("Ereignisse").variables["Beispiele"] = t Das ist etwas kompakter, aber im Prinzip dasselbe, was du auch gemacht hast. Dein Ansatz ist vollkommen richtig. Wenn ich das "standalone" in Lua Demo mache, klappt es einwandfrei: Beatles = {"John", "Paul", "George", "Ringo"} local t = Beatles table.insert(t, table.remove(t,1)) Beatles = t for k, v in ipairs(Beatles) do print(v) end Aber in der EV verliere ich mein Element. Es macht in der EV auch keinen Unterschied, ob ich das Element, welches ich mit table.remove() entferne, zunächst in einem Zwischenträger ablege. table.insert() schreibt das entfernte Element nicht zurück in t. Da scheint etwas kaputt zu sein, weil ich weiß, dass ich dieses Prinzip früher schon mit der EV benutzt habe. @Neo? Viele Grüße Götz
-
Leider nein, das müsstest du über Lua regeln.
-
Hallo Timba, zuerst wählst du Variable (Liste/Tabelle) aus. Dann siehst du die Möglichkeit, die Tabelle und den Index anzugeben. Aber anstelle der Tabelle wählst du jetzt ein weiteres Mal Variable (Liste/Tabelle). Damit hast du den zweiten Index, den du benötigst. Jetzt kannst du an oberster Stelle die Hauptliste auswählen, als ersten Index eine der Untertabellen und als zweiten Index den gewünschten Punkt aus der Untertabelle: Beispielanlage: Untertabellen auslesen.mbp Viele Grüße Götz
-
Hello Simon, in addition of Henry's suggestion, concerning ... ... here's a video demonstrating the method he mentioned: It's as easy as using a dremel. Please note that I use the Y-vector from the gismo to change the length of a piece without affecting it's curvature! Kind regards Goetz
-
Wenn dein Englisch gut ist, dann lege ich dir Derek Banas wärmstens ans Herz. Besser geht's nicht! Lua Tutorial - YouTube
-
That is the most likely explanation, Pete. Because it is not a common problem. What may be causing this is an inadvertent selection of objects using the lasso function. This happens to me on occasion, when I actually try to click an empty space in order to deselect stuff. I hold the mouse button a little too long and move the mouse at the same time. The result is that a few nearby objects are marked. I suggest you record one of your sessions. That would allow you to "spool back the tape" and watch exactly how it happened. Windows 10 has in inbuilt screenrecorder. Press the Windows key + G to open / close the widget menu, from where you my select screen recording. NVidia also offers a screen recorder for their graphics cards. It can be found in "GeForce Experience" Kind regards Goetz
-
Ich muss gestehen, dass ich das bisher nicht wusste.
-
Hallo Georg, Kann man dir helfen, diese Scheu abzulegen? Als Betriebsinformatiker bringst du ja eigentlich gute Grundlagen mit. Viele Grüße Götz