mroschk Geschrieben 28. November 2021 Geschrieben 28. November 2021 (bearbeitet) Hallo, ich versuche mich nun in die EV einzuarbeiten. Die erste Aufgabe ist alle Elemente in einer Gruppe umzubenennen ( Element->Eigenschaft->Name ). Dazu habe ich eine Gruppe erstellt ( Name = GWL ) In der Gruppe sind eine Weiche, Sperrsignale, Gleiskontakte, ein Textfeld ( welches vor her per Hand geändert wird ) und ein Taster. Alle Elemente in der Gruppe haben verschiedene aussagekräftige Namen. Diesen Namen sollen nach dem betätigen des Tasters der Text aus dem Textfeld vorangestellt werden. (siehe Bild Gruppe.JPG ) Ein Beispiel wie es funktionieren soll: In der Gruppe gibt es eine Weiche, die heißt "WL". Auf dem Textfeld steht "Bhf_Adorf_". Nach dem Druck auf den Taster soll der Name der Weiche in "Bhf_Adorf_WL" umbenannt werden. Nun habe ich in der EV folgendes gemacht. Bei druck auf den Taster wird einer Modulvariable namens "NEW_NAME" der Wert aus dem Textfeld gegeben. Das funktioniert schon mal ( siehe Bild schalter_wurde_betätigt.JPG) Jetzt kommts...ich müsste ja erst mal alle Elemente einer Liste hinzufügen oder ? Dazu habe ich in der EV - Neu ( also + ) dann Wiederholungen -> Für alle Elemente in einer Liste ( siehe EV_Widerholung.jpg ) Ich weiß aber nicht so genau was ich das auf der rechten Seite eingeben muss? Eine Frage noch zu der EV: Wird die irgendwo gespeicher, oder kann man die Exportieren/Importieren damit man die nicht jedesmal neu machen muss ? Matthias test.mbp Bearbeitet 28. November 2021 von mroschk Anlage hinzugefügt
Timba Geschrieben 28. November 2021 Geschrieben 28. November 2021 vor 8 Minuten schrieb mroschk: Eine Frage noch zu der EV: Wird die irgendwo gespeicher, Selbstverständlich wird die EV zusammen mit der Anlage gespeichert! In vielen Anlagen der verschiedenen Nutzer hier steckt in der umfangreichen EV die Arbeit von vielen Stunden, wenn nicht Tagen. Meinst du, die Nutzer wären noch hier, wenn sie jeden Tag beim Laden ihrer Anlage die EV neu schreiben müssten? Gruß Timba
mroschk Geschrieben 28. November 2021 Autor Geschrieben 28. November 2021 Hallo, ahm, da hab ich mich falsch ausgedrückt. Ich meinte das ich die EV für das umbenennen so erstellen will das die in jeder ( auch neu erstellten ) Anlage verwendet werden kann. Matthias
Goetz Geschrieben 28. November 2021 Geschrieben 28. November 2021 (bearbeitet) Hallo @mroschk im Video Objekte mit Parametern ausstatten kannst du dir anschauen, wie du Elemente als Liste in eine Wiederholung bekommst. Im Video Gruppe in Wiederholung ein- und ausblenden findest du ein weiteres Beispiel. Ich hoffe, es ist okay wenn ich deine Frage mit Videos beantworte. Ich kann manches im laufenden Bild besser erklären. Viele Grüße Götz Nachtrag: In Brummis Historischer Anlage 07 findest du unter "Pultausleuchtung" ein Untermenü "Hilfsfunktion zur Benennung der Kacheln". Das macht etwas ähnliches wie das, was du vorhast. Die Anlage hat die Content-ID: 840C1343-D390-4991-8075-B03F08EB6C95 Bearbeitet 28. November 2021 von Goetz Ergänzungen
mroschk Geschrieben 28. November 2021 Autor Geschrieben 28. November 2021 Hallo, ja klar ist das OK...Bilder sagen mehr als tausend Worte :-) Danke Matthias
mroschk Geschrieben 28. November 2021 Autor Geschrieben 28. November 2021 Habs hinbekommen. Vielleicht gehts noch besser aber so gehts erst mal ziemlich automatisch. Also einfach in einer neuen Anlage eine Action wenn irgegend ein <schalter betätigt wird. Den rest macht das Script: if controller == layout:getEntityByName("SW_Rename") then local t = layout:getEntitiesByKeyword("WL") for i, Elemente in ipairs(t) do Elemente.name = layout:getEntityByName("TXT_RENAME").text .. Elemente.name Elemente.variables["WL"] = nil end layout:getEntityByName("TXT_RENAME").visible = false layout:getEntityByName("TXT_RENAME").name = "TXT_RENAME_OFF" layout:getEntityByName("SW_Rename").visible = false layout:getEntityByName("SW_Rename").name = "SW_Rename_OFF" end Matthias
mroschk Geschrieben 28. November 2021 Autor Geschrieben 28. November 2021 Hallo, ich muss noch mal nachfragen. Also ich möchte ja nun nur die Elemente IN DER GRUPPE Namens "G_RENAME" mit dem Schlagwort "Rename" ändern. Dazu hab ich im Script folgendes versucht: local t = layout:getEntitiesByName("G_RENAME"):getEntitiesByKeyword("Rename") Die Gruppe gibt es und die Elemente in der Gruppe haben auch das Schlagwort "Rename". Leider bekomme ich folgenden Scriptfehler: [16:35:59] Skriptfehler (2): attempt to call a nil value (method 'getEntitiesByKeyword') Was mach ich denn da falsch ? Matthias
Little Geschrieben 28. November 2021 Geschrieben 28. November 2021 Hallo Matthias, wenn Du z.B. alle Objekte mit dem Schlagwort "Test" in "Schiene" mit aufsteigender Nummer umbenennen willst, dann geht das (Danke, Götz) so: local entities = layout:getEntitiesByKeyword("Test") for k, v in pairs(entities) do v.name = "Schiene "..k end
Goetz Geschrieben 28. November 2021 Geschrieben 28. November 2021 Hallo Matthias, vor 1 Stunde schrieb mroschk: Was mach ich denn da falsch ? Du verstehst (unter anderem) den Doppelpunkt im Befehl nicht. Den kannst du nicht in einer Zuweisung zweimal verwenden. Du kannst nur eine Liste anhand eines Kriteriums erstellen. Beim Abarbeiten musst du dann mit einer Fallunterscheidung prüfen, ob auch das zweite Kriterium erfüllt ist. Zur Bedeutung des Doppelpunkts in Lua gibt es von mir auch ein Video ... Viele Grüße Götz
mroschk Geschrieben 28. November 2021 Autor Geschrieben 28. November 2021 Ja, der zweite Doppelpunkt war nur ein Versuch, da ich zwar in C# programmiere, aber nicht in LUA. Nun aber immer noch die Frage...wie komme ich denn nun an alle Elemente in einier Gruppe ? Ich hab den Eindruck das geht nicht ? Matthias
Goetz Geschrieben 28. November 2021 Geschrieben 28. November 2021 vor 3 Minuten schrieb mroschk: Ich hab den Eindruck das geht nicht ? Stimmt - die Gruppenzugehörigkeit spielt in der EV keine Rolle. Da wirst du alle Elemente aus dieser Gruppe auswählen müssen. Wähl die Gruppe aus, drück F3 und du findest die Gruppe direkt in der Auswahlliste. Dort kannst du alle Elemente der Gruppe auswählen. Die musst du dann in eine Liste übernehmen.
Little Geschrieben 28. November 2021 Geschrieben 28. November 2021 getEntitiesByGroup("Gruppe") das funktioniert wohl nicht?, oder wählt man da nur Gruppen nach Name aus? VG Frank
Timba Geschrieben 28. November 2021 Geschrieben 28. November 2021 vor 35 Minuten schrieb mroschk: Nun aber immer noch die Frage...wie komme ich denn nun an alle Elemente in einier Gruppe ? Ich hab den Eindruck das geht nicht ? Das Studio bietet ja inzwischen verschiedene Wege an, um zum Ziel zu kommen. Es kommt immer darauf an, was man erreichen möchte. Wenn es dir um die EV geht und du mehrere verschiedene Elemente zugleich ansprechen möchtest (wenn ich das richtig verstanden habe), dann ist die Gruppe weniger gut geeignet, sondern an der Stelle wäre die Verwendung von Schlagwörtern sinnvoller. Damit kannst du sowohl in der grafischen EV als auch über Lua ("getEntitiesByKeyword") alle auf diese Weise zusammengefassten Elemente ansprechen. Die Gruppe eignet sich eher für die räumliche Gestaltung, weniger für die Programmierung. Gruß Timba
Goetz Geschrieben 28. November 2021 Geschrieben 28. November 2021 vor 33 Minuten schrieb Little: das funktioniert wohl nicht? Nein, das funktioniert nicht, Frank. Es gibt keine Methode (sprich: Funktion) mit diesem Namen. Das sagt die Fehlermeldung, welche du bei diesem Versuch bekommst: Zitat Unknown method or property name getEntitiesByGroup
mroschk Geschrieben 28. November 2021 Autor Geschrieben 28. November 2021 Hallo, danke euch für all die Hilfe. Also zum einen wollte ich mich mal mit der EV befassen, zum anderen habe ich mir ( siehe oben ) eine Weiche zusammen gebastelt mit 2 Sperrsignalen, 3 Gleiskontakten und einem Weichensignal und einer Weiche natürlich. Das ganze habe ich dann zu einer Gruppe gemacht und dann unter Meine 3D Modelle gespeichert. Ziel des ganzen ist eben das man das für die weitere Verwendung später ... viel später mal in Rocrail nicht immer wieder per Hand machen muss. So haben die Sperrsignale die namen WL_SH0 und WL_SH1 ( WL = Weiche links, SH0 = Sperrsig für gerade, SH1 für Sperrsig abzweigend usw.) Ebenso habe ich in der Gruppe ein Textfeld und einen Taster mit gespeichert. Wenn mann nun das Textfeld änder, also den Text was auch immer man da haben möchte, dann werden alle Elemente in der Liste umbenannt. WL_SH0 wird zu (Textfeld.text) + WL_SH0 usw. Ich denke der Tip mit dem Schlagwort war gut. Man muss nur bedenken, das man dann nach dem setzen des Modells IMMER den Taster drücken muss. Der benennt dann alles um und dann MÜSSEN die Schlagwörter gelöscht werden, sonst gehts beim nächsten Modell schief wenn man den Taster drückt und irgendwo sind noch Elemente mit dem gleichen Schlagwort übrig :-) Aber gleube das bekomme ich hin. Matthias
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen.
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden