Volltextsuche Druckansicht Zurück Weiter
Inhalt Bedienung Befehle Beispiele  
Objektbefehle
Typbefehle
Allgemeine Objektbefehle
Objektvariable
Ereignisroutinen
Kontext
Station
Quelle
Routen
Job
Bedarf
Stochastik
Zeitplan
Schichtplan
Rüsten
Methode
Zielgröße
Ereignis
Takt
Modell
Log-Liste
Einfache Befehle
Schnittstellen
GUI-Befehle

2. 1. 3   Eigenschaftsvariable und Objektprozeduren

Die den Objekten zugeordneten Eigenschaftsvariablen sind Variable im Namensraum (namespace) des Objekts objCmd, auf die die Syntax des Tcl-Interpreters voll angewendet werden kann (z.B. set, incr, unset, append, lappend, ...). Die Eigenschaftsvariablen und Objektprozeduren werden im Modell abgespeichert. Das Anlegen des Namensraumes bzw. Operationen im Namensraum eines Objektes werden durch den Objektbefehl :: ermöglicht. Im Unterschied zum einfachen Zugriff auf eine namespace-Variable muss der doppelte Doppelpunkt von Leerzeichen umgeben sein.

 
objCmd ::?args?
Legt den Namensraum objCmd an, falls noch nicht vorhanden. args wird durch den Tcl-Interpreter in diesem Namensraum ausgeführt.
 
objCmd :: set var value
Belegt im Namensraum objCmd die Eigenschaftsvariable var mit dem Wert value. Namensraum und/oder Variable werden neu angelegt, falls sie nicht bereits existieren. Auf die Eigenschaftsvariable kann anschließend wie folgt zugegriffen werden: $::objCmd::var.
 
objCmd :: proc {procname} {parlist} {body}
Legt im Namensraum objCmd die Prozedur procname an. Namensraum und/oder Prozedur werden neu angelegt, falls sie nicht bereits existieren. Auf die Objektprozedur kann anschließend wie folgt zugegriffen werden: [::objCmd :: procname par1 par2 ...] .

Zur Veranschaulichung werden einige Beispiele für ein Objekt mit dem Objektbefehl machine1 gezeigt:

 
machine1 :: set var 10
Legt erforderlichenfalls einen Namensraum für das Objekt machine1 und eine Variable mit dem Namen var und dem Wert 10 an. (Leerzeichen vor und nach :: beachten!)
 
machine1 :: incr var

Erhöht den Wert der Objektvariable var um 1. Die Variable (und der Namensraum des Objekts) existiert bereits durch das vorhergehende Kommando. Der gleiche Effekt lässt sich auch mit folgendem Befehl erreichen: "incr machine1::var". Gegebenenfalls muss der Namensraum des Objektes extra adresseirt werden, falls man sich nicht im globalen Namensraum befindet: "incr ::machine1::var". Die Standardsyntax funktioniert dagegen unabhängig vom aktuellen Namensraum.
 
machine1 variables
Gibt eine Liste aller Eigenschaftsvariablen des Objekts machine1 aus. Das ist nahezu identisch mit "info vars ::machine1::*", jedoch wird hier der Namensraum ::machine1 vor jeden Variablennamen gesetzt.
 
machine1 :: unset var
Löscht die Eigenschaftsvariable var. Das ist identisch mit "unset ::machine1::var"
 
machine1 :: proc test {} {
      puts "Hello World"
   }
Legt erforderlichenfalls einen Namensraum für das Objekt machine1 und eine Prozedur mit dem Namen test ohne Parameter und dem Inhalt puts "Hello World" an. Wenn der Namensraum bereits existiert, kann die Funktion auch durch "proc ::machine1::test {} {puts "Hello World"}" angelegt werden.
 
machine1 :: rename test {}
Löscht die Objektfunktion test.
 
Alle Eigenschaftsvariablen und Objektprozeduren werden in den Modelldateien abgespeichert und sind nach dem erneuten Laden des Modells wieder verfügbar. Neben den Objekten mit eigenen Objektbefehlen können auch untergeordneten Objekte, wie z.B. Arbeitsgänge und Spezifikatoren von Technologien, Variable und Prozeduren zugeordnet werden.

tech1 pass 3 :: set ag 20

Legt erforderlichenfalls einen Namensraum für den Arbeitsgang 3 der Technologie tech1 und eine Eigenschaftsvariable mit dem Namen ag und dem Wert 20 an. Auf die Variable kann anschließend wie folgt zugegriffen werden:  $::tech1::pass::3::ag

tech1 pass 3 :: unset ag
Löscht die Objektvariable ag des 3. Arbeitsgangs der Technologie tech1.

tech1 spec 0 :: set text "Beschreibung"
Legt erforderlichenfalls einen Namensraum für den Spezifikator 0 der Technologie tech1 und eine Eigenschaftsvariable mit dem Namen text und dem Wert Beschreibung an. Auf die Variable kann wie folgt zugegriffen werden:  $::tech1::spec::0::text

 

simcron MODELLER 3.4
Copyright © 2025 simcron
21.05.2025