Jump to content

Gleise umbenennen und EV


EASY

Empfohlene Beiträge

Hallo Neo,

ich habe mich etwas mit den "neuen" Kommando 303 beschäftigt. Um die Zusatzparameter "richtig" auslesen zu können (besonders für die Koordinaten der Segmente) müssen die Gleise ja eindeutige Namen haben. Dazu habe ich mir ein kleines Programm geschrieben, das alle Gleise zuerst eindeutig umbenennt, damit ich mich mit dem Auslesen und Verarbeiten der Segmentkoordinaten austoben kann. Wenn ich damit fertig bin, werden den Gleisen wieder die ursprünglichen Namen zugewiesen (um den User nicht zu verwirren). 

Nach meinen bisherigen Versuchen, macht die Ereignisverwaltung (wenn schon vorhanden) diese Umbenennerei klaglos mit (arbeitet meines Wisens mit IDs und nicht mit Namen)...

Trotz dieser positiver Erfahrungen frage ich mal nach, ob diese Betrachtungsweise richtig ist oder Du noch irgendwelche mögliche Probleme erkennen kannst...

... oder hast Du noch eine andere Idee für die Auswertung vom Kommando 303 ?

P.S. Die Frage nach einem möglichen Zugriff auf die IDs über die Schnittstelle passt gerade zum Thema und sei hiermit gestellt...

Gruß

EASY 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Easy,

es ist korrekt, dass die EV mit internen IDs arbeitet und du daher problemlos die Gleise umbenennen kannst. Das gilt aber nur, solange der Nutzer in der EV nicht per Variable auf ein Objekt zugreift, denn dann wird der Name ausgewertet. Probleme bekommst du also nur, wenn zwischen dem Umbenennen die EV abgearbeitet wird. Wenn das nicht relevant ist, dann kannst du problemlos die Objekte umbenennen, solange sie am Ende wieder den Originalnamen haben.

Bezüglich IDs per Steuerschnittstelle: Bisher möchte ich es vermeiden, Zugriff auf die IDs nach Außen zu geben, da ich mit der aktuellen Implementierung noch nicht zufrieden bin. Die IDs werden nämlich bei jedem Laden einer Anlage neu verteilt. Eine ID ist daher nur während der Laufzeit einer Anlage verwertbar und kann nicht für einen späteren Zugriff wiederverwendet werden. Langfristig möchte ich das System ändern und konstante IDs nutzen, aber bisher bin ich noch nicht dazu gekommen, das zu implementieren.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

Zitat

Das gilt aber nur, solange der Nutzer in der EV nicht per Variable auf ein Objekt zugreift, denn dann wird der Name ausgewertet.

... habe ich zugegebenermaßen bei meiner Betrachtung als "eindeutige" Feherquelle übersehen... Da werde ich noch einen Hinweis setzen.

Mein "Härteversuch" war die 18-Zug Anlage von BahnLand. und das auch noch bei schon laufendem Betrieb.

Für die Zeit des Umbenennens, wird die Animation im MBS angehalten und erst dann wieder freigegeben. Troz, daß die EV irgendwo steht, ist die Anlage problemlos weitergefahren... auch mit geänderten Gleisnamen... dies stimmte mich ziemlich optimistisch, da in der EV sofort die geänderten Gleisnamen eingetragen waren...

Ist vielleicht etwas grenzwertig... und so setze ich doch vielleicht besser noch einen Hinweis auf den "ruhenden" Anfangszustand...

Was mich noch sehr interessieren würde:

Für allgemeine Programme ist es nach meiner Meinung irrelevant ob die IDs dynamisch oder statisch sind. Das Programm kann sowieso auch nur während der Laufzeit eines MBS-Projektes laufen. Mit jedem Programmstart müße man die IDs sowieso neu einlesen, da das Programm ja nicht weiß, was da auf es zukommt.

Für über die Schnittstelle wäre es nach meiner Meinung nur dann relevant mit statischen IDs zu arbeiten, wenn das Programm auf ein (einmaliges !) MBS-Projekt (oder ein bestimmter Teilbereich eines MBS-Projektes) zugeschnitten ist.

Interessant könnte es werden, wenn die EV "programmierbar" wird (was sie ja werden soll), da diese sowieso projektbezogen ist und man direkt "am Puls" der IDs sitzt...

... oder habe ich da noch etwas übersehen?

Gruß

EASY

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Easy,

ich denke auch, dass viele Programme mit dynamischen IDs zurecht kommen würden. Allerdings bleibt dabei das Problem, die IDs zu Beginn der Anlage zu ermitteln, denn das geht auch wieder nur anhand des Namens (wenn man es auf bestimmte Objekte abgesehen hat). Ich denke das Problem lässt sich nicht lösen, solange es externe Anwendungen gibt, die für verschiedene Anlagen gedacht sind.

Wenn die Skriptfunktionen kommen, werde ich die IDs überarbeiten, sodass im Skript mit diesen gearbeitet wird und zugleich sichergestellt ist, dass sich die ID für ein Objekt nicht mehr nachträglich ändern kann. Dann werde ich die IDs auch für die Steuerschnittstelle zugänglich machen.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

hallo ESAY, Neo

sorry wenn ich einfach hier schreibe, wollte nur zur info anmerken

Zitat

Das gilt aber nur, solange der Nutzer in der EV nicht per Variable auf ein Objekt zugreift, denn dann wird der Name ausgewertet.

das BahLand

Mein "Härteversuch" war die 18-Zug Anlage von BahnLand. und das auch noch bei schon laufendem Betrieb.

bei dieser anlage komplett auf variablen verzichtet hat
vg quackster

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo quackster,

Zitat

...bei dieser anlage komplett auf variablen verzichtet hat

nein, bedeutet es nicht.

In dieser Anlage gibt es nur keine Variablen, in denen als Wert Gleisnamen stehen, die dann als (indirekten) Bezug für den Namen einer Variablen stehen, die ausgewertet werden soll... siehe wiki 6. Variablen ab "Das 3D-Modellbahn Studio unterstützt das Verschachteln von Objektvariablen..." oder den indirekten Zugriff auf einen Namen mit "$Variable"...

Variablen in deren Werte z.B. Zahlen oder die Namen anderer Objekte (außer Gleise) stehen, bleiben davon ja unberührt.

Gruß

EASY

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo MarkoP,

... ist für mich haupsächlich für das Arbeiten über die Schnittstelle gedacht. Die Schnittstelle arbeitet ausschließlich mit Namen, so daß jedes Objekt das angesprochen werden soll, einen eigenen (eindeutigen) Namen haben muß, der im Projekt nur einmal vorkommen darf. 

Wenn ich nun über die Schnittstelle z.B. eine Streckenverfolgung mache, muß jedes Gleis einen eigenen Namen haben, da jedes Gleis angesprochen wird... und das kann von Hand ganz schön aufwendig werden...

Auch gehen in der EV indirekte Variablenbezüge (Name einer Variablen, die ausgewertet werden soll, steckt in einer anderen Variablen) nur nur mit eindeutigen Namen... so daß es auch hier ziemlich aufwendig werden kann, alles von Hand umzubenennen.

Gruß
EASY

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...