|
Autor
|
Thema: Benutzerdefinierte Attribute BUs (1528 / mal gelesen)
|
SGl Mitglied
 Beiträge: 3 Registriert: 04.12.2020
|
erstellt am: 04. Dez. 2020 14:52 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich habe eine Frage bezüglich den benutzerdefinierten Attributen der BUs. Zunächst habe ich eine Tabelle mit Zykluszeiten (t_cycle). (Spalte 1: integer; Spalte 2 string; Spalte 3 - Ende: integer) Bei dem BU habe ich im "Reiter" benutzerdefiniert ein Attribut mit dem Namen cycle (Datentyp: table) angelegt. In der Tabelle entsprechen die Datentypen der Spalten den Datentypen der t_cycle. Nun möchte ich diese Tabelle entsprechend dem Namen des BU mit der dazugehörigen Zeile aus der Tabelle t_cycle befüllfen. Dabei würde ich Zelle für Zelle vorgehen. Ich habe die folgende Vorgehensweise auch schon dazu benutzt die Werte für Variabeln automatisch aus einer Tabelle zu schreiben. Bei dem neuen Beispiel wird mir aber immer der Fehler "kein gültiger Pfad" angezeigt. var y : integer var workpiece_cycle : object for y:= 1 to .Models.t_cycle.YDim workpiece_lot := str_to_obj(".Benutzerobjekte." + .Models.t_cycle[2,y] + ".cycle[1,1]") workpiece_lot := .Models. t_cycle[3,y] next Über Hilfe würde ich mich sehr freuen!
Vielen Dank im Voraus! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
  
 Beiträge: 949 Registriert: 29.03.2016
|
erstellt am: 04. Dez. 2020 19:45 <-- editieren / zitieren --> Unities abgeben:          Nur für SGl
Moin, werde aus dienem Code nicht wirklich schlau.. deshalb mal einfach kommentiert Code:
var y : integer var workpiece_cycle : object //unten heißt deine Variable "workpiece_lot" for y:= 1 to .Models.t_cycle.YDim //also Plant Sim auf englisch eingestellt, oder selbst in Bibliothek ".Models" angelegt workpiece_lot := str_to_obj(".Benutzerobjekte." + .Models.t_cycle[2,y] + ".cycle[1,1]") /* also das objekt ist in der Tabelle von BE in Zelle [1,1] hinterlegt --> im Text oben schreibst du, dass "Spalte 1: integer;" ist Existiert .Benutzerobjekte bei dir in der Klassenbibliothek-->ist eig. in englisch dann UserObjects */ workpiece_lot := .Models. t_cycle[3,y] /* hier versuchst du der internen Variable ein integer zuzuweisen...ich vermute mal: es ist nur nicht vollständig eingetippt */ next
Also du hast eine Tabelle in der KlassenBibliothek. Wenn du aus dieser Tabelle auf das BE, welches in Modellen, während der Simulation erzeugt wurde, zugreifen willst, dann heißt das BE beispielsweise ".BEs.Fördergut:1". Zitat: Bei dem neuen Beispiel wird mir aber immer der Fehler "kein gültiger Pfad" angezeigt.
Zusätzlich wird die Zeile, wo der Fehler auftritt markiert. Der Fehler sagt aus, dass die von dir angegebene Pfad nicht richtig ist. D.h. das Objekt existert nicht unter dieser Adresse. vG Nadin ------------------ Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten. (Matthew Austern) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SGl Mitglied
 Beiträge: 3 Registriert: 04.12.2020
|
erstellt am: 04. Dez. 2020 20:53 <-- editieren / zitieren --> Unities abgeben:         
Hallo, da war in der Tat noch ein copy/paste Fehler bei der Variable drin. Mein PlantSim ist auf englisch eingestellt. Das Benutzerobjekte hat es selbstständig aber mit dem deutschen Namen erstellt... Habe mal ein Bild angefügt, vielleicht wird es dann verständlicher. Bei den Bezügen hat sich bisschen was geändert. Grundsätzlich ist das Ziel entsprechend dem Namen des BU aus der Tabelle (unter Methods)die entsprechende Zeile in das Attribut zu schreiben. Dabei wäre ich Zelle für Zelle vorgegangen. Bin für andere Lösungsansätze auch offen. Danke! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
  
 Beiträge: 949 Registriert: 29.03.2016
|
erstellt am: 04. Dez. 2020 21:58 <-- editieren / zitieren --> Unities abgeben:          Nur für SGl
fast... die Attribute - also beispielsweise die Tabelle in dem Objekt - sind selbst keine Objekte. Code:
var _tab : object := .Models.Methods.t_lot for var i:= 1 to _tab.ydim var workpiece : object := str_to_obj(".Benutzerobjekte." + _tab[2,i] ) //das BE var workpiece_lot : table := workpiece.lot; //die Tabelle in BE workpiece.lot[1,1] := _tab[3,i] workpiece_lot[1,1] := _tab[3,i] next
------------------ Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten. (Matthew Austern) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
SGl Mitglied
 Beiträge: 3 Registriert: 04.12.2020
|
erstellt am: 04. Dez. 2020 23:38 <-- editieren / zitieren --> Unities abgeben:         
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |