Alle erstellten Inhalte von EASY
-
Spezielle Lösungen in lua
Hallo @Hawkeye, ... eine kleine Demoanlage zu Deinem Anliegen... Gleiskontakt wird betreten sieht so aus... * Die Funktion teilt einen String am Seperator in Teilstrings auf Beispiel: Gleiskuntaktname: "GK-1" -> Seperator="-" ergibt die beiden Teilstrings "GK" (a[1]) und "1" (a[2]) a[2] dient als Zahlengrundlage für das zyklische Anlegen der Ausgabeliste Achtung: Mit diesem Verfahren liegt die Referenzzahl im Namen des Gleiskontaktes! -> der Name darf im MBS Projekt nur einmal vorkommen! ** alternativ kann auch eine Zahlenvariable im Gleiskontakt verwendet werden die Zeile **(a) entfällt und bei **(b) a[2] durch die Variable ersetzen. --]] local ausgabe={}-- Ausgabeliste local a={}-- teporäre Liste für GK-x Namen zerlegen local gk=contact.name -- Name des Gleiskontaktes print("Gleiskontakt: "..gk.." hat ausgelöst") gk:gsub("[^-]+",function(c) table.insert(a,c) end)--* / **(a) local gkx=$("Kreuzung 1").variables["GK x"]--Liste in der Kreuzung n=#gkx --Anzahl der Einträge in der Liste print("Liste:") for i=1+a[2],n+a[2]do --Liste vom Anfangswert her zyklisch erstellen **(b) local x=math.tointeger((i % n))-- Ergibt den Rest einer Division if x==0 then -- Rest=0 table.insert(ausgabe,gkx[n])-- maximalen Wert nehmen else -- Rest>0 table.insert(ausgabe,gkx[x])-- Restwert nehmen end end for i,v in ipairs(ausgabe)do --Ausgabetabelle print(v.name) end Anmerkung: Ich habe das Ereignis allen 4 Gleiskontakten zugeordnet (sinnvoll wäre evtl. mit Schlagworten zu arbeiten)... 2024-02-18-Zyklische Liste erstellen 01.mbp Gruß EASY2024-02-18-Zyklische Liste erstellen 01.mbp2024-02-18-Zyklische Liste erstellen 01.mbp2024-02-18-Zyklische Liste erstellen 01.mbp2024-02-18-Zyklische Liste erstellen 01.mbp
-
Benutzerdefiniertes Ereignis Rückgabewert Tabelle/Liste
Hallo, ich habe ein Ereignis... local a=$("Benutzerdefiniert"):invoke() print(a) ... und ein benutzerdefiniertes Ereignis... local b=123 return b ... der Aufruf bringt mir das gewünschte Ergebnis... Nun habe ich dieses Ereignis... local a=$("Benutzerdefiniert"):invoke() print(#a) ... mit diesem benutzerdefinierten Ereignis... local b={1,2,3} return b ... dies ergibt eine Fehlermeldung... Wenn ich das benutzerdefinierte Ereignis als Funktion in das Ereignis schreibe... local function test() local b={1,2,3} return b end local a=test() print(#a) ... kommt das gewünschte Ergebnis... Nun ist meine Frage @Neo (oder wer etwas weiß)... Mache ich einen Fehler oder kann ein benutzerdefiniertes Ereignis keine Tabelle zurückgeben? Gruß EASY
-
Spezielle Lösungen in lua
Hallo @Hawkeye, Ich könnte Dir folgende (logische) Reihe anbieten: [16:54:04] Gleiskontakt wird ausgelöst -> GK-1, Golf 1, 1 [16:54:04] Gleiskontakt wird ausgelöst [16:54:04] Gleiskontakt: GK-1 hat ausgelöst [16:54:04] Liste: [16:54:04] GK-2 [16:54:04] GK-3 [16:54:04] GK-4 [16:54:04] GK-1 [16:54:16] Gleiskontakt wird ausgelöst -> GK-2, Golf 1, 1 [16:54:16] Gleiskontakt wird ausgelöst [16:54:16] Gleiskontakt: GK-2 hat ausgelöst [16:54:16] Liste: [16:54:16] GK-3 [16:54:16] GK-4 [16:54:16] GK-1 [16:54:16] GK-2 [16:54:24] Gleiskontakt wird ausgelöst -> GK-3, Golf 1, 1 [16:54:24] Gleiskontakt wird ausgelöst [16:54:24] Gleiskontakt: GK-3 hat ausgelöst [16:54:24] Liste: [16:54:24] GK-4 [16:54:24] GK-1 [16:54:24] GK-2 [16:54:24] GK-3 [16:54:31] Gleiskontakt wird ausgelöst -> GK-4, Golf 1, 1 [16:54:31] Gleiskontakt wird ausgelöst [16:54:31] Gleiskontakt: GK-4 hat ausgelöst [16:54:31] Liste: [16:54:31] GK-1 [16:54:31] GK-2 [16:54:31] GK-3 [16:54:31] GK-4 ... dies wäre allerdings eine andere Reihenfolge bei GK-3 als Du angegeben hast. Hast Du Dich da vertippt oder muß es die von Dir angegebene Reihenfolge sein? Gruß EASY
-
Spezielle Lösungen in lua
Hallo an alle, ich wollte hier spezielle Lösungsansätze in lua vorstellen. Wenn es alternative Lösungsansätze gibt, macht das bitte in einem eigenen Thema, sonst wird dieses Thema aus dem Zusammenhang gerissen, wie leider schon viele Themen in diesem Forum. Gruß EASY
-
Spezielle Lösungen in lua
Hallo, ... habe ich mal aus Spaß an der Freude gemacht... --[[ * -> in die Klammer entsprechende Referenzspur eintragen ** Verknüpfte Objekte mit Referenzspur: (Gleiskontakte und Fahrzeuge werden mit der Referenzspur automalisch verknüpft!) Gleiskontakt "GKe" mit Schlagwort "GKref" sehr nahe am Ende der Referenzspur (nicht am Übergang) plazieren, so daß die Zuordnung zu Referenzspur eindeutig gegeben ist. *** wenn zu stark abgebremst werden müßte -> durchfahren --]] local blink=layout:getEntitiesLinkedTo($("Bremsspur 1"))-- * ; ** local ref=0 -- Dummyeintrag local auto=0 -- Dummyeintrag for i,v in ipairs(blink) do -- verknüpfte Objekte if v.variables["GKref"]==keyword then -- Referenzkontakt? ref=v end local res=false res,auto=pcall(function(x) x:hasEngine() return x end,v)-- Fahrzeug mit Antrieb? end if auto~=0 and ref~=0 then auto.currentSpeed=auto.currentSpeed -- evtl. Beschleunigung abbrechen -- Bremsweg berechnen (Vorderkante Auto -> Ende Spur) local pos1=ref.transformation.position local pos2=auto.transformation.position local dx=pos1.x-pos2.x local dy=pos1.y-pos2.y local la=auto.length/2 local l=math.sqrt(dx^2+dy^2)-la -- benötigte Verzögerung berechnen... local v=auto.currentSpeedAbs v=v/3.6 local a=(v^2)/(2*l) vehicle.deceleration=a if a<20 then -- *** vehicle.targetSpeed=0 end end Bremsversuch 01.mbp Gruß EASY
-
Spezielle Lösungen in lua
Hallo, ... oh... hatte ich erst gar nicht ausprobiert. Danke für den Hinweis. Gruß
-
Spezielle Lösungen in lua
Hallo, der Ursprung dieses Versuches liegt hier. @bigrala wollte Loks aus einem Ringlokschuppen entlassen, die entweder das Schlagwort "Dampf" oder "Diesel" haben, und es sollte die Möglichkeit bestehen die Lok entweder in den Schuppen zurück zu fahren oder sie im Kreis fahren zu lassen... Die bisherigen Lösungsansätze arbeiten ohne Fahrstraßen, weshalb ich mich für eine (Teil-) Lösung mit Fahrstraßen entschieden habe. Eine weitere Problemstellung war, wie man eine Lok in der Mitte der Drehscheibe anhalten kann. Bei einer einzelnen Lok ist es kein Problem, da man mit einem Gleiskontakt arbeiten kann, der auf "Mitte" reagiert. Bei einer Lok mit Tender, funktioniert dies aber nicht, da für das MBS die Mitte der Lok gültig ist. Ich bin es mathematisch angegangen: Wenn die Lok (oder Lok+Tender) den Gleiskontakt betritt, muß noch um eine halbe Zuglänge weiter gefahren werden damit der Zug mittig zum stehen kommt. Bei bekannter Geschwindigkeit, kann die Bremszeit berechnet werden... --[[ * -> sonst Probleme, wenn Loklänge knapp auf Drehscheibe passt, Lok hält zu früh an! --]] if not deferredCall then local s=layout:getVehicleGroupLength(vehicle)/2 -- Halbe Länge Zugverband (evtl. Lok+Tender) local v=vehicle.currentSpeedAbs -- Lokgeschwindigkeit local t=s*3.6/v -- Bremszeit ermitteln für halbe Länge Zugverband vehicle.autoDeceleration=false -- Automatisches Bremsen deaktivieren (siehe oben)* defer(t,"vz1") -- Verzögerung mit Bremszeit elseif deferredCall=="vz1" then -- Lok in der Mitte der Drehscheibe anhalten vehicle.currentSpeed=0 vehicle.autoDeceleration=true -- Automatisches Bremsen wieder aktivieren Hinweis: Da der Versuchsaufbau nicht weiter abgesichert ist, werden die Auswahltaster ausgeblendet, wenn 2 Züge aus dem Schuppen angefordert wurden (2 Strecken, 2 Einfahrten)... Anmerkung: Da die Steuerung in lua geschrieben ist, wollte ich den Thread von @bigrala damit nicht "belasten"... Ringlokschuppen 1c.mbp Gruß EASY
-
Fahrzeug auf einer bestimmten Fahrspur einer Straße abfragen
Hallo, layout:getVehiclesOn($("Straßenname")) ... bezieht sich (leider) auf das ganze Objekt und liefert alle Fahrzeuge, die sich darauf befinden unabhängig davon auf welcher Spur sie stehen. Gruß EASY
-
Lok abrufen aus Ringschuppen
Hallo, das geht schon, du mußt nur die Drehscheibe vor dem Einrichten der Fahrstraße auf die jeweils gültige Stellung setzen. (Achtung beim Gleiskontakt auf der Drehscheibe: auf aktivierte Pfeilrichtung des Gleiskontaktes achten. Fahrstraßen sind richtungsbezogen.) Gruß EASY
-
EASY's kleiner Modellbau
Hallo @HWB, danke! Besonders die .pdf ist ja sehr informativ. Nur ob ich "die 2 verstellbaren Rutschverlängerungen die je über einen Kettenzug an der Zahnstange in der gewünschten Höhenlage einstellbar sind" so bauen werde... muß ich mir noch überlegen. Gruß EASY
-
EASY's kleiner Modellbau
Hallo, Durch Zufall bin ich auf dieses Modell gestoßen. Irgendwie hat mir die Funktion gefallen und ich habe angefangen zu bauen... Da ich (mal wieder) keine Ahnung habe, ergibt sich für mich folgendes Problem: Nach was muß ich im Internet suchen um evtl. auf technische Daten oder Fotos zu stoßen? Ich lande immer bei Bildern, die das Modell von Liliput oder Arnold darstellen, aber nie beim Original. Für Hilfestellung wäre ich dankbar. Gruß EASY
-
"Verbinden" eines Kontaktes (oder einer Lok) mit einem Gleis stellt keine funktionale Verbindung her.
Hallo @Eggu, ich frage mal noch neugierig nach. War das jetzt eine prinzipielle Frage oder hast du etwas spezielles vor? Gruß EASY
-
Spezielle Lösungen in lua
Hallo, Beim Umgang mit GBS Bausteinen gibt es das Problem, daß man sehr schnell viele Objekte hat, die den gleichen Namen haben. Auf der Suche nach Lösungen bin ich auf diese Anlage (12FBFA21-6D56-444E-A59B-E7A4655EFE2D) von @Goetz gestoßen in der eine prinzipielle Lösung des Problems steckt. Ich habe mir die Idee also nur abgeschaut und mir überlegt was man noch etwas verbessern könnte. Die Ausgangslage... ... und viele gleiche Namen... In der beigefügten Beispielanlage: ...zuerst werden zwei Listen angelegt... ... zum Ausfüllen der Liste (z.B. Bahnhof unten)... ... alle entsprechenden GBS Bausteine markieren... und Strg+c (kopieren). Die Liste "GBS Bahnhof unten" -> "Bearbeiten" und mit Strg+v (Einfügen). ... desgleichen für "GBS Bahnhof oben" Das Benutzerdefinierte Ereignis "Namen setzen (B)" legt ein Raster an... ...und vergibt die Namen nach Zeilen und Spalten (und der Anzahl der Spuren...) Ich habe das Skript dahingehend erweitert, daß es auch für andere Objektreihen anwendbar ist, bei denen die Grundform nicht quadratisch ist, z.B. die "Abstellfläche" 4EBBA477-BB3F-4C8F-9AAF-2CC7AB6E19EF... So sieht der Aufruf von "Namen setzen (B)" aus (mit Beschreibung der Parameter)... ... ergibt für die Abstellflächen... Die Anlage mit dem Skript... Objektreihen Namen 01.mbp Gruß EASY
-
Farben GBS0 Bausteine im Texturkatalog
Hallo, Werden noch mehr Farben gewünscht? Dann bitte hier die noch zu ergänzenden Farbtöne angeben. Deine Farben und meine zusätzlichen Farben sehen bei mit im Texturkatalog so aus (als Vorschlag...) ... und da ich die Texturen schon habe als .zip Farben.zip ... da wäre man ja mehr mit der Auswahl der Varianten als mit dem Setzen der Bausteine beschäftigt... Gruß EASY
-
Spezielle Lösungen in lua
Hallo @Hawkeye, dein Lösungsansatz bietet natürlich mehr die Möglichkeit der Anzeige im Detail und ich werde mich (da neugierig) auch mal mit diesem Lösungsansatz beschäftigen. ( Immerhin eine "Übersetzungstabelle" habe ich in deinen Weichen auch gefunden...) Gruß EASY
-
Spezielle Lösungen in lua
-
Spezielle Lösungen in lua
Hallo, aus Neugier habe ich mich mit der Ansteuerung der GBS0 Bausteine beschäftigt... Bei der 3-Wegeweiche hatte ich mich schon gefreut, daß es einen direkten Zusammenhang zwischen Weichenstellung und Signalstellung GBS0 gibt... ... 2*WS+1 für reserviert und 2*WS+2 für belegt (WS=Weichenstellung) ... bei der 2-Wegeweiche funktionierte die Formel leider schon wieder nicht mehr... Da ich die Formel beibehalten wollte, habe ich dem GBS0 Baustein eine Tabelle mit auf den Weg gegeben... ... die das Ergebnis der Weichenstellung entsprechend anpasst... Damit es einen Zusammenhang von GBS0 und Weiche gibt (zum Auslesen der Weichenstellung) habe ich im GBS0 eine Verknüpfung zur Weiche gesetzt... Die entsprechenden GBS0 Bausteine für eine Fahrstraße... ... habe ich in einer Variablen "GBS0" in der Fahrstraße in einer Liste hinterlegt... Das benutzerdefinierte Ereignis für die GBS0 Ansteuerung sieht dann so aus... --[[ Ansteuerung GBS0 Bausteine --]] local gba=FS.variables["GBS0"] -- GBS0 Bausteine in der FS-Variablen "GBS0" local st=Anzeige -- 1=reserviert, 2=belegt if FS.state==0 then -- FS wurde aufgelöst? for _,gb in ipairs(gba) do -- alle GBS0 der FS Bausteine.. gb.state=0 -- ..Anzeige 0=frei end else for _,gb in ipairs(gba) do -- alle GBS0 der FS Bausteine local l=gb.link -- Verknüpfung GBS0 Baustein if l~=nil then -- Verknüpfung vorhanden (Weiche)? local s1=l.state -- Weichenstellung auslesen if gb.variables["cs"]~=nil then -- Variable cs für Korrektur Weichenstellung vorhanden? s1=gb.variables["cs"][s1] -- Weichenstellung korrigieren end gb.state=2*s1+st -- Anzeige GBS0 Baustein in Abhängigkeit von Weichenstellung setzen else -- -- Verknüpfung nicht vorhanden (keine Weiche)! gb.state=st -- Anzeige GBS0 Baustein setzen end end end ... und der Aufruf für Fahrstraße wird aktiviert/deaktiviert sieht so aus... --[[ Fahrstraße Ausfahrt HFS Anzeige=1 -> reserviert Anzeige=2 -> belegt --]] $("FS GBS0 (B)"):invoke(2,route) Der Vollständigkeit halber noch die Versuchsanlage. 2024-02-04-Ansteuerung GBS0-Bausteine.mbp Gruß EASY
-
Farben GBS0 Bausteine im Texturkatalog
Hallo @Neo, den leeren GBS0 Baustein gibt es in folgenden Farbvarianten... ... da Tauschtextur habe ich die (Farb-) Texturen exportiert... ... mir in meinen Texturkatalog geladen... ... und mir die GBS0 Bausteine (die keine Farbvarianten besitzen) thematisch über die Tauschtextur eingefärbt. So habe ich im Gleisbildstellpult einen besseren Überblick... Damit diese Information auch bei einer Weitergabe oder Veröffentlichung erhalten bleibt, fände ich es gut, wenn es im Texturkatalog eben diesen Ordner "GBS Bausteine Farben" geben würde, damit man dort die Farben hinterlegen kann. Gruß EASY
-
2D-Kamera über EV als aktive Kamera
Hallo, Kann man die 2D-Kamera über die EV als aktive Kamera setzen oder muß man eine zusätzliche Kamera einrichten und diese (gegenüber der 2D-Kamera) "an aktueller Position ausrichten"? um auf eine (quasi) 2D-Ansicht umschalten zu können? Gruß EASY
-
Tür Animationen
Hallo, ... aber nur so nebenbei... ... geht in Blender übrigens auch Gruß EASY
-
Tür Animationen
Hallo, ... kannst du dir mal an meinem Beispiel ansehen (Tür und Zylinder als .blend Dateien) 2024-02-02-Chris Türe.zip Gruß EASY
-
Tür Animationen
Hallo, diese Kombination geht nicht. Zu einem "_CP_Source" gehört ein "_CP_Target" damit die Bewegung mit der Animation mitgeht. Eine Kombination mit einen "normalen" Kontaktpunkt geht nicht. "_CP_Target" der am Zylinder mit der Animation geht, "_CP_Source" an der Türe. Gruß EASY
-
Tür Animationen
Hallo @Chris06, so ganz verstehe ich noch nicht auf was du hinaus willst. Ist der Zylinder ein Modell und die Türe ein anderes Modell und die Tür soll am Zylinder einrasten und mit dessen Animation dann mitgehen? Gruß EASY
-
"Milchglas-Effekt" bei Ansicht aus flachen Winkeln
Hallo @Eggu, ... wenn ich die Ebene "Tramsteig Bäume" ausblende ist der Effekt (fast) weg. Ich habe allerdings noch ein Objekt "Gruppe Laub 001" auf der Grundebene gefunden, bei der der Effekt deutlich zu sehen ist. ... es scheint sich um ein Darstellungsproblem zu handeln mit Bäumen die Transparenzen verwenden... ist aber nur eine Vermutung. Gruß EASY
-
Spezielle Lösungen in lua
Hallo @Hawkeye ich nehme das was (derzeit) geht... ... träume von den was ideal wäre... ... und hoffe auf Veränderung. Gruß EASY