Jump to content

Goetz

Mitglieder
  • Gesamte Inhalte

    4925
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von Goetz

  1. Du musst es nicht lassen, Aloys. Ganz bestimmt nicht deshalb, weil ich (alleine) mich mit schlechter Rechtschreibung schwer tue. Ich bin nicht der Maßstab dafür, was andere tun und lassen dürfen. Wenn du deine Rechtschreibung mit etwas mehr Mühe verbessern kannst, dann wäre ich dir dafür dankbar. Wenn es nicht geht, dann ist das auch okay.
  2. Ein Textfeld kann nur einen Text anzeigen (wenn dieser Text durch die EV erstellt wird) Für mehrere Texte (z.B. mehrere Zugnamen) musst du mehrere Textfelder unter- oder nebeneinander setzen. In Zugverbänden wird nur die Lok erkannt, welche eine andere Geschwindigkeit als 0 hat (und somit den Zug bewegt), weil man sonst eine lange Liste an Namen ausgeben müsste. Nämlich jede Lok und jeden Waggon im Zugverband. Oder man bekäme ständig Meldungen. Nämlich für jeden Waggon im Zug eine, sobald dieser das Gleis betritt. Beides wäre in den meisten Fällen nur hinderlich. Denn meistens will man den ganzen Zug beeinflussen. Und das geht am besten, wenn man im Zug nur einen einzigen Ansprechpartner hat. Was deine Deutschlehrerin betrifft: Ich wäre auch froh, wenn sie mehr Geduld mit dir gehabt hätte. Dann wäre es nicht so mühselig deine Texte zu lesen. Ich muss mich wirklich überwinden dir zu antworten, ohne dir deine schlechte Rechtschreibung übel zu nehmen. Denn manchmal denke ich dann so etwas wie: "Ich habe mir 10 Stunden Mühe mit meinem Tutorial gegeben. Ich habe jeden Satz immer wieder geändert bis ich mir sicher war, dass er wirklich verständlich ist. Und Aloys gibt sich nicht einmal 5 Minuten Mühe bei seinen Antworten beziehungsweise seinen Fragen."
  3. ... dann startet jedes dieser Ereignisse die selbe Lok und kann entsprechend auch alles andere auslösen, was mit dem Start dieser Lok verbunden sein soll. Bleibt also nur der manuelle Start als Argument ...
  4. Schritt 9 - Variable am Schrankenwärterhäuschen anzeigen Wenn man genauer beobachten möchte, wie sich im Betrieb die Variable ständig ändert, dann kann man sie in einem Textfeld ausgeben. Für diesen Zweck ist in der Übungsanlage schon ein passendes Textfeld eingebaut. Es hat den Namen "Anzahl", sitzt genau auf der Wand des Schrankenwärterhäuschens, besitzt einen durchsichtigen Hintergrund und eine weiße Schriftfarbe. Weil es aktuell keinen Text enthält, ist es nicht zu sehen. Um die Variable in diesem Textfeld anzuzeigen, muss das Ereignis "BUe öffnen" geändert und erweitert werden. Als erstes muss das Ereignis jetzt bei jedem Wert reagieren und nicht nur dann, wenn der Wert 0 ist. Dafür trägt man beim Ereignis als Wert statt der 0 den Namen der Variablen mit vorangestelltem Dollar Zeichen ein. Also Wert: $Schrankenwärter.Zahl (hier muss der Name der Variablen von Hand geschrieben werden. Bitte die genaue Schreibweise beachten! Vor dem Namen steht ein Dollarzeichen. Und zwischen den beiden Worten steht ein Punkt, aber kein Leerzeichen.) Das Dollar Zeichen bedeutet für die EV, dass sie nicht das Wort als Wert benutzen soll, sondern den Wert, der in der Variablen dieses Namens gespeichert ist. Im speziellen Fall bedeutet es, dass die EV immer reagiert, wenn sich der Wert der Variablen ändert. Egal, welchen Wert sie dann gerade bekommt. Die Methode ist ein bisschen "von hinten durch die Brust ins Auge" und deshalb nicht so leicht zu verstehen wie alles bisherige. Aber sie funktioniert sehr gut. Die EV reagiert jetzt also immer, wenn sich die Variable ändert. Das ist gut für die Textausgabe. Aber die Schranken dürfen sich trotzdem nur öffnen, wenn der Wert der Variablen 0 ist. Also braucht das Ereignis jetzt eine Bedingung: Bedingung: Variable besitzt den Wert Name: "Schrankenwärter.Zahl" Wert: "0" Das Öffnen der Schranken haben wir zuvor schon für den Fall "Bedingungen sind erfüllt" eingetragen. Daran muss nichts geändert werden. Für diesen Fall kommt nur noch eine Aktion hinzu: Spezifische Objektaktionen: Beschriftung setzen Beschriftung: "Anzahl" Text: "$Schrankenwärter.Zahl" Anschließend muss man festlegen, was passieren soll, wenn die Bedingungen NICHT erfüllt sind: In diesem Fall soll nur der neue Wert der Variablen an das Textfeld übertragen werden. Sonst nichts. Spezifische Objektaktionen: Beschriftung setzen Beschriftung: "Anzahl" Text: "$Schrankenwärter.Zahl" Jetzt wird der aktuelle Wert der Variablen bei jeder Veränderung an das Textfeld übertragen. Egal, ob der Wert 0 ist oder nicht. Und damit ist das Ende des Tutorials erreicht. Ich wünsche mir, dass ich damit manchen Nutzern des 3D-Modellbahn Studios zu einem besseren Verständnis der Ereignisverwaltung verhelfen konnte. Viel Spaß beim Nachbauen. Und wer nicht nur abschreibt, sondern dabei auch mitdenkt und versteht, was er tut, der kann sich anschließend viele andere Aufgaben ausdenken und selbständig lösen.
  5. Schritt 8 - Züge frühzeitig anmelden. Damit ist der BÜ gesichert. Aber wirklich befriedigend ist das noch nicht. Denn in ungünstigen Fällen kann es vorkommen, dass ein Zug den BÜ öffnet und der nächste ihn gleich darauf wieder schließt. Es wäre deshalb sinnvoll einen Zug schon dann beim Schrankenwärter anzumelden, wenn sich das Öffnen der Schranken nicht mehr lohnt. Diese Stellen sind in der Übungsanlage mit gelben Gleisen markiert. Zwei weitere Ereignisse sind nötig: "BUe Anmeldung außen" und "BUe Anmeldung innen" Das Ereignis ist jeweils "Zug betritt ein Gleis". Das Gleis ist "2200 außen gelb" bzw. das Gleis "2200 innen gelb" Und die Aktion ist Variable setzen Name: Schrankenwärter.Zahl Wert: +1 Weil jetzt die ankommenden Züge schon bei den gelben Gleisen gezählt werden, muss die Aktion "Variable setzen" aus den Ereignissen für die roten Gleise "BUe schließen außen" und "BUe schließen innen" wieder gelöscht werden. Wenn alles stimmt, dann öffnet der BUe jetzt nur noch dann, wenn er wenigstens für 7 bis 10 Sekunden (je nach Zuggeschwindigkeit) geöffnet bleiben kann.
  6. Schritt 7 - Schranken öffnen Jetzt fehlt nur noch das Ereignis, welches die Schranken öffnet. Dafür wird ein neues, fünftes Ereignis benötigt. Und dieses Ereignis ist vom Typ "Variable wird gesetzt". Dieses Ereignis soll genau dann eintreten, wenn der Wert der Variablen sich auf 0 ändert. Wenn dieser Fall eintritt, dann haben alle Züge den Bahnübergang verlassen. Also können die Schranken jetzt geöffnet werden. Die Aktionen dafür sind genau die selben, die wir vorher in der Ereignissen "BUe verlassen außen" und "BUe verlassen innen" gelöscht haben. Aber jetzt werden diese Aktionen nur noch dann ausgeführt, wenn alle Züge, die schon ein rotes Gleis überfahren hatten, den BÜ auch wieder verlassen haben. Ist erst ein Zug durch den BÜ hindurch, aber der andere noch auf dem Weg dorthin, dann bleiben die Schranken geschlossen weil die Variable noch nicht den Wert 0 hat. Je nachdem, wo sich die beiden Züge während der Erstellung der EV befanden, hat die Variable vielleicht den falschen Anfangswert. Deshalb wartet man am besten einen Moment ab, in dem beide Züge den BÜ passiert haben, öffnet dann die EV oder die Variablenliste des Schrankenwärterhäuschens und setzt jetzt den Wert der Variablen auf 0. Anschließend sollte der Bahnübergang korrekt funktionieren.
  7. Schritt 6 - durchgefahrene Züge zählen Wenn ein Zug ein grünes Gleis verlässt, dann muss die Variable wieder 1 runter gezählt werden. Und mehr darf nicht passieren. Die grünen Gleise dürfen den BÜ jetzt nicht mehr automatisch öffnen. Deshalb müssen zunächst die beiden Animationen aus den Ereignissen "BUe verlassen außen" und "BUe verlassen innen" gelöscht werden: Und dann trägt man in beiden Ereignissen jeweils nur eine Aktion ein Variable setzen Name: "Schrankenwärter.Zahl" Wert "-1" Durch das Minus wird die Zahl um 1 verringert, wenn ein Zug den Bahnübergang verlässt.
  8. Schritt 5 - ankommende Züge zählen Um jetzt zu zählen, wie viele Züge den BÜ passieren werden, muss den beiden Ereignissen "BUe schließen außen" und "BUe schließen innen" eine weitere Aktion hinzugefügt werden. Die Aktion heißt: "Variable setzen". Die Variable heißt "Schrankenwärter.Zahl" und kann aus der Liste ausgewählt werden. Der Wert ist "+1", wobei das Plus dafür sorgt, dass zum aktuellen Wert 1 addiert wird. Falls der Wert vorher 0 war, dann ist er nach Auslösung des Ereignisses 1 War der Wert vorher 1, dann ist er jetzt 2 Mit jedem Zug, der über eins der beiden roten Gleise fährt, wird die Zahl also um 1 größer.
  9. Schritt 4 - Variable einrichten Aber wenn beide Züge gleichzeitig ihre Runden drehen, dann geht die Sache manchmal schief. Dann nämlich, wenn ein Zug die Schranken öffnet, nachdem der andere Zug schon das Gleis zum Schließen der Schranken überfahren hat: Der Güterzug hat das rote Gleis schon überfahren. Der Personenzug verlässt gleich das grüne Gleis. Und dann öffnen sich die Schranken, obwohl der Güterzug den BÜ noch passieren muss. Er kann die Schranken aber nicht erneut schließen, weil er den Punkt für diese Aktion schon hinter sich hat. Unser Prinzip, welches für jeden einzelnen Zug perfekt funktioniert, reicht also offensichtlich nicht mehr, wenn beide Züge gleichzeitig unterwegs sind. Um diese Aufgabe zu lösen muss man zählen, wie viele Züge den BÜ passieren sollen und wie viele Züge ihn schon passiert haben. Und für diesen Zweck sind Variablen perfekt geeignet. Denn man kann das, was in einer Variable steht, ändern. Also beispielsweise eine Zahl rauf und runter zählen. Eine Variable kann man einfach in der EV erzeugen, indem man ihr dort einen Namen gibt und einen Wert zuweist. Man kann die Variable aber auch einem bestimmten Modell zuordnen. Das kann ganz nützlich sein, um später bei vielen Variablen eine besseren Überblick zu behalten. Und bei Rollmaterial ist es besonders nützlich, weil es auf diese Weise immer seine Variablen mit dabei hat. Im konkreten Beispiel ist es nicht nötig und auch nicht von besonderem Vorteil, die Variable in einem Modell anzulegen. Ich will es trotzdem tun, um bei dieser Gelegenheit zu zeigen, wie das funktioniert. Neben dem Bahnübergang steht ein kleines Häuschen für den Schrankenwärter. Und das bietet sich doch geradezu dafür an, dort aufzuschreiben wie viele Züge den BÜ passieren wollen bzw. passiert haben. Wählt man das Modell aus, so kann man in den Eigenschaften unten rechts eine Liste öffnen. (zum Auswählen bitte auf das Dach des Häuschens klicken. Auf der Wand befindet sich ein unsichtbares Textfeld) Diese Liste ist zunächst leer. Hier legt man jetzt eine Variable an, gibt ihr einen Namen (im Beispiel: Zahl) und einen Wert (im Beispiel: 0). Anschließend kann man den Wert in dieser Variablen durch Ereignisse ändern und solche Änderungen wiederum als Ereignis auswerten, das weitere Aktionen auslösen soll. In der EV kann man jederzeit prüfen, welche Variablen es gibt und welchen Wert diese Variablen aktuell speichern. Das ist nützlich wenn man prüfen möchte, ob beispielsweise richtig gezählt wird. Außerdem kann jeder Eintrag mit einem Doppelklick geöffnet und geändert werden, falls mal etwas durcheinander geraten sein sollte.
  10. Schritt 3 - Ereignisse für den Güterzug kopieren Für den Güterzug kann man jetzt zwei weitere Einträge in der EV vornehmen. Und da sie nahezu identisch mit den Einträgen für den Personenzug sind, kann man sich viel Arbeit ersparen indem man die beiden vorhandenen Einträge kopiert. Anschließend kann man diese Einträge umbenennen und die passenden Gleise als Auslöser wählen. Jetzt schließt und öffnet auch der Güterzug bei jeder Runde korrekt die Schranken.
  11. Schritt 2 - Schranken schließen Jetzt soll der Personenzug die Schranken schließen, bevor er den Bahnübergang passiert. Und zwar früh genug damit die Schranken geschlossen sind, bevor der Zug den BÜ erreicht. Das rot markierte Gleis liegt weit genug entfernt um als Auslöser zu dienen, wenn die Geschwindigkeit des Zuges nicht mehr als 350 mm/sec beträgt. Bei 200 mm/sec sieht es noch besser aus. Das soll für dieses Beispiel genügen. Das Prinzip ist nahezu identisch wie beim Öffnen der Schranken. Aber das Ereignis ist jetzt "Zug betritt Gleis". Das Gleis ist 2200 (außen rot). Und die beiden Animationen müssen vorwärts ablaufen: Damit sollte der Personenzug Runde für Runde die Schranken korrekt schließen und öffnen.
  12. Schritt 1 - Schranken öffnen Im ersten Schritt soll der Personenzug die Schranken öffnen, sobald er den Bahnübergang passiert hat. Das ist dann der Fall, wenn der Zug das grüne Gleis im äußeren Ring verlässt. Es ist ratsam alle Ereignisse, die den Bahnübergang (kurz: BÜ oder BUe) betreffen, in einem Ordner zusammenzufassen. So behält man später einen besseren Überblick, wenn die Ereignisverwaltung (kurz: EV) mehr steuert als nur einen BÜ. Jetzt kann man die zugehörigen Ereignisse in diesem Ordner erstellen: Der erste Eintrag in der EV legt fest, was passiert wenn der Zug das grüne Gleis verlässt: Beide Schranken sollen in diesem Fall geöffnet werden. Das erreicht man, indem man die im Modell enthaltene Animation startet: Damit die Schlagbäume hoch gehen, muss die Animation rückwärts ablaufen: Für die Startposition muss "Aktuell" gewählt werden. Denn sonst läuft die gesamte Animation bei einer schon geöffneten Schranke ein zweites Mal ab. (Für das Schließen der Schranken gilt später das selbe!) Weil die beiden Schlagbäume zwei unabhängige Modelle sind, muss das Ereignis zwei Animationen starten. Eine für jede Schranke: Setzt man den Personenzug jetzt in Bewegung, dann öffnen sich beide Schranken, sobald er das grüne Gleis hinter sich gelassen hat.
  13. Der zweigleisige Bahnübergang - Schritt für Schritt In den nächsten Beiträgen möchte ich Schritt für Schritt und ausreichend bebildert erklären, wie man einen zweigleisigen Bahnübergang mit fester Fahrtrichtung für beide Gleise per Ereignisverwaltung steuern kann. Die passende Anlage dazu, komplett mit markierten und eindeutig benannten Gleisen, befindet sich im Anhang dieses Postings. Sie muss lediglich entsprechend der Anleitung mit einer Ereignisverwaltung versehen werden. Um den Zweck der verschiedenen Einträge in der EV verständlich zu machen, beginne ich mit einer sehr einfachen Steuerung, die aber fehlerhaft arbeitet und in weiteren Schritten entsprechend korrigiert werden muss. Denn meines Erachtens genügt es nicht, eine "perfekte" Lösung anzubieten. Ich finde es genauso wichtig, dass man Erfahrungen mit Lösungswegen sammelt, die letztlich nicht zum Ziel führen. Das Tutorial beginnt mit dem nächsten Posting. BUe Tutorial.mbp
  14. Goetz

    Brummis Module

    Das sieht höchst interessant aus. Und deine Überlegungen dazu, wie man im einfachen Fall auch ohne Schaltung auskommt, finde ich clever!
  15. Ein Signal selbst hat keinen Einfluss auf Züge. Du musst die Ereignisverwaltung (kurz: EV) nutzen, um den Zugverkehr zu regeln. Dort kannst du beispielsweise eintragen, dass bei Betreten eines bestimmten Gleises der auslösende Zug die Geschwindigkeit 0 zugewiesen bekommt, falls ein bestimmtes Signal "Halt" zeigt.
  16. Hallo Aloys, hier ist ein Vorschlag, der zwei Ereignisse nutzt. Im ersten Ereignis wird die aktuelle Geschwindigkeit in einer Variablen zwischengespeichert. Im zweiten Ereignis wird gprüft, ob die Geschwindigkeit über einem bestimmten Wert liegt oder nicht und dann entsprechend reagiert. Bau ein Oval Such dir ein Gleis aus, welches bei Betreten ein Ereignis auslöst. Setz ein Beschriftungsfeld daneben Ereignis: Zug betritt Gleis Lok: alle Loks Gleis: Das welches du ausgesucht hast Aktion: Variable setzen Variable: Geschwindigkeit Wert: $_Trigger1._CurrentSpeed Ereignis: Variable wird gesetzt Variable: Geschwindigkeit Wert: >0 Bedingung: Wert der Variablen Variable: Geschwindigkeit Wert: >150 Aktion wenn Bedingung erfüllt: Beschriftung setzen Beschriftung: Beschriftung Text: zu schnell Aktion wenn Bedingung NICHT erfüllt: Beschriftung setzen Beschriftung: Beschriftung Text: alles bestens Die unterschiedlichen Textausgaben sind natürlich nur ein Beispiel. Ebenso gut könntest du anhand der Variablen eine Weiche stellen und so beispielsweise zu schnelle Autos aus dem Verkehr ziehen. Oder einen Blitzer auslösen (falls es sowas als Modell im MBS gibt).
  17. Mir war schon klar, dass die Geschichte einen sehr ernsten Hintergrund hat. Aber durch die Darstellung mittels MBS und Variablen hast du eben auch Humor beim Umgang damit bewiesen.
  18. Gern geschehen, Schlagerfuzzi. Und  für den Humor in deiner Geschichte.
  19. ZitatDie Reihenfolge ergibt sich dabei aus der Gruppenhierarchie im 3D-Modell Das genügt vielleicht nicht. Was wann bewegt werden muss kann von vielen Faktoren abhängen. Beispielsweise auch von Hindernissen, die auf dem Weg überwunden werden müssen. Ich gestehe, dass ich gerade versuche ein Beispiel zu konstruieren und dabei scheitere. Und der kürzeste Weg ist auch nicht immer der richtige. So kann z.B. eine nahe Wand den Kran zwingen eine 270° statt einer 90° Drehung auszuführen. Für mein Empfinden wäre es okay, wenn Animationen nacheinander ablaufen müssen. Es sieht zwar noch lebendiger und realistischer aus, wenn sich zwei Animationen zeitlich überlappen können. Aber essenziell wichtig ist das nicht. Und da jede Animation das Koordinatensystem für die hierarchisch darunter angeordnete Animation verschiebt verstehe ich, dass sequenzielles Abarbeiten der Bewegungen einfacher zu realisieren ist.
  20. Das Prinzip sieht sehr flexibel und leistungsfähig aus, Neo. Wenn ich dich richtig verstanden habe, dann können damit komplexe Gebilde gebaut werden. Kohlebagger im BW fahrbares Gestell (Translation) Traverse (Translation) Drehkran (Drehung) hebbarer Ausleger (Drehung) Haken heben/senken (Translation) Haken ausrichten (Drehung) oder Baustellenkran fahrbares Gestell (Translation) Drehkran (Drehung) Laufkatze (Translation) Haken heben/senken (Translation) Haken ausrichten (Drehung) oder moderne Hebebühne fahrbares Gestell (Translation) drehbare Basis (Drehung) klappbarer unterer Arm (Drehung) klappbarer oberer Arm (Drehung) Arm ausfahren (Translation) Gegendrehung des Korbs, um in der Horizontalen zu bleiben (Drehung) etc. Bei Betrachten des Videos fiel mir auf, dass nicht immer alle Animationen gleichzeitig angestoßen werden dürfen, die vom Start zum Zielpunkt führen. Sonst kann es (wie im Video) passieren, dass ein tief hängender Haken in einen Container geschwenkt und dann durch die Kiste nach oben gezogen wird. Zusätzlich zu den Punkten für die Aufnahme / das Absetzen von Gütern muss ein User deshalb später auch "leere" Positionen anfahren können. Beziehungsweise einen Zielpunkt über ein oder zwei Wegpunkte anfahren. Ich vermute aber, dass dein Ansatz das prinzipiell schon zulässt. Jedenfalls freue ich mich sehr zu sehen, wie schnell du einen vielversprechenden Ansatz entwickelt hast.
  21. Goetz

    Wendeltreppe

    Ich vermute, dass die Treppe so steil wirkt weil du für eine ganze Umdrehung zu viele Stufen benötigst. Mit anderen Worten: Die Tritthöhe ist okay, aber der Winkel zu klein.
  22. Zitathabe in den 3 Tagen nichts anderes gemacht Dann trink jetzt mal 'mnen Schluck. Länger als drei Tage kommt der Körper nicht ohne Wasser aus. Und falls du den Modellbau inzwischen schon im Schlaf beherrscht, dann darfst du dich jetzt auch mel ein Stündchen auf's Ohr legen. :-D
  23. Zitatwieso kann ich die Anleitung testanlage nicht öfnen  Die Anleitung ist eine Datei im pdf Fprmat. Um sie zu öffnen, brauchst du den Adobe Acrobat Reader oder eine alternative Software, die pdf Dateien darstellen kann. Und das Datei-Suffix pdf muss mit dem Reader verknüpft sein, damit ein Doppelklick auf die Datei den Reader startet. Je nach System musst du die rar Datei, welche du hier heruntergeladen hast, erst entpacken bevor du die Anleitung daraus mit einem pdf Reader lesen kannst.
  24. Du benötigst zuerst ein Ereignis, welches einen Countdown auslöst. Beispielsweise einen Schalter. Dann kannst du als Aktion einen Countdown starten. Diesem gibst du dann einen Namen deiner Wahl, eine Zeit und setzt bei Bedarf noch das Häkchen für den automatischen Neustart.   Jetzt kannst du ein weiteres Ereignis anlegen, welches bei Ablauf des Countdowns auslösen soll. Wähl den zuvor erzeugten Countdown als Ereignisauslöser und als Aktion dann die Übertragung der Lokgeschwindigkeit ins Textfeld.
  25. ZitatMaste, Schilder usw kann ich ja als "Strasse" einstellen Tu so etwas bitte nicht. Was auf den ersten Blicl clebver wirken mag, hat letztlich ein böses Durcheinander zur Folge. Ich habe da bei EEP sehr schlechte Erfahrungen mit solchem Missbrauch gemacht. Und ist der erstmal etabliert, dann wird man ihn kaum wieder los. Den Programmierern hinter EEP bereitet das zunehmend Kopfzerbrechen.
×
×
  • Neu erstellen...