gespeicherte Achstellungen mit LUA auslesen?

!!! Please ensure, that your contribution or question is placed into the relevant section !!!
Questions about rolling stock, for example, do not belong in "Questions about the Forum". Following is perhaps the right area where your question will be better looked after:
General questions to EEP , Splines, rolling stock, Structures in EEP, landscape elements, Signalling system and controlling, designers, Europe-wide EEP meetings , Gossip
Your cooperation to keep the forum clear is appreciated.
  • Servus an Alle!

    Ich finde leider nach langem Suchen keine Möglichkeit die durch Menüaufruf gespeicherten Achsstellungen (Gruppe #1 -#16) mit Lua abzufragen. Mit EEPRollingstockGetAxis bekomme ich die Position zwar, aber ich hätte gerne die bereits gespeicherte Gruppe ausgelesen. Irgendwo muss die ja auszulesen sein. Kann mir geholfen werden? Danke im Voraus!


    LG

    Paul

    LG

    Paul


    Notebook ACER ASPIRE VN7 59,1 i7 4720HQ, 16GB RAM, 2x SSD, GTX 860M 2GB, Win7 Ultimate 64bit

    Desktop i3-6700, 3,7GHz, 32GB, SSD 500GB + 1 TB, GTX 1050ti 4GB GDDR5, Win10 Home

    EEP10, 11, 12, 13, 14, 15.1 mit Plugin 1,Patch 2, EEP16 Patch 2

    NOS 13, NOS 15, RessourcenSwitch, Hugo,Tauschmanager, Modellkatalog, Modellexplorer, Zugexplorer

  • Mit EEPRollingstockGetAxis

    liest du die Stellung einer Achse aus.

    Das ist in doppeltem Sinne die fasche Wahl. Denn erstens willst du nicht wissen, wo die Achse steht (= Get), sondern sie irgendwo hin schicken (= Set).

    Und zweitens willst du keine einzelne Achse ansprechen, sondern einen Speicherplatz, in dem mehrere Achsenpositionen abgelegt sind. Diese Plätze sprichst du mit EEPRollingstockSetSlot() an. Du findest das im Lua Handbuch gleich auf der folgenden Seite hinter GetAxis und SetAxis

    "Das tritt... nach meiner Kenntnis... ist das sofort. Unverzüglich ..."

    - Günter S. -

    The post was edited 1 time, last by Goetz ().

  • Danke Goetz. Aber ich möchte DOCH wissen, wo die Achse steht (deshalb Get). Ich könnte so feststellen, ob die mit EEPRollingstockSetSlot gesetzte Position erreicht ist. Oder hab ich da eine Möglichkeit übersehen?

    LG

    Paul


    Notebook ACER ASPIRE VN7 59,1 i7 4720HQ, 16GB RAM, 2x SSD, GTX 860M 2GB, Win7 Ultimate 64bit

    Desktop i3-6700, 3,7GHz, 32GB, SSD 500GB + 1 TB, GTX 1050ti 4GB GDDR5, Win10 Home

    EEP10, 11, 12, 13, 14, 15.1 mit Plugin 1,Patch 2, EEP16 Patch 2

    NOS 13, NOS 15, RessourcenSwitch, Hugo,Tauschmanager, Modellkatalog, Modellexplorer, Zugexplorer

  • ich habe das so verstanden, dass Paul5102 die in einer Gruppe hinterlegten Achsenspeicherungen haben möchte. Also muss er doch Get benutzen.

    LG
    Schorsch


    -------------------------------------------------------------------------------------------------------------------------
    PC: 64-Bit, Windows 10 Home, Intel(R) Core (TM) i7-8700 K CPU@3,70 GHz, Arbeitsspeicher 32 GB, NVIDIA GeForce GTX 1080 Ti

    Laptop: acer 64 Bit, Win 10, 32 GB RAM, Intel(R) Core (TM) i7-6820 HK 2.7 GHz, NVIDIA GeForce GTX 980
    EEP11 bis EEP 15.1 Expert mit Plugin 1, EEP 16 + Patch1, 2 und 3, Modelexplorer, Zugexplorer, Modellkatalog

  • Aber ich möchte DOCH wissen, wo die Achse steht (deshalb Get).

    Du kannst nicht auslesen, in welcher Gruppe (oder welchen Gruppen) diese Achsenstellung so gespeichert ist. Falls du das meinst. In der Achse steht das ja nicht drin. Die Gruppe hat ein paar Werte und diese werden beim Aufruf dieser Gruppenstellung an die Achsen verteilt. Mehr nicht. Und theoretisch können 15 der 16 Gruppen dieselbe Stellung für diese spezielle Achse enthalten. Das ist also nicht einmal eindeutig zuzuordnen.


    Wenn du nur zur Überprüfung wissen willst, wie eine ausgewählte Achse gerade eingestellt ist, dann ist das von dir genutzte EEPRollingstockGetAxis() genau richtig und liefert dir ja, wie du schreibst, auch den entsprechenden Wert. Aber einen Rückschluss auf die Gruppe, welche diese Achse eingestellt hat, gibt es nicht. Die Achse weißt nicht einmal, ob die Gruppe ihr diesen Wert gegeben hat oder du per Slider oder Lua oder in KP ...

    Nachtrag (angeregt durch den Hinweis von Schorsch):
    Und es gibt keinen Befehl, um die Werte auszulesen, die in einer Achsengruppe hinterlegt sind.

  • Irgendwie reden wir aneinander vorbei. Beispiel: Ich speichere im Kontextmenü die Achsenstellungen in Gruppe #1. Rufe mit EEPRollingstockSetSlot("Brückenkran - 3 Haken", 1) die Position der Gruppe ab, der Kran fährt auf die gespeicherte Position. Und dann will ich wissen, ob die Position erreicht ist oder nicht.


    Danke Goetz!

    LG

    Paul


    Notebook ACER ASPIRE VN7 59,1 i7 4720HQ, 16GB RAM, 2x SSD, GTX 860M 2GB, Win7 Ultimate 64bit

    Desktop i3-6700, 3,7GHz, 32GB, SSD 500GB + 1 TB, GTX 1050ti 4GB GDDR5, Win10 Home

    EEP10, 11, 12, 13, 14, 15.1 mit Plugin 1,Patch 2, EEP16 Patch 2

    NOS 13, NOS 15, RessourcenSwitch, Hugo,Tauschmanager, Modellkatalog, Modellexplorer, Zugexplorer

    The post was edited 1 time, last by paul5102 ().

  • Und dann will ich wissen, ob die Position erreicht ist oder nicht.

    EEPRollingstockGetAxis() ist keine Callback Funktion. Das heißt, sie wird nicht selbständig aufgerufen, wenn etwas erreicht ist. Solch eine Ereignisverwaltung ist eine gute Sache, wie ich selbst gerade an anderer Stelle entdecke, aber EEP hat nur wenige solche Funktionen und die erkennst du alle am On im Namen.


    Du musst also die Kranstellung ab dem Augenblick, wenn du den Kran in Bewegung setzt, überwachen.


    ungeprüft und aus dem Gedächtnis geschrieben!

  • Und dann will ich wissen, ob die Position erreicht ist oder nicht.

    tja, paul5102, wär zu schön um wahr zu sein! :av_1:


    Du möchtest nämlich mit deiner obigen Aussage alle in der Gruppe gespeicherten Achsen auf ihre Endstellung abfragen. :bn_1:


    Und diese Endstellungen werden mit Sicherheit nicht gleichzeitig erreicht werden.

    Also müsste die Abfragefunktion auf das Ende der letzten Bewegung warten.


    D.h. in Goetz' istKranAngekommen müsstest du alle Positionen der Gruppenachsen abfragen und dann verknüpfen..


    Ein Vorteil der Einzelpositionsabfrage ist auch, dass man Bewegungsüberschneidungen erzeugen kann.


    Hier ein Beispielvideo ab 4:45/6:00 Bagger:

    (ist leider noch nicht ganz "ausgereift:at_1:", der Bagger dreht sich erst im 4.Zyklus:ma_1:)


    Aber bei den Bändern siehst du die Einzelachsabfragen.



    :aq_1:


    eep_gogo ( RG3 )

    -------------------------

    Intel i3-540 3,2GHz 8GB, RAID10, HD 6570 1GB, W7/64 Prof., EEP 6-6.1, 10-15, HN13+15, TM, "Schiefe Ebene 6 + 8", "Bahn2000", "Faszination der St. Gotthard-Nordrampe"

    MK, ModellKonverter 1.0 wo nicht mehr tut. Ganz schnell ausgeschrieben, wg. Mod-Drohung: Ansonsten ... :am_1:

  • Danke Goetz,

    Danke eep_gogo.

    LG

    Paul


    Notebook ACER ASPIRE VN7 59,1 i7 4720HQ, 16GB RAM, 2x SSD, GTX 860M 2GB, Win7 Ultimate 64bit

    Desktop i3-6700, 3,7GHz, 32GB, SSD 500GB + 1 TB, GTX 1050ti 4GB GDDR5, Win10 Home

    EEP10, 11, 12, 13, 14, 15.1 mit Plugin 1,Patch 2, EEP16 Patch 2

    NOS 13, NOS 15, RessourcenSwitch, Hugo,Tauschmanager, Modellkatalog, Modellexplorer, Zugexplorer

  • Für alle, die das script von Goetz ausprobieren wollen:

    In der function istKranAngekommen ist richtig:

    local ok, position = EEPRollingstockGetAxis(Fahrzeug, Achse )


    LG

    Paul



    LG

    Paul


    Notebook ACER ASPIRE VN7 59,1 i7 4720HQ, 16GB RAM, 2x SSD, GTX 860M 2GB, Win7 Ultimate 64bit

    Desktop i3-6700, 3,7GHz, 32GB, SSD 500GB + 1 TB, GTX 1050ti 4GB GDDR5, Win10 Home

    EEP10, 11, 12, 13, 14, 15.1 mit Plugin 1,Patch 2, EEP16 Patch 2

    NOS 13, NOS 15, RessourcenSwitch, Hugo,Tauschmanager, Modellkatalog, Modellexplorer, Zugexplorer

  • Goetz Servus, ich bilde mir ein, das Problem(Lösung) schon im Forum gelesen zu haben, nur leider finde ich es nicht. (Typenumwandlung?) Ich positioniere eine Achse(Haken des Krans). Lese den Wert aus. Erhalte mit EEPRollingstockGetAxis den Wert -3.6944448947906 (mit print im Ereignisfenster) . Wenn ich diesen Wert dann mitEEPRollingstockSetAxis der Achse wieder zuweise, dann bewegt sie sich ganz woanders hin. Übergebe ich den Wert in einer Variablen, dann wird die richtige Position angefahren. Ich hoffe, mich verständlich ausgedrückt zu haben...:aa_1:

    LG

    Paul


    Notebook ACER ASPIRE VN7 59,1 i7 4720HQ, 16GB RAM, 2x SSD, GTX 860M 2GB, Win7 Ultimate 64bit

    Desktop i3-6700, 3,7GHz, 32GB, SSD 500GB + 1 TB, GTX 1050ti 4GB GDDR5, Win10 Home

    EEP10, 11, 12, 13, 14, 15.1 mit Plugin 1,Patch 2, EEP16 Patch 2

    NOS 13, NOS 15, RessourcenSwitch, Hugo,Tauschmanager, Modellkatalog, Modellexplorer, Zugexplorer

  • Wenn ich diesen Wert dann mitEEPRollingstockSetAxis der Achse wieder zuweise, dann bewegt sie sich ganz woanders hin. Übergebe ich den Wert in einer Variablen, dann wird die richtige Position angefahren.

    ne, das ist Quark (entschuldige bitte die Ausdrucksweise)

    Ob du den Wert direkt übergibst oder mittels Variable, macht definitiv keinen Unterschied. Weil EEP in beiden Fällen das gleiche erhält - die Zahl. Deine Variable ist nur ein Zwischenträger in Lua selbst. Davon weiß EEP nichts, wenn es über den Wert die Achse ansteuert.


    Zeig mal bitte, was du machst. Der entscheidende Unterschied steckt woanders. Aber ich mag nicht blind raten, wo ...

  • Danke Goetz, ich positioniere im Steuerdialog den Haken eines Krans. Lese dann mittels

    Code
    1. -- Wo steht der Haken?
    2. ok, Pos = EEPRollingstockGetAxis("Brückenkran - 3 Haken", "Ladegeshirr heben/senken")

    die Position aus, und erhalte mit

    Code
    1. print (ok, " EEPRollingstockGetAxis Brückenkran - 3 Haken"," Position=",Pos)

    true EEPRollingstockGetAxis Brückenkran - 3 Haken Position=-3.6944448947906


    Wenn ich diesen Wert dann mit


    Code
    1. ok =EEPRollingstockSetAxis("Brückenkran - 3 Haken", "Ladegeshirr heben/senken",-3.6944448947906)

    setze, fährt der Haken ins Nirwana:aa_1:

    Übergebe ich den über eine Variable, hier also Pos

    Code
    1. ok =EEPRollingstockSetAxis("Brückenkran - 3 Haken", "Ladegeshirr heben/senken",Pos)

    bleibt der Haken wo er ist. Wenn ich den Wert 40 manuell im Steuerdialog eingebe, dann entspricht das in etwa der Position des Hakens die ich vorher ausgelesen habe, und die mit print als -3.69....angezeigt wird

    Wird der Rückgabewert (Pos) vom Typ her bei print falsch dargestellt?

    LG

    Paul


    Notebook ACER ASPIRE VN7 59,1 i7 4720HQ, 16GB RAM, 2x SSD, GTX 860M 2GB, Win7 Ultimate 64bit

    Desktop i3-6700, 3,7GHz, 32GB, SSD 500GB + 1 TB, GTX 1050ti 4GB GDDR5, Win10 Home

    EEP10, 11, 12, 13, 14, 15.1 mit Plugin 1,Patch 2, EEP16 Patch 2

    NOS 13, NOS 15, RessourcenSwitch, Hugo,Tauschmanager, Modellkatalog, Modellexplorer, Zugexplorer

  • HaNNoveraNer , Danke für den Tipp. Ich verwende Bennys print tofile, und kopier den Wert.

    LG

    Paul

    LG

    Paul


    Notebook ACER ASPIRE VN7 59,1 i7 4720HQ, 16GB RAM, 2x SSD, GTX 860M 2GB, Win7 Ultimate 64bit

    Desktop i3-6700, 3,7GHz, 32GB, SSD 500GB + 1 TB, GTX 1050ti 4GB GDDR5, Win10 Home

    EEP10, 11, 12, 13, 14, 15.1 mit Plugin 1,Patch 2, EEP16 Patch 2

    NOS 13, NOS 15, RessourcenSwitch, Hugo,Tauschmanager, Modellkatalog, Modellexplorer, Zugexplorer

  • Hallo paul5102


    ich habe im Moment den Kopf nicht frei genug, um genauer auf

    dann bewegt sie sich ganz woanders hin.

    einzugehen. Ich hab das im Forum schon mal genauer erläutert, finde den Beitrag aber nicht mehr.


    Dieses SetAxis und GetAxis ist etwas tricky.


    Nur kurz der Hintergrund: der Kon konstruiert seine Achse z.B. von -50 bis +50. Der "Fahrweg" ist aber immer 0 bis 100 Prozent.


    Deshalb sind die Set und Get-Werte zahlenmäßig nicht (immer) gleich.


    Du mußt also erst durch etwas tüfteln herausfinden (durch die entsprechenden Lua-prints) wie sich der Kran (zahlenmäßig) genau verhält.


    In meinem Bagger-Video z.B. sind die Drehkranz-, Hub- und Schaufelbewegungen unterschiedlich konstruiert.:at_1::at_1::at_1:


    Hier ein weiterer Beitrag von mir, ist aber nicht der obengemeinte ausführlichere.

    4t-letzte Zeile:


    Eisenbahnfähre Nordland Klappe mit LUA öffnen und schliessen!


    :aq_1:


    PS: der "Schlüsselsatz":


    Anfangs- und Endposition anfahren und auslesen


    ist mir nicht gleich wieder eingefallen, dafür hat Goetz es unten ja schön dargestellt.


    Und noch ein Hinweis: es gibt Achsen, die nicht ganz die 100% erreichen! Also dementsprechend abfragen (99% oder 98%)

    eep_gogo ( RG3 )

    -------------------------

    Intel i3-540 3,2GHz 8GB, RAID10, HD 6570 1GB, W7/64 Prof., EEP 6-6.1, 10-15, HN13+15, TM, "Schiefe Ebene 6 + 8", "Bahn2000", "Faszination der St. Gotthard-Nordrampe"

    MK, ModellKonverter 1.0 wo nicht mehr tut. Ganz schnell ausgeschrieben, wg. Mod-Drohung: Ansonsten ... :am_1:

    The post was edited 2 times, last by eep_gogo ().

  • Sehr gut, eep_gogo  :be_1:

    Die Diskrepanz zwischen dem Get-Wert und dem Set-Wert ergibt sich also daraus, dass Get den absoluten Positionswert bekommt, während Set eine relative Skala nutzt, die immer von 0 bis 100 reicht.


    Die Differenz kann man ermitteln und dann für Vergleiche nutzen. Zum Glück ist sie bei der "Kranbrücke - 3 Haken" linear. Der Versatz zwischen beiden Werten ist immer gleich.


    Kranbrücke Werte.jpg



    Wird der Rückgabewert (Pos) vom Typ her bei print falsch dargestellt?

    Nein, bestimmt nicht.


    Irgendwo steckt bei dir ein Fehler, der diesen Unterschied zwischen Direkteingabe und Eingabe per Variable erzeugt. Aber der steckt nicht in den Codezeilen, die du gepostet hast, sondern muss woanders passieren. In deiner Variablen steckt nicht der Wert, den du vermutest.


    Hier ist eine Beispielanlage, in der ich erstens den Offset ermittle, indem ich beide Endpunkte anfahre und dann den Positionswert abfrage. Und anschließend fahre ich im Wechsel zwei Positionen an, die ich einmal direkt als Zahl angebe und einmal mittels Variable. Zuletzt fahre ich den Haken in die mittlere Position.


    Kranbruecke - 3 Haken.zip

    "Das tritt... nach meiner Kenntnis... ist das sofort. Unverzüglich ..."

    - Günter S. -

    The post was edited 1 time, last by Goetz ().

  • Danke euch schön für eure Mühe! Schau mir das gleich an..

    LG

    Paul


    Notebook ACER ASPIRE VN7 59,1 i7 4720HQ, 16GB RAM, 2x SSD, GTX 860M 2GB, Win7 Ultimate 64bit

    Desktop i3-6700, 3,7GHz, 32GB, SSD 500GB + 1 TB, GTX 1050ti 4GB GDDR5, Win10 Home

    EEP10, 11, 12, 13, 14, 15.1 mit Plugin 1,Patch 2, EEP16 Patch 2

    NOS 13, NOS 15, RessourcenSwitch, Hugo,Tauschmanager, Modellkatalog, Modellexplorer, Zugexplorer

  • Dank euch hab ichs geschnallt. Aber das ist ja echt doof! Da frag ich mich schon, warum im Lua-Handbuch nicht beschrieben steht, dass für EEPRollingstockSetAxis und EEPRollingstockGetAxis unterschiedliche Einheiten für den Achsenwert gelten.

    LG

    Paul


    Notebook ACER ASPIRE VN7 59,1 i7 4720HQ, 16GB RAM, 2x SSD, GTX 860M 2GB, Win7 Ultimate 64bit

    Desktop i3-6700, 3,7GHz, 32GB, SSD 500GB + 1 TB, GTX 1050ti 4GB GDDR5, Win10 Home

    EEP10, 11, 12, 13, 14, 15.1 mit Plugin 1,Patch 2, EEP16 Patch 2

    NOS 13, NOS 15, RessourcenSwitch, Hugo,Tauschmanager, Modellkatalog, Modellexplorer, Zugexplorer