Jump to content

EASY

Mitglieder
  • Gesamte Inhalte

    3041
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von EASY

  1. 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
  2. Hallo, ... aber nur so nebenbei... ... geht in Blender übrigens auch Gruß EASY
  3. 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
  4. 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
  5. 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
  6. 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
  7. Hallo @Hawkeye ich nehme das was (derzeit) geht... ... träume von den was ideal wäre... ... und hoffe auf Veränderung. Gruß EASY
  8. Hallo @ralf3, ist meine Vermutung, da es zeitlich sehr passen würde mit dem Problem und dessen Lösung (System zurücksetzen und Update noch einmal). Da mein Computer erst ein paar Monate alt ist, gebe ich (nach dem Prinzip Hoffnung) auch lieber Windows als meiner Hardware die Schuld (bleibe aber etwas wachsam)... Gruß EASY
  9. Hallo, eine PN Anfrage war, ob sich auch die Länge einer Fahrstraße ermitteln läßt. Als Aktion auf das Ereignis "Fahrstraße wird aktiviert/deaktiviert" -> Skript ausführen... --[[ Länge einer Fahrstraße ermitteln. Ausgewertet wird die Aktivierung der Fahrstraße, da dann alle Weichen richtig gestellt sind. Hinweis: Die Länge bezieht sich auf ganze Gleise! (es wird nicht berücksichtigt, wenn z.B. das Anfangssignal in der Mitte eines Gleises liegt und deshalb nur die halbe Länge gültig ist) * Index Spur beginnt bei 0 ** Kreuzungen oder Kreuzbögen können mehr als eine aktive Spur haben, (da sie nicht als Weichen definiert sind). Da in der Regel beide Spuren gleich lang sind, wird nur eine gewertet. *** für realen Betrieb Zeile löschen! --]] if state then -- Fahrstraße wird aktiviert print("Fahrstraße: "..route.name) -- Fahrstraße ausgeben local l=0 -- Gleislänge local n=0 -- Anzahl der Gleise local Gleise=route.tracks -- alle zugehörigen Gleise auslesen for _,g in ipairs(Gleise) do for i=1,g.routeCount do -- alle Spuren if g.routes[i-1].active then -- aktive Spur (z.B. bei Weichen)* l=l+g.routes[i-1].length -- Länge der Spur addieren n=n+1 break --** end end end print("Länge: "..l) print("Gleise: "..n) print("==============================") route.active=false -- Fahrstraße wieder deaktivieren. *** end ergibt folgendes Ergebnis im Ereignisprotokoll... Gruß EASY
  10. Hallo, @Goetz, danke für den Versuch. wie es aussieht, war es ein Windows Problem. Windows hat das Update auf Windows11 23H2 und noch ein paar andere Updates gefahren. Nachdem ich festgestellt habe, daß auch ein anderes Programm Probleme bereitet, habe ich das System zurückgesetzt und die Updates sind noch einmal gelaufen. Das andere Programm geht wieder, die Darstellung im MBS ist wieder gut... ist wahrscheinlich so ein Fall von "nicht darüber nachdenken"... Gruß EASY
  11. Hallo @Neo, Bei einigen Wagons habe ich plötzlich ein Darstellungsproblem... 61BBAAE1-A9F3-418D-AE3E-EA70D88998AA wird als "?" dargestellt B8A345A9-9BDC-46B9-8156-4F9A463A4305 wird als "Geisterwagen" dargestellt (ist auf dem Bild markiert, da unsichtbar [obwohl er als sichtbar definiert ist]) Onlineversion herunterladen hat auch nichts gebracht... Hast Du irgendeine Idee, was da schiefläuft? Gruß EASY
  12. Hallo @maxwei, super Modell Was mir sehr gefällt sind die Rußablagerungen an den Wänden an der richtigen Stelle wie z.B. oberhalb der Tore oder bei der Esse. Was im Gegensatz dazu etwas auffällt sind die sehr sauberen Fenster (da was jemand sehr fleißig beim Putzen). Aber das ist bei diesem Modell schon "Jammern auf hohem Niveau"... Noch ein kleiner Hinweis zum Modellbau (nur als Anregung): Bei der Animation für die Innenbeleuchtung reicht prinzipiell eine Skalierung in z-Richtung, dann wandern z.B. die auszublendenden Wände nicht durch die ganze Halle. Aber wie gesagt, nur als Anregung, da es durch die kurze Animationszeit nicht sehr auffällt. Gruß EASY
  13. Hallo, ich habe die .mbe im vorhergehenden Beitrag ausgetauscht, war noch ein kleiner Denkfehler drin... Gruß EASY
  14. Hallo, ich habe mich (als spontane Idee) noch etwas mit dem Thema Zuganzeiger und Kupplungen beschäftigt... ... so sieht es aus wenn der Zug von links nach rechts eingefahren ist... (gelb=Fahrzeug mit Antrieb) ... und so von rechts nach links... ... alle (jeweils hinteren) Kupplungen sind ein... Kupplung über entsprechenden Anzeiger aus... Solange die Anzeigeleiste nicht überschrieben wird und der Zug existiert, kann über die Anzeigeleiste an jedem beliebigen Punkt auf der Strecke auf die Kupplungen zugegriffen werden... ... dies war der Grundgedanke des Projektes. 2025-01-26-Zuganzeiger + Kupplungsfunktion.mbp Gruß EASY
  15. Hallo @Neo, wenn ich eine neue Anlage anlege, dann geht es. Mit meiner "Vorlage" geht es nicht. Da ich damit schon alles mögliche getestet habe, weiß ich nicht, ob es da irgendetwas noch gibt, was nicht so sein sollte. Ich finde nichts was noch übrig geblieben sein könnte. Ich hänge die "Vorlage.mbe" mal mit bei (mit der als Projekt geht es nicht). Vielleicht kannst Du ja analysieren woran es liegt. Vorlage.mbp Gruß EASY
  16. Hallo @Neo, Ich experimentiere gerade etwas mit der neuen Schnittstelle. Wenn ich ohne offenes Ereignisprotokoll im MBS sende... {"jsonrpc": "2.0", "method": "layout.invokeScript", "params": "return 42", "id": 1} kommt zurück {"jsonrpc":"2.0","result":42,"id":1} Wenn ich mit offem Ereignisprotokoll im MBS sende... {"jsonrpc": "2.0", "method": "layout.invokeScript", "params": "return 42", "id": 1} kommt zurück {"jsonrpc":"2.0","error":{"code":-32602,"message":"Invalid params"},"id":1} warum? Gruß EASY
  17. Hallo, aus einer PN-Unterhaltung ergab sich, daß es praktisch wäre die Spurlängen von Gleisen auszulesen. (In diesem Fall Längensynchronisation mit TrainController) So ist bei mir die Idee entstanden, wie man das (nach meiner Meinung) einfach gestalten könnte... Meine Lösung ist mit einem Signal.... ... das Signal muß einen Gleiskontakt haben (was bei den meisten Signalen der Fall ist). Außerdem sollte es kein Signal (langer) Animation sein (z.B. die Formsignale), da das Ereignis "Signal schaltet" erst nach Ablauf der Animation im Ereignisprotokoll erscheint (quasi eine Zeitverzögerung). Gut geeignet sind Lichtsignale. Beim Signal habe ich in den Einstellungen die Kontaktabstände so gewählt, daß das Signal und der Gleiskontakt übereinander liegen... ... muß nicht sein, aber ich finde es praktischer um zu sehen, wo man sich gerade befindet. Wenn das Signal an einem Gleis einrastet, wird automatisch eine Verknüpfung zu dem Gleis erstellt... Wenn man nun diese Verknüpfung beim Signal abfragt, hat man das Gleis und kann dessen Paramater abfragen... In der EV ist die Aktion "Signal schaltet" -> Skript ausführen... --[[ Spurlängen von Gleisen auslesen. Das Meßsignal ist ein beliebiges Signal mit Gleiskontakt. Wenn das Signal (Gleiskontakt) an einem Gleis einrastet wird eine Verknüpfung zum Gleis erstellt. --]] local gleis=signal.link -- verknüpftes Gleis abfragen. if gleis~=nil then -- Verknüpfung vorhanden? print(gleis.name.." Spurlängen") for i=0,gleis.routeCount-1 do -- Für alle Spuren (Zählung beginnt bei 0!) print("Spur "..i,gleis.routes[i].length) end print("==============================") end ... und so sieht dann das Ergebnis aus, wenn man das Signal auf ein Gleis setzt und umschaltet (Doppelklick)... Zum ausprobieren oder als Vorlage... Spurlänge messen 01.mbp Gruß EASY
  18. Hallo @Neo, gib es einen bestimmten Grund warum zwar das Beschleunigen / Abbremsen auf eine Richtung beschränkt werden kann, das Entkuppeln aber nicht (geht immer in beide Richtungen) Gruß EASY
  19. Hallo, ich mache hier mal ein neues Thema auf, das sich mit speziellen Lösungen in lua beschäftigt. Damit möchte ich versuchen das Thema etwas zu bündeln, damit es nicht im ganzen Forun verstreut ist. Für mein immer wieder verwendetes Testprojekt, habe ich mich damit beschäftigt, wie man in aneinander folgenden Fahrstraßen die nachfolgende Fahrstraße als Variable ablegen kann. Die Ausgangssituation ist ein in sich geschlossenes Kreissystem (nicht erschrecken über die Portale, sie sind fest verbunden und vereinfachen nur den Aufbau)... Das lua Skript für Schalter wird betätigt sieht so aus... -- Anschlußfahrstraßen finden -- FS1key = Schlagwort FS1 (Ausgangs-FS in die die Liste eingetragen wird) -- FS2key = Schlagwort FS2 (mögliche Anschluss-FS) -- routelist = Name der Liste für Anschluss-FS -- sort = Tabelle nach Namen sortieren (Namen müssen eindeutig [nicht doppelt] sein!) local function FindNextRoute(FS1key,FS2key,routelist,sort) local fs1a=layout:getRoutesByKeyword(FS1key) -- FS1 einlesen local fs2a=layout:getRoutesByKeyword(FS2key) -- FS2 einlesen for _,fs1 in ipairs(fs1a) do -- Schleife FS1 local Liste={} -- Ausgabeliste for _,fs2 in ipairs(fs2a) do -- Schleife FS2 local wp1=fs1.waypoints -- Wegpunkte FS1 local wp2=fs2.waypoints -- Wegpunkte FS2 if wp1[#wp1]==wp2[1] then -- letzter Wegpunkt FS1 = erster Wegpunkt FS2? table.insert(Liste,fs2) -- wenn ja, FS2 in Liste eintragen end end if #Liste>0 then -- Einträge in Liste vorhanden? if sort and #Liste>1 then -- sortieren und Einträge in Liste mindestens 2 local function sortfunction(a,b) return a.name < b.name end -- Sortierfunktion table.sort(Liste,sortfunction) -- Sortieren ausführen end fs1.variables[routelist]=Liste -- Liste als variable in FS1 schreiben end end end --========================================== FindNextRoute("Ausfahrt HFS","Fahrstrecken","Strecken",false) FindNextRoute("Fahrstrecken","Ausfahrt Strecken","Ausfahrten",false) FindNextRoute("Ausfahrt Strecken","HFS","Einfahrten",true) FindNextRoute("HFS","Ausfahrt HFS","Ausfahrten",false) ... die Auswertung in der Funktion "FindNextRoute" basiert darauf, daß der letzte Wegpunkt einer Fahrstraße der erste Wegpunkt einer direkt nachfolgenden Fahrstraße ist (Das Skript funktioniert nur unter dieser Voraussetzung!) Das Ergebnis sieht dann (exemplarisch für jede Fahrstraßengruppe) so aus... ...Anmerkung sort=false ... sort=true _____________________________________________________________________________________________________________________________________ Prinzipiell kann man auch ein benutzerdefiniertes Ereignis daraus machen... -- Anschlußfahrstraßen finden -- P1_Schlagwort_FS1 = Schlagwort FS1 (Ausgangs-FS) -- P2_Schlagwort_FS2 = Schlagwort FS2 (mögliche Anschluss-FS) -- P3_Listenname = Name der Liste für Anschluss-FS -- P4_sortiert = Tabelle nach Namen sortieren local fs1a=layout:getRoutesByKeyword(P1_Schlagwort_FS1) -- FS1 einlesen local fs2a=layout:getRoutesByKeyword(P2_Schlagwort_FS2) -- FS2 einlesen for _,fs1 in ipairs(fs1a) do -- Schleife FS1 local Liste={} -- Ausgabeliste for _,fs2 in ipairs(fs2a) do -- Schleife FS2 local wp1=fs1.waypoints -- Wegpunkte FS1 local wp2=fs2.waypoints -- Wegpunkte FS2 if wp1[#wp1]==wp2[1] then -- letzter Wegpunkt FS1 = erster Wegpunkt FS2? table.insert(Liste,fs2) -- wenn ja, FS2 in Liste eintragen end end if #Liste>0 then -- Einträge in Liste vorhanden? if P4_sortiert and #Liste>1 then -- sortieren und Einträge in Liste mindestens 2 local function sortfunction(a,b) return a.name < b.name end -- Sortierfunktion table.sort(Liste,sortfunction) -- Sortieren ausführen end fs1.variables[P3_Listenname]=Liste -- Liste als variable in FS1 schreiben end end mit diesen Parametern.. Anmerkung: den Prefix "Px" habe ich gesetzt damit die Variablen in dieser Reihenfolge aufgelistet werden (das MBS sortiert alphabetisch) Damit können die Parameter auch in der grafischen EV eingetragen werden... Der Vollständigkeit halber noch das Projekt... 2025-01-23-Anschlußverbindungen suchen.mbp ... mit extra 2 Schaltern Gruß EASY
  20. Hallo @Neo, Wenn ich in der grafischen EV als erste Aktion "Skript ausführen" festlege... ... öffnet sich der Skript Editor... ... und ich komme für weitere grafische Aktionen nicht mehr zurück zur Aktionsliste. Ich muß also zuerst eine grafische Aktion erzeugen... ... dann die Aktion "Skript ausführen" hinzufügen... ... dann kann ich das Skript bearbeiten... ... und dann die beiden Aktionen vertauschen... ... damit "Skript ausführen" an erster Stelle steht. Gruß EASY
  21. Hallo @Neo wäre es möglich, das beim Einrasten von einem Portal / Depot auf ein Gleisende automatisch eine Verknüpfung zum entsprechenden Gleis gesetzt wird, so wie es z.B. bei Gleiskontakten der Fall ist ist, wenn sie beim Gleis einrasten. Hintergrund: Wenn man das Gleis verschiebt muß das Portal / Depot bewegt werden damit es wieder einrastet. Gerade bei kleinen (besonders bei versehentlichen) Verschiebungen ist nicht immer ersichtlich, daß das Portal / Depot "den Anschluss verloren" hat und man wundert sich, warum es plötzlich nicht mehr geht. Außerdem fände ich es praktisch, wenn das Portal / Depot mit dem Gleis mitwandern würde, eben wie z.B. ein Gleiskontakt. Gruß EASY
  22. Hallo, eigentlich ist es mehr ein Feature-Wunsch aber ich stelle es erst einmal zur allgemeinen Diskussion. Die Ausgangslage: Die Aufgabenstellung: Die blauen Loks sollen immer vorwärts aus dem Depot kommen Die roten Loks sollen die Fahrtrichtung beim Verlassen des Depots umkehren (vorwärts-rückwerts-vorwärts.....) (Schlagwort ""RiWe") Bei Betätigung des Tasters: nächste (zufällige) Lok aus dem Depot entlassen Der Versuchsaufbau: Der Wunsch: Die Aufgabenstellung mit einem Depot erfüllen. Für 2 Depots habe ich diese Lösung: Gleiskontakt wird betreten: if vehicle.variables["RiWe"] then $("Depot 2-"):add(vehicle) else $("Depot 2+"):add(vehicle) end Schalter wird betätigt: local Dp=$("Depot 2+") local Dm=$("Depot 2-") local Liste={},{} print(Dp.count,Dm.count) if Dp.count>0 then for i=0,Dp.count-1 do table.insert(Liste,{Dp,i}) end end if Dm.count>0 then for i=0,Dm.count-1 do table.insert(Liste,{Dm,i}) end end if #Liste>0 then for i=1,#Liste do print("Liste",Liste[i][1].name,Liste[i][2]) end local x=math.random(1,#Liste) print("Auswahl",Liste[x][1].name,Liste[x][2]) print() Liste[x][1]:release(Liste[x][2],Dp) else print("Depots sind leer") end ----------------------------------------------------------------------------- Für ein Depot habe ich eine Wunschlösung: Wenn man auf diesen Parameter des Depots in der EV zugreifen könnte... ... würde Gleiskontakt wird betreten so aussehen: $("Depot 1"):add(vehicle) Taster wird betätigt so local function intable(t,x) for i,v in ipairs(t) do if v==x then return -1 end end return 1 end local Depot=$("Depot 1") local riwe=Depot:getEntriesByKeyword("RiWe") if #riwe>0 then local x=math.random(0,$("Depot 1").count-1) for i,v in ipairs(riwe) do print("Index riwe",v) end print("Depot:release("..x..","..intable(riwe,x)..")","<=Wunschaktion") print() -- noch keine Lösung mit einem Depot else print("Depot 1 ist leer") end ... die Wunschaktion wird derzeit nur als print-Ausgabe erzeugt... Dies wäre meine Diskussionsgrundlage. Depotproblem01.mbp Meinungen und Anregungen gerne. (Hinweis: Die Loks sind nur exemplarisch... es können auch ganze Züge sein) Gruß EASY
  23. EASY

    Sparschattenbahnhof

    Hallo, ich hatte diese Anlage hier schon einmal vorgestellt. Es ist ein Schattenbahnhof bei dem die Züge immer wieder neu zusammengestellt werden. Da sich das MBS in seinen Möglichkeiten weiterentwickelt hat, habe ich die EV neu geschrieben und die Funktionalität angepasst. Der linke Block ist für den Betrieb, der rechte Block ist zum Einlesen eines neuen Zuges (benötigte Variablen werden automatisch erzeugt). Viel Spaß beim Ausprobieren. Kommentare, Anregungen und Fragen wie immer gerne... 2025-01-13-Sparschattenbahnhof.mbp Gruß EASY
  24. Hallo, sorry, es sind in diesem (Deinem) Thema anscheinend nur Lösungen erwünscht, die sich in der grafischen EV darstellen lassen... kommt nicht mehr vor! (ich lasse meinen Beitrag trotzdem noch stehen)... Gruß EASY
  25. Hallo, Deine Lösung: local t, t2 = layout:getVehicleGroup(Vehicle) for i, Iter in ipairs(t) do local Ori = t2[i] if i == 1 then if Ori == 1 then Iter.couplers[0].enabled = false else Iter.couplers[1].enabled = false end elseif i == #t then if Ori == 1 then Iter.couplers[1].enabled = false else Iter.couplers[0].enabled = false end end end Mein Alternativvorschlag (ohne Auswertung der Fahrtrichtung) local zug=layout:getVehicleGroup(vehicle) --Erstes Fahrzeug: zug[1].couplers[0].enabled=zug[1].couplers[0].connectedCoupler~=nil --Kupplung aktiv=Kupplung besetzt? zug[1].couplers[1].enabled=zug[1].couplers[1].connectedCoupler~=nil if #zug>1 then -- evtl. Letztes Fahrzeug: zug[#zug].couplers[0].enabled=zug[#zug].couplers[0].connectedCoupler~=nil zug[#zug].couplers[1].enabled=zug[#zug].couplers[1].connectedCoupler~=nil end Gruß EASY
×
×
  • Neu erstellen...