Jump to content

EASY

Mitglieder
  • Gesamte Inhalte

    3376
  • Benutzer seit

  • Letzter Besuch

Beiträge erstellt von EASY

  1. Hallo,

    vor 12 Stunden schrieb gmd:

    Habe nicht genau die grenze getest

    ich habe es getestet und mir mit...

    Encoding.UTF8.GetByteCount(Command)

    ... die Byte von "Command" ausgeben lassen. Die Grenze liegt bei 2^14, also die 16k, die @Neo vermutet hat.

    vor 12 Stunden schrieb gmd:

    120 commands ist erstmal ok fuer mich

    ... es kommt eben darauf an, was man machen möchte.
    Bei mir ist z.B. eine Sendeeinheit (2 Kommandos)...

    Zitat

    {"jsonrpc": "2.0", "method": "layout.invokeScript", "a=layout:getEntityByName('Pyramide') a.transformation.position={x=-45.3351, y=-47.302, z=17.39997}  pos={x=8, y=10, z=3} a.variables._pos=pos  a.variables['Stapel Pyramide [002]']=keyword", "id": 1}, {"jsonrpc": "2.0", "method": "editor.cloneEntity", "params": {"_class": "entity", "name": "Pyramide"}, "id": 9}

    und da ist die Grenze schon bei 45 Einheiten erreicht, was für die Bildung von einem 3D-Objektstapel nicht wirklich viel ist...;)

    Gruß
    EASY

  2. Hallo @Neo,

    Am 8.2.2025 um 09:55 schrieb Neo:

    Das Studio selbst setzt keine expliziten Grenzen, die verwendete Netzwerkkomponente scheint aber eine Textzeile auf 16k zu begrenzen (ich kann es aktuell nicht testen). Wenn es an dieser Grenze scheitert, kann ich sie in einem nächsten Update aber vergrößern.

    ... konntest Du schon testen?

    Nachdem Du an anderer Stelle an @gmd geschrieben hast...

    Zitat

    Sind dir die Batch Requests von JSON-RPC bekannt? Du kannst auch mit der neuen Schnittstelle eine Gruppe von Einzelkommandos versenden, in dem du die Requests als JSON-Array versendest. Dieses Array wird immer in einem Stück verarbeitet, dazwischen gibt es keine anderweitige Unterbrechnung durch das Studio.

    ... wäre für mich schon interessant ob der "Fehler" beim MBS liegt, denn damit kommt man noch schneller an die Grenze...

    Gruß
    EASY

  3. Hallo,

    vor 2 Stunden schrieb Phrontistes:

    nach Überarbeitung Deiner Limmat gibt es eine unschöne Asymmetrie der Beleuchtung von Lok und Tender.  Dass man die jetzt umso auffälligere Tenderbeleuchtung nicht abschalten kann, stört dadurch etwas mehr.

    ... stimmt:( ...die Tenderbeleuchtung habe ich bei der Überarbeitung nicht berücksichtigt.
    Danke für den Hinweis... wird überarbeitet.

    Gruß
    EASY

  4. Hallo,

    vor 7 Stunden schrieb gmd:

    wie sieht das mit den return werten aus, ich nehme an die kommen als json zurueck und in der reihenfolge der kommandos, correct ?

    die Rückgabe ist auch ein JSON-Array und bei meinen Versuchen in der Reihenfolge.
    (Zur Not gibt es ja noch die id zum Auswerten oder Selektieren von relevanten Antworten9_9)...

    Gruß
    EASY

  5. Hallo,

    vor 8 Stunden schrieb Neo:

    Das Encodieren von Sonderzeichen ist bei JSON standardisiert (siehe Kapitel 2.5 Strings). Die Antworten von der Steuerschnittstelle sind daher normales JSON. Wie verarbeitest du die JSON-Antworten, nutzt du eine spezielle Bibliothek?

    ... Deine Antwort bringt mich nicht so richtig weiter. Wenn ich mir das Kapitel 2.5 durchlese, bin ich offen gestanden nur unwesentlich schlauer:/ (ich bin kein Programmierer9_9)
    Ich entnehme Deiner Antwort, daß es eben so ist, daß im string den die Schnittstelle sendet, Sonderzeichen und Umlaute als \uxxxx dargestellt werden... (weil "normales JSON").
    Für die Verarbeitung verwende ich keine spezielle Bibliothek. Ich nehme den Antwortstring und da dieser im Aufbau einer gewissen Logik folgt, extrahiere ich mir daraus die für mich notwendigen Informationen...

    Gruß
    EASY

  6. Hallo,

    vor 4 Stunden schrieb Eggu:

    Und wenn ich dann bei einem 50er Regler am Anschlag bin, aber z.B. mit der Maus höhere Werte über den Anschlag hinaus einstellen kann, dann ist das einfach nicht richtig.
    Außerdem erreiche ich damit auch eine Totzone. Wenn ich den Regler erstmal überdreht habe, muss ich ihn entsprechend zurückdrehen, bis sich an der Anzeige eine erste Änderung ergibt und die Nadel wieder zurück dreht. Also so sollte es nicht bleiben.

    ... mal als Entwurf hochgeladen F9FD76BF-26A5-400E-87AF-EA576BA2C0DF Dies würde der derzeitigen Definition im MBS V9 entsprechen.
    100% ist der höchste Skalenwert (330, 220, 110, 55)... also ohne "Totzohne".
    Wie gesagt, zeigt nur richtig an, wenn das verbundene Fahrzeug den entsprechenden Wert als Höchstgeschwindigkeit eingestellt hat oder wie bei Dir die Flughöhe entsprechend ist.

    Gruß
    EASY

  7. Hallo @gmd,

    vielen Dank für Deine bisherigen Antworten... ich fühle mich momentan etwas überfordert (gleichzeitig bin ich aber auch neugierig geworden, da ich mich auch gerne mit zuerst Unbekanntem beschäftige).

    Erst einmal kleine Schritte (für Hobbyprogrammierer wie mich)...

    vor 1 Stunde schrieb gmd:

    Mein response string 

      Name Value Type
      responseJson "{\"jsonrpc\":\"2.0\",\"result\":[{\"_class\":\"entity\",\"name\":\"Qu\\u00E4s\\u00DFter\"}],\"id\":1}" string


    genau wie bei dir, das ist das rohformat

    da würde mich einmal Interessieren, was @Neo dazu sagt. Ist das "normal" zu erwarten, oder gibt es da noch eine Verbesserung?

    vor 1 Stunde schrieb gmd:

    Edit: Bevor du fragst welche Library - using Newtonsoft.Json

    ... auf die bin ich auch schon gestoßen. Ich muß mich allerdings erst einmal damit beschäftigen, wie ich das in mein Projekt mit einbinden kann...

    vor einer Stunde schrieb gmd:

    Ich kann die events zerlegen und in eine freundlcihere darstellung umwandeln und die entities extrahieren
    und filtern usw.
    Wenn du interesse hast schicke ich dir das gerne .. sollte sich leicht transferieren lassen

    Da ich neugierig bin, habe ich schon Interesse. Ich weiß nur nicht, ob das etwas viel auf einmal ist und ich erst einmal viel mehr Fragen als Antworten habe...

    Gruß
    EASY

  8. Hallo,

    vor 4 Stunden schrieb gmd:

    Encoding.UTF8  ist hier der punkt .. Latin1 funktioniert glaube ich auch .. 
    Du musst deinem programm sagen was fuer zeichenencoding zu erwarten ist.

    Die Codierung ist (bei mir) leider egal...

        Dim C_Client As Net.Sockets.TcpClient 'Kommando-Client
        Dim C_Stream As NetworkStream         'Kommando-Stream
        Dim C_Write As StreamWriter           'Kommando schreiben
        Dim C_Read, As StreamReader           'Kommando Ergebnis lesen
    
    Public Function Connect(Optional IP As String = "127.0.0.1", Optional Port1 As Integer = 31385) As Boolean
         C_Client = New Net.Sockets.TcpClient
         Try
             C_Client.Connect(IP, Port1)               ' C_Client verbindet sich über IP / Port1
             C_Stream = C_Client.GetStream             ' Stream1 wird auf C_Client verwiesen
             C_Write = New StreamWriter(C_Stream, Encoding.UTF8)     ' Stream1 zum Senden wird deklariert
             C_Read = New StreamReader(C_Stream, Encoding.UTF8)      ' Stream1 zum Empfangen wird deklariert
             Console.WriteLine("Codierung= " & C_Read.CurrentEncoding.ToString)
         Catch ex As Exception
             CE_Error = ex                             'Systemfehlermeldung zwischenspeichern  
             Return False
         End Try
         Return True
     End Function

    Console.WriteLine("Codierung= " & C_Read.CurrentEncoding.ToString) liefert Codierung= System.Text.UTF8Encoding (was so sein soll)

    Wenn ich nun das Kommando "editor.getSelectedEntities" sende (Objektname "Quäsßter") und mir durch...

    Console.WriteLine("Codierung= " & C_Read.CurrentEncoding.ToString)
    Console.WriteLine("Result=" & C_Read.ReadLine)
    Console.WriteLine("Codierung= " & C_Read.CurrentEncoding.ToString)
    Console.WriteLine("Quäsßter")

    ... das Ergebnis anzeigen lasse, habe ich dieses Resultat...

    Zitat

    Codierung= System.Text.UTF8Encoding
    Result={"jsonrpc":"2.0","result":[{"_class":"entity","name":"Qu\u00E4s\u00DFter"}],"id":1}
    Codierung= System.Text.UTF8Encoding
    Quäsßter

    Console.WriteLine("Codierung= " & C_Read.CurrentEncoding.ToString) liefert Codierung= System.Text.UTF8Encoding...
    ...liefert das richtige Ergebnis... nur der Antwortstring ist immer noch falsch o.O

    und an der Console kann es auch nicht liegen da mit Console.WriteLine("Quäsßter") richtig geschrieben wird...

    ... bin etwas ratlos:(

    Gruß
    EASY

  9. Hallo @Neo,

    das einzige große Problem, das ich mit der Schnittstelle momentan habe ist, daß Umlaute und Sonderzeichen als \uxxxx dargestellt werden. Ich habe die Verbindung zum MBS im Visual Studio (VB), ZeroBrane Studio (lua) und mit PuTTY aufgebaut und komme immer zum gleichen Ergebnis.
    Da ich mir nicht anders zu helfen wußte, habe ich mir z.B. im Visual Studio einen "Übersetzer" gebastelt...
     

    If Result.Contains("\u") Then
      Dim s As String = Result
      Dim b As String
      Dim c As New List(Of String)
      c = Split(s, "\u").ToList
      For i = 0 To c.Count - 1
        b = c(i)
        If i > 0 Then
          Dim h As String = b.Substring(0, 4)
          c(i) = c(i).Replace(h, Char.ConvertFromUtf32(Convert.ToInt32(h, 16)))
        End If
      Next
        Result = String.Join("", c)
    End If

    ... was prinzipiell natürlich nur eine Notlösung ist.

    Woran kann das liegen? (ich habe in keinem anderen Programm ein Problem mit Umlauten und Sonderzeichen...) [Windows 11 pro]

    Gruß
    EASY

  10. Hallo @Eggu,

    Bis zur Version V9 war die Referenzgeschwindigkeit für die Anzeige 100% 330 km/h. Somit konnte nur die Anzeige des Reglers begrenzt werden.

    In V9 entspricht 100% der eingestellten Höchstgeschwindigkeit das verbundenen Fahrzeugs. Damit ist es zwar möglich, daß 100% Anzeige auch 100% Regler entspricht. Somit muß also nicht die Anzeige des Reglers begrenzt werden, sondern nur die "richtige" Skala vorhanden sein. Hierfür muß allerdings die Animationsdefinition des Modells geändert werden. Der Nachteil ist, daß es prinzipiell 330 verschiedene Höchstgeschwindigkeiten gibt, die im Fahrzeug eingestellt werden können, was zu 330 Varianten des Modells führen würde (um es einmal etwas übertrieben darzustellen...)
    Um die Vielfalt zu begrenzen, müßte man sich also auf "Standard"-Höchstgeschwindigkeiten einigen, was (wie die Erfahrung zeigt9_9) nicht ganz einfach ist... da bestimmt noch jemand eine Lok findet, die mit max. 77km/h durch die Gegend fährt und möchte auch dies ganz genau angezeigt haben:P...

    Gruß
    EASY

  11. Hallo,

    vor 16 Stunden schrieb gmd:

    Was mir aufgefallen ist: wuerde nicht die werte zuruecksetzen wenn neue auswahl erfolgt, du hast ja einen button dafuer.
    Ein undo waere gut, objekte wieder entfernen, dann kann man verschiedene konfigurationen schnell ausprobieren.

    danke für den Vorschlag... es ist möglich beides umzusetzen.

     

    vor 16 Stunden schrieb gmd:

    Und noch eine frage bitte: Hast du das kommando 303 Gleis geometrie in der neuen schnittstelle gefunden. Ich meine nicht nur die laenge, die ist ja vorhanden, sondern alle gleissegmente. In der alten schnittstelle sind radius und angle fuer kurven nicht vorhanden, also habe ich diese durch die segmente berechnet.
    Ich finde aber keine funktion mit der ich die segmente bekomme um zum beispiel auch die verlegung des flexgleises zu erkennen. 

    Die neue Schnittstelle ist für solche Aktionen nicht mehr ausgelegt. Es gibt nur die in der wiki beschriebenen Kommandos. für Objekte.
    Weitere "Kommandos" gehen dann nur über "layout.invokeScript" und da ist der "Befehlssatz" auf die Möglichkeiten, die lua im MBS bietet, beschränkt.

    vor 16 Stunden schrieb gmd:

    Welche software verwendest du fuer deine plugins ?

    Da ich kein Programmierer bin, verwende ich Visual Basic im Visual Studio 2022. VB kannte ich schon etwas und ich wollte keine neue Programmiersprache lernen.

    Gruß
    EASY

  12. Hallo,

    Um mich mit der neuen Schnittstelle etwas vertraut zu machen, habe ich das Plugin "Objektreihen setzen" auf die JSON-Schnittstelle umgeschrieben und noch etwas erweitert.
    Bild001.thumb.jpg.09cfed1be391edc4794cc6919be41d0a.jpg

    Die Beschreibung in der "Hilfe":

    Zitat

    Plugin "Objektreihen-Setzen"                                                                  (by) EASY 05.2023

    1) Mir diesem Plugin können Objektreihen (Stapel) erzeugt werden.

    2) Das Grundobjekt kann als markiertes Objekt im MBS-Projekt übernommen werden.
       (Die Größe des Objektes wird angezeigt)

    4) Die Setzrichtung folgt der 3D-Drehung des Grundobjektes

    5) "Spalten" folgen der x-Ausrichtung, "Zeilen" folgen der y-Ausrichtung und "Lagen" folgen der z-Achse

    6) Der Abstand der Einzelobjekte innerhalb von "Spalten", "Zeilen" und "Lagen" kann eingestellt werden
     
    7) Die Setzrichtung von "Spalten", "Zeilen" und "Lagen" kann umgekehrt werden ("Richtung umkehren")

    8) Mit "Nach dem Setzen gruppieren [nicht gruppieren]" kann entschieden werden, ob nach dem Setzen
       der Stapel gruppiert werden soll.
       Unter "Gruppenname" kann der Name der Gruppe eingegeben werden

    9) Jedes Einzelobjekt des Stapels erhält den Namen des Grundobjektes mit dem Zusatz "(x)"
       (mit x = fortlaufende Zahl. Besteht die Zahl, wird von 2 beginnend die nächste freie Zahl gesucht)

    10) Wird gruppiert erhält jeder Stapel den Namen der unter "Gruppenname" eingegeben wurde.
        (Gleiche Namen erhalten einen Zusatz "[yyy]").
        (mit yyy = fortlaufende Zahl. Besteht die Zahl, wird von 2 beginnend die nächste freie Zahl gesucht)
        
    11) Es kann jedem Objekt des Stapels ein Schlagwort gegeben werden.

    12) Es kann jedem Objekt die Variable "_pos" gegeben werden.
        Die Variable gibt die Position innerhalb des Stapels wieder.

    13) Mit "Alle Werte zurücksetzen" werden die Anzahl der "Spalten", "Zeilen" und "Lagen" auf 1 gesetzt
        und die Abstände auf 0

    Hinweis: Das Grundobjekt ist nicht Bestandteil des Stapels !
             Es  wird nach dem Setzen vor den Stapel gesetzt (Spalte -1 ; Zeile  ; Lage 0) und markiert.

     

    ... wer mag, kann die Testversion gerne einmal testen.
    Als Entwurf hochgeladen 34C25CBF-1DA1-4F6E-9D22-36ECAB15CDE5 (bei "Plugins" unter "Suche" eingeben)

    Kommentare und Rückmeldungen... wie immer gerne.

    Gruß
    EASY

     

  13. Hallo @Neo,

    mal so als Überlegung:

    um nicht der Lästigkeit zu unterliegen eventuell eine sehr lange Kommandozeile erzeugen zu müssen, wäre es möglich, daß man einer bestehenden Gruppe Elemente hinzufügen kann. So könnte man auch (später) einer Gruppe Elemente hinzufügen, ohne daß man sie zuvor auflösen muß.
    Die gleiche Überlegung wäre auch beim Selektieren von Objekten (bei der alten Schnittstelle gab es dafür noch ein Parameter [Hinzufügen / nicht hinzufügen]...)

    P.S. kannst Du auch gerne in Feature Wünsche verschieben...

    Gruß
    EASY

  14. Hallo @Neo,

    Bei meinen Versuchen mit der Überarbeitung vom Plugin "Objektreihen Setzen" bin ich auf folgendes Problem gestoßen...
    Um eine Gruppe aus meinen Kopien zu erzeugen wird...
    {"jsonrpc": "2.0", "method": "editor.groupEntities", "params": [{"_class": "entity", "name": "20' Container (xxx)"}, {"_class": "entity", "name": "20' Container (xxx)"}, ... "id": 1}
    verwendet. Ich habe also x mal {"_class": "entity", "name": "20' Container (xxx)"} im Kommandostring.
    Ab einer bestimmten Anzahl steigt das System aus und gibt eine Fehlermeldung zurück.
    Bild001.jpg.ba219f3aa7896c5af7c9546921b19961.jpg

    Details:

    Informationen über das Aufrufen von JIT-Debuggen
    anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

    ************** Ausnahmetext **************
    System.IO.IOException: In die Übertragungsverbindung können keine Daten geschrieben werden: Eine bestehende Verbindung wurde softwaregesteuert
    durch den Hostcomputer abgebrochen. ---> System.Net.Sockets.SocketException: Eine bestehende Verbindung wurde softwaregesteuert
    durch den Hostcomputer abgebrochen
       bei System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
       bei System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size)
       --- Ende der internen Ausnahmestapelüberwachung ---

     

    Dies führt mich zu der Frage, ob es so etwas wie eine maximale Zeilenlänge für die Kommandozeile gibt? Oder kann es dafür noch andere Gründe geben?

    Gruß
    EASY

  15. Hallo,

    vor 43 Minuten schrieb Neo:

    du musst Sonderzeichen in deinem String (Objektname) escapen. Füge einen Backslash vor dem Hochkomma hinzu.

    {"jsonrpc": "2.0", "method": "layout.invokeScript", "params": "a=layout:getEntityByName('20\' Container') return a.transformation.position", "id": 1}

    ...führt leider nicht zum gewünschten Ergebnis...

    {"jsonrpc": "2.0", "method": "layout.invokeScript", "params": "a=layout:getEntityByName('20\\' Container') return a.transformation.position", "id": 1}

    ... dann kommt die Position zurück :)

    Gruß
    EASY

  16. Hallo @Neo,

    wenn ich über die Schnittstelle
    {"jsonrpc": "2.0", "method": "layout.invokeScript", "params": "a=layout:getEntityByName('Quader') return a.transformation.position", "id": 1}
    schicke, bekomme ich die Position dem "Quader" zurück.

    Wenn nun aber mein Objekt nicht Quader sondern 20' Container (1542D00E-B6E2-4B85-B23E-16CC8D183174) ist, müße ich doch
    {"jsonrpc": "2.0", "method": "layout.invokeScript", "params": "a=layout:getEntityByName('20' Container') return a.transformation.position", "id": 1}
    schicken (?)
    Dies ergibt aber eine Fehlermeldung (error:code:-32602 message:Invalid params) (für die ich sogar ein gewisses Verständnis entwickeln kann [ein ' zu viel])

    Wie bekomme ich nun die Position von 20' Container?

    Gruß
    EASY

  17. Hallo,

    vor 18 Stunden schrieb gmd:

    Welche aktion verwendest du zum einfuegen mit der neuen schnittstelle ? Habe ich noch nicht ausprobiert.

    mit {"jsonrpc": "2.0", "method": "editor.getEntityContentID", "params": {"_class": "entity", "name": "Quader"}, "id": 1}, kannst du die Content-ID eines Objektes ermitteln.

    ...oder indem du auf ein Katalogmodell einen Doppelklick machst und diese markierst und kopierst...
    Bild001.thumb.jpg.fc8c445cd160c8833345b8cc0420cee0.jpg

    Die Contend-ID entspricht Guid der alten Schnittstelle

    mit {"jsonrpc": "2.0", "method": "editor.createEntity", "params": "F38B36A9-E8A0-4943-B3D8-00D78185EDA9", "id": 1} wird ein neues Objekt aus dem Katalog erzeugt und an die Position 0,0,0 gesetzt.
    Hierfür gilt dies...

    Am 4.2.2025 um 18:18 schrieb EASY:

    Die neue Schnittstelle vergibt den Katalognamen (z.B. Quader) und wenn dieser schon existiert, mit einen Zusatz (z.B. Quader (1), Quader (2)...), somit ist dieses Objekt (prinzipiell vom Namen her) eindeutig.

    (Der Name ist ein Rückgabewert der Anweisung und kann z.B. für das Positionieren in lua genutzt werden)

    Wenn im Projekt schon ein Objekt mit dem Namen 'Quader' ist, kannst du mit
    {"jsonrpc": "2.0", "method": "editor.cloneEntity", "params": {"_class": "entity", "name": "Quader"}, "id": 1}
    eine Kopie erstellen. Das neue Objekt wird an die gleiche Position wie das Ursprungsobjekt gesetzt. Da ein Objekt mit dem Namen 'Quader' (logischerweise) schon existiert, wird der Kopie der Name 'Quader (2)' zugewiesen und einer weiteren Kopie 'Quader (3)'... (Der Name ist ein Rückgabewert der Anweisung und kann z.B. für das Positionieren in lua genutzt werden))

    Anmerkung: Die nächste freie Zahl von "(x)" wird ermittelt. Wenn die Objekte 'Quader (2)', 'Quader (3)', 'Quader (5)' schon existieren wird der nächsten Kopie (oder createEntity ) 'Quader (4)' und dann 'Quader (6)' zugewiesen... [das ist zumindest mein Erfahungswert...]

    Vielleicht mag @Neo, dies noch bestätigen oder berichtigen...
     

    vor 18 Stunden schrieb gmd:

    Ist das objekt selektiert nach der einfuegung ?

    nein (eine eventuell vorhandene Selektion bleibt erhalten)

    Gruß
    EASY

  18. Hallo,

    vor 6 Minuten schrieb bigrala:

    meine Absicht ist es, jedem Güterwagon, der einen bestimmten GK überfährt z.B. eine Zahl für ein Ziel übergeben.

    ... um einen Güterwagon von anderen Wagons zu unterscheiden geht das nur über eine Variable oder ein Schlagwort...

    vor 8 Minuten schrieb bigrala:

    Wenn ich Deinen Vorschlag richtig verstehe, dann müsste ich jedem Wagon auf der Anlage ein eigenes Schlagwort vergeben. Das klingt für mich sehr aufwendig

    deshalb mußt Du schon jedem Güterwagon das Schlagwort z.B. "Güterwagon" verpassen.

    vor 44 Minuten schrieb bigrala:

    kann man beim Überfahren eines Gleiskontaktes auch den entsprechenden Wagon ansprechen, z.B. im Wagon eine Zahl- oder Text-Variable hinterlegen und diese mit einem anderen GK wieder auslesen ? Wenn man das mit dem Auslöser macht, wird ja immer nur die Lok angesprochen.

     

    vor 11 Minuten schrieb bigrala:

    meine Absicht ist es, jedem Güterwagon, der einen bestimmten GK überfährt z.B. eine Zahl für ein Ziel übergeben.
    Diese Zahl soll dann bei der Zugzusammenstellnug ausgelesen werden und der entsprechende Weg auf ein bestimtes Gleis geschaltet werden.

    aus diesen beiden Beschreibungen ist nicht ganz eindeutig, wann Du die Variable setzen möchtest... befindet sich dabei der Wagon innerhalb eines Zugverbandes? ... wenn ja, dann geht es über die von @prinz vorgeschlagene Widerholung... wenn ein einzelner Wagon über einen Gleiskontakt rollt, dann ist der Auslöser der Wagon.

    Gruß
    EASY

  19. Hallo,

    vor 13 Stunden schrieb gmd:

    Will ich aber bestimmte objekte
    eindeutig identifizieren, dann um beim beispiel zu bleiben, positioniere ich 5 Quader und benenne sie eindeutig (@Quader1, usw), das ist bei mir eine automatische funktion.

    das ist auch der Lösungsansatz, den ich verfolge. Um das markierte Objekt eindeutig zu identifizieren, das markierte Objekt auslesen, überprüfen ob der Objektname mehrfach existiert, wenn ja, die Objekte umbenennen und dann das markierte Objekt wieder einlesen (die Selektion bleibt ja erhalten)... so habe ich dann eine eindeutige Zuordnung zum selektierten Objekt und dessen Name. Es ist eben nur etwas umständlich...

    vor 14 Stunden schrieb gmd:

    Du kannst ja jedes objekt mit Guid erzeugen und dabei einen name vergeben, aber nur mit der alten schnittstellen soviel ich weiss.

    direkt einen eigenen neuen Namen vergeben geht nur über die alte Schnittstelle. Die neue Schnittstelle vergibt den Katalognamen (z.B. Quader) und wenn dieser schon existiert, mit einen Zusatz (z.B. Quader (1), Quader (2)...), somit ist dieses Objekt (prinzipiell vom Namen her) eindeutig.
    (Das selbe Prinzip ist auch für das Klonen von Objekten gültig.)

    Der Hintergrund meiner Aktionen ist, daß ich (als Übung im Umgang mit der neuen Schnittstelle) meinen Plugin "Objektreihen setzen" auf die neue Schnittstelle umschreiben möchte. Hierbei ist es eben wichtig, daß vom "richtigen" 'Quader' ausgegangen wird, da die Objektreihe sonst an der falschen Stelle erzeugt wird, wenn mehrere 'Quader' existieren...

    Gruß
    EASY

  20. Hallo @Neo,

    Wenn ich z.B. 5 Quader mit dem Namen 'Quader' habe und einen davon markiere und über die Schnittstelle {"jsonrpc": "2.0", "method": "editor.getSelectedEntities", "id": 1} schicke, bekomme ich als Antwort, daß es sich um ein Objekt (_class:entity) mit dem Namen (name:) 'Quader' handelt.
    Ich möchte nun diesen Quader kopieren {"jsonrpc": "2.0", "method": "editor.cloneEntity", "params": {"_class": "entity", "name": "Quader"}, "id": 1}. Hier gebe an, daß ich ein Objekt mit dem Namen 'Quader' klonen möchte. Damit sinken meine Chancen, daß der "richtige" 'Quader' genommen wird (es existieren ja noch 4 andere 'Quader').

    Worauf ich hinaus möchte, ist die Frage, ob ich über die Schnittstelle (immer noch) darauf angewiesen bin, daß der Name des Objektes im Projekt nur einmal vorkommt um das Objekt erfolgreich zu klonen oder gibt es noch eine Möglichkeit zu differenzieren, welchen von der 5 'Quader' ich markiert habe?

    Gruß
    EASY

  21. Hallo,

    vor 26 Minuten schrieb prinz:

    Kann mich jemand wieder einnorden?

    Wenn man folgende Eingabe in der EV macht...

    Bild001.jpg.406feba37b207cf186b3c33fc236f74e.jpg

    ... und in lua übersetzen läßt...

    Bild002.jpg.502629a56834d826e631f0ad9f64293e.jpg

    sieht man den Unterschied.

    "Für Elemente in einer Liste" wird für die Iteration "in ipairs" übersetzt... diese Iteration ist in lua chronologisch

    "Für Elemente in einer Tabelle" wird für die Iteration "in pairs" übersetzt... diese Iteration ist in lua nicht zwingend chronologisch

    Da Du eine Liste angelegt hast... warum hast Du "Für Elemente in einer Tabelle" verwendet?

    Gruß
    EASY

×
×
  • Neu erstellen...