Das LOU-Datei Format

Top  Previous  Next

Konventionen:

Um die Beschreibung im Nachfolgenden etwas zu vereinfachen, legen wir zuvor einige Konventionen in der Interpretation der Graphiken und des Textes fest.

 

:=

Zuweisungsoperator (Definition)

 

Text

zwingend notwendige Komponente

 

Text

optionale Komponente

 

Text

Fixer Identifier / Kennung

 

Text

Erklärung / Erläuterung

 

Text

Beliebige Sequenz

 

 

Text

 

Zusammengehörige Komponenten

 

 

 

Text

 

 

Getrennte Komponenten

 

 

 

 

 

Die Trennung einzelner Komponenten erfolgt durch ein oder

mehrere Leerzeichen.

 

Text

:=

Text

oder

Text

oder

Text

oder

Text

.

Großbuchstaben

:=

{A, ..., Z}

 

Buchstaben

:=

{A, ..., Z, a, ..., z}

 

ASCII

:=

Alle darstellbaren ASCII-Zeichen (Code 32-127, 160-255)

 

Ziffern

:=

{0, 1, ... 9}

 

Hex

:=

{0, 1, ... 9, A, ..., F}

 

Vorzeichen

:=

+ oder -

 

Punkt

:=

{.}

 

Leerzeichen

:=

{ }

! Keine Leere Menge, sondern ein Space

 

{Menge}n

:=

genau n beliebige Zeichen aus der Menge

 

{Menge}[n]

:=

maximal n beliebige Zeichen aus der Menge

 

¥

:=

unendlich oft (wiederholen)

 

Alle nichtaufgeführten Darstellungen oder Bezeichnungen ergeben sich aus dem Zusammenhang bzw. sind in Ihrer Bedeutung selbsterklärend.

 

Datei-Format:

Eine im LOU-Format geschriebene Datei besteht immer aus den zwei Komponenten Kopfabschnitt und Dateiabschluß. Optional kann ein Datenabschnitt mit eingefügt werden. Das Datei-Format besitzt somit folgende Grundstruktur:

Kopfabschnitt

 

Datenabschnitt

 

Dateiabschluß

 

Jeder dieser Komponenten bildet ein für sich abgeschlossenen Bereich, der sich wiederum in weitere Unterkomponenten zergliedert. Diese seien im folgenden abschnittsweise ausführlich dargestellt.

 

Kopfabschnitt

Der Kopfabschnitt (oft auch als Header-Abschnitt bezeichnet) untergliedert sich in zwei weitere Unterabschnitte, den eigentlichen Kopfdaten und den optional anzugebenden Kopfinformationen:

 

Kopfabschnitt

:=

Kopfdaten

 

Kopfinformationen

Die Kopfdaten besitzen folgenden sequentiellen Aufbau:

 

Kopfdaten

:=

&H

 

Name

 

Typ

 

X

 

Y

 

DX

 

DY

 

Text-Maßstab

 

Auflösung

 

Flag

Statt der Kennung &H ist auch die Kennung &H1 erlaubt (In Anlehnung an die Kennung &H3 der Kopfinformationen – siehe hierzu auch den sequentiellen Aufbau der Kopfinformationen). Beide Angaben sind äquivalent zueinander und können deshalb beliebig gegeneinander ausgetauscht werden.

Die einzelnen Sequenzen der Kopfdaten haben folgende Bedeutung / Erklärung:

 

Name

:=

{Ziffern, Großbuchstaben, Leerzeichen, Punkt}9

 

Die Sequenze Name ist ein Textfeld mit genau neun Zeichen. Das Feld beschreibt den Plannamen des zugrundeliegenden Plans.

 

Typ

:=

T

{Ziffern}[3]

 

Die Sequenze Typ ist ein optionales Feld, das mit dem fixen Identifier T beginnt, an den dann maximal drei Ziffern angehängt werden können. Das Feld beschreibt den Plantypus des zugrundeliegendes Plans.

 

X

:=

Vorzeichen

{Ziffern}[9]

 

 

 

 

 

 

Y

:=

Vorzeichen

{Ziffern}[9]

 

Die Sequenzen X, Y sind Ziffernfelder mit einem optionalen Vorzeichen gefolgt von maximal neun Ziffern. Die Felder beschreiben die Koordinaten der linken unteren Ecke des zugrundeliegenden Plans.

 

DX

:=

{+}

{Ziffern}[7]

 

 

 

 

 

 

DY

:=

{+}

{Ziffern}[7]

 

Die Sequenzen DX, DY sind Ziffernfelder mit einem optionalen positiven Vorzeichen gefolgt von maximal sieben Ziffern. Die Felder beschreiben die Ausdehnung des zugrundeliegenden Plans in X- bzw. Y-Richtung.

 

Text-Maßstab

:=

{Ziffern }[6]

 

Die Sequenze Text-Maßstab ist ein Ziffernfeld mit maximal sechs Ziffern. Das Feld beschreibt den Skalierungsfaktor für Texthöhen und Symbolgrößen des zugrundeliegenden Plans. Die Angaben beziehen sich auf 1/100 mm.

 

Auflösung

:=

{Ziffern }[6]

 

Die Sequenze Auflösung ist ein Ziffernfeld mit maximal sechs Ziffern. Das Feld beschreibt die Maßeinheit zur Verwaltung / Bearbeitung aller Datenbankkoordinaten des zugrundeliegenden Plans.

 

Flag

:=

R

 

Die Sequenze Flag ist ein optionales Kennungsfeld mit dem festen Kennbuchstaben R. Das Feld beschreibt die Interpretation der Koordinaten im Datenabschnitt des LOU-Formats. Ist die Sequenze Flag vorhanden, so werden die Koordinaten als Relativ-Koordinaten bezüglich der linken unteren Ecke des Plans interpretiert, ansonsten als Absolutkoordinaten.

 

Die Kopfinformationen besitzen folgenden sequentiellen Aufbau:

 

Kopfinformationen

:=

&H3

 

{Systeminfos, Benutzerinfos}¥

 

Nach der festen Kennung &H3 können beliebig viele Informationen aus der Menge der Systeminfos oder Benutzerinfos aufgelistet werden.

Die Systeminfos gliedern sich wiederum wie folgt:

 

Systeminfos

:=

{$OK-Info, $ST-Info, Punkt-Infos}

 

 

$OK-Info

:=

$OK

 

Durch das Vorhandensein dieses Eintrags wird dokumentiert, daß die Daten durch eine Version jünger oder gleich der Version 5.3 von Gradis2000 erstellt wurden.

 

$ST-Info

:=

$ST

 

MK-Key

 

ND-Key

 

ADI

 

MK-Key

:=

MK

{8000, ..., 9998}

 

Dieses Feld beschreibt den höchsten vorhandenen freien MASTER-KEY (dieser muß im Bereich zwischen 8000 und 9998 liegen). Achtung! In einigen Dateien ist der undokumentierte Eintrag von fünf Ziffern zu finden.

 

ND-Key

:=

ND

{0,1}

 

Dieses Feld beschreibt den Schlüssel für die Datenmanipulation unter Netzwerken (dieser darf nur den Wert 0 oder 1 annehmen).

 

ADI

:=

AR:

{Ziffern, Großbuchstaben, Punkt, $}3

 

Dieses Feld beschreibt die Identifikation des Archiv-Devices (dieser muß aus genau drei Zeichen bestehen).

 

Die beiden Einträge $OK-Info und $ST-Info dürfen nur einmal vorkommen. Zudem stehen sie derart im Zusammenhang, daß das $ST-Info nur berücksichtigt (gelesen) wird, falls das $OK-Info vorhanden ist.

 

Punkt –Infos

:=

.D

Großbuchstabe

 

Maßstab

 

Limit

 

CX

 

CY

 

DX

 

DY

 

PX

 

PY

 

Die Punkt-Infos werden im wesentlichen für Detail-Fenster verwendet. Die einzelnen Sequenzen ergeben sich wie folgt:

 

Maßstab

:=

{Ziffern}[5]

 

Die Sequenze Maßstab ist ein Ziffernfeld mit maximal fünf Ziffern. Das Feld beschreibt den Ausschnittsmaßstab eines Detail-Fensters. Wird für den Maßstab der Wert 0 eingetragen und handelt es sich bei der Anfangskennung um .DA, ..., .DD so handelt es sich um ein fix positioniertes Fenster bei dem die Sequenzen PX und PY entfallen und der Limit-Eintrag ebenfalls den Wert 0 bekommt.

 

Limit

:=

{Ziffern}[5]

 

Die Sequenze Limit ist ein Ziffernfeld mit maximal fünf Ziffern. Das Feld beschreibt das Limit eines Detail-Fensters.

 

CX

:=

Vorzeichen

{Ziffern}[9]

 

 

 

 

 

 

CY

:=

Vorzeichen

{Ziffern}[9]

 

Die Sequenzen CX, CY sind Ziffernfelder mit einem optionalen Vorzeichen gefolgt von maximal neun Ziffern. Die Felder beschreiben den Mittelpunkt des Detail-Fensters.

 

DX

:=

{+}

{Ziffern}[5]

 

 

 

 

 

 

DY

:=

{+}

{Ziffern}[5]

 

Die Sequenzen DX, DY sind Ziffernfelder mit einem optionalen positiven Vorzeichen gefolgt von maximal fünf Ziffern. Die Felder beschreiben die Ausdehnung des Detail-Fensters in X- und Y-Richtung.

 

PX

:=

Vorzeichen

{Ziffern}[9]

 

 

 

 

 

 

PY

:=

Vorzeichen

{Ziffern}[9]

 

Die Sequenzen CX, CY sind Ziffernfelder mit einem optionalen Vorzeichen gefolgt von maximal neun Ziffern. Die Felder beschreiben den Positionspunkt des Detail-Fensters.

 

Der Bezug der Koordinatenangabe in den obigen Feldern ist abhängig von Flag-Eintrag in der Sequenz der Kopfdaten (Relativ- oder Absolutkoordinaten).

Die .D - Sequenzen werden ebenfalls nur berücksichtigt (gelesen), falls die $OK - Sequenz gesetzt ist.

Die Benutzerinfos gliedern sich wie folgt:

 

Benutzerinfos

:=

Name

 

Eintrag

 

Name

:=

{Ziffern, Großbuchstaben, Punkt, $}3

 

Die Sequenze Name ist ein Feld mit genau drei Zeichen. Das Feld beschreibt den Namen des Benutzerinfos.

 

Eintrag

:=

%

{ASCII}16

%

 

Die Sequenze Eintrag ist ein Feld mit maximal sechszehn darstellbaren ASCII-Zeichen, welche durch zwei %-Marken begrenzt sind. Das Feld beschreibt den Eintrag des Benutzerinfos.

 

Die Namensvergabe ist prinzipiell frei, sie unterliegt nur der Einschränkung, daß kein $-Zeichen und kein Punkt als erstes Zeichen stehen darf, da diese für die Systeminfos reserviert sind.

Datenabschnitt

Der Datenabschnitt besteht aus beliebig vielen Sequenzen von Objektdaten und den zugehörigen Elementdaten. Dabei ist die Angabe von Elementdaten jeweils optional.

 

Datenabschnitt

:= {

Objektdaten

 

Elementdaten

}¥

Die Objektdaten besitzen folgenden sequentiellen Aufbau:

 

Objektdaten

:=

&O

 

ID

 

{

Schlüssel

}[6]

 

ID

:=

N

{Ziffern}[5]

 

Die optionale Sequenze ID ist ein Feld mit der Kennung N, gefolgt vom maximal fünf Ziffern, welche die interne Objektnummer repräsentiert.

 

Schlüssel

:=

{Ziffern}[4]

 

Die Sequenze Schlüssel ist ein Feld mit maximal vier Ziffern. Das Feld beschreibt die Objektschlüssel.

Die Elementdaten, welche optional angegeben werden können, besitzen folgenden Aufbau:

 

Elementdaten

:=

{Linienelement, Symbolelement, Textelement, Attribute}¥

Prinzipiell können beliebig viele Elemente in beliebiger Reihenfolge angegeben werden. Die einzelnen Elemente seien im folgenden näher beschrieben.

Linienelemente

Die Linienelemente besitzen folgenden sequentiellen Aufbau:

 

Linienelement

:=

{2D-Linienelement, 3D-Linienelement}1

 

2D-Linienelement

:=

&L

 

DK

{

Punktinfo

 

X

 

Y

}¥

 

3D-Linienelement

:=

&L3

 

DK

{

Punktinfo

 

X

 

Y

 

Z

}¥

Bei Linienelementen kann es sich also um 2D- oder 3D-Elemente handeln. Dies wirkt sich aber nur in den eigentlichen Punktinformationen aus. Die einzelnen Sequenzen besitzen folgenden sequentiellen Aufbau:

 

DK

:=

K

{Ziffern}[3]

FS

 

 

FS

:=

/

{Ziffern}[2]

 

Die Sequenze DK ist ein Feld mit der festen Kennung K, gefolgt von einer maximal dreistelligen Zahl, die den Zeichenschlüssel repräsentiert. Optional kann das Trennzeichen / gefolgt von einer zweistelligen Zahl folgen, die den Flächenschlüssel repräsentiert.

 

 

 

 

 

 

 

Punktinfo

:=

Verbindung

KS

 

Verbindung

:=

{

P

,

L

,

R

,

C

}1

 

 

KS

:=

/

{Hex}1

{Hex}1

 

Die Sequenze Punktinfo ist ein Feld das Zusatzinformationen zu einem Punkt des Linienelements trägt. Es besitzt als erste Kennung einen der angegebenen Buchstaben, die die Linienverbindung wiederspiegeln. Optional kann durch den Seperator / getrennt die Punktklasse und nachfolgend das Punktsymbol angegeben werden. Punktklasse und Punktsymbol werden jeweils durch eine hexadezimale Zahl angegeben.

 

 

 

 

 

 

 

 

X

:=

Vorzeichen

{Ziffern}[9]

 

 

 

 

 

 

Y

:=

Vorzeichen

{Ziffern}[9]

 

 

 

 

 

 

Z

:=

Vorzeichen

{Ziffern}[9]

 

Die Sequenzen X, Y, Z sind Ziffernfelder mit einem optionalen Vorzeichen gefolgt von maximal neun Ziffern. Die Felder beschreiben die Position des Linienpunkts. Die Z-Sequenz wird nur für die 3D-Linienelemente benötigt! Die Angaben der Koordinaten verstehen sich als Relativkoordinaten, falls das entsprechende Flag in den Kopfdaten gesetzt ist – ansonsten als Absolutkoordinaten.

Symbolelemente

Die Symbolelemente besitzen folgenden sequentiellen Aufbau:

 

Symbolelement

:=

&S

 

DK

 

Symbol

 

X

 

Y

 

W

mit

 

DK

:=

K

{Ziffern}[3]

FS

 

 

FS

:=

/

{Ziffern}[2]

 

Die Sequenze DK ist ein Feld mit der festen Kennung K, gefolgt von einer maximal dreistelligen Zahl, die den Zeichenschlüssel repräsentiert. Optional kann das Trennzeichen / gefolgt von einer zweistelligen Zahl folgen, die den Flächenschlüssel repräsentiert.

 

 

 

 

 

 

 

Symbol

:=

{Ziffern}[3]

 

Die Sequenze Symbol ist ein Feld mit maximal 3 Ziffern. Es repräsentiert die Symbolnummer.

 

X

:=

Vorzeichen

{Ziffern}[9]

 

 

 

 

 

 

Y

:=

Vorzeichen

{Ziffern}[9]

 

Die Sequenzen X, Y sind Ziffernfelder mit einem optionalen Vorzeichen gefolgt von maximal neun Ziffern. Die Felder beschreiben die Position des Symbols. Die Angaben der Koordinaten verstehen sich als Relativkoordinaten, falls das entsprechende Flag in den Kopfdaten gesetzt ist – ansonsten als Absolutkoordinaten.

 

W

:=

{Ziffern}[6]

 

Die Sequenze W ist ein Ziffernfeld mit maximal sechs Ziffern. Das Feld beschreibt den positiven Richtungswinkel des Symbols bezüglich der X-Achse. Die Angaben des Winkels findet in der Einheit von 1/100000 Radian statt.

 

 

 

Textelemente

Die Textelemente besitzen folgenden sequentiellen Aufbau:

 

Textelement

:=

{Norm-Text. Fix-Text, Attribut-Text}1

 

Norm-Text

:=

&T

 

DK

 

Textinfo

 

X

 

Y

 

W

 

Text

 

Fix-Text

:=

&T2

 

DK

 

Textinfo

 

X

 

Y

 

W

 

Text

 

L

 

Attribut-Text

:=

&TA

 

DK

 

Textinfo

 

X

 

Y

 

W

 

Liste

Bei Textelementen kann es sich somit um Norm-, Fix- oder Attribut-Texte handeln. Dies wirkt sich aber nur in den eigentlichenTexten aus:

 

DK

:=

K

{Ziffern}[3]

FS

 

 

FS

:=

/

{Ziffern}[2]

 

 

 

 

 

Die Sequenze DK ist ein Feld mit der festen Kennung K, gefolgt von einer maximal dreistelligen Zahl, die den Zeichenschlüssel repräsentiert. Optional kann das Trennzeichen / gefolgt von einer zweistelligen Zahl folgen, die den Flächenschlüssel repräsentiert.

 

 

 

 

 

 

 

 

 

 

 

 

Textinfo

:=

{Ziffern}[5]

TS

 

TS

:=

/

{Ziffern}1

Format

 

 

Format

:=

{

L

,

M

,

R

}1

 

 

 

 

 

 

 

 

 

 

Die Sequenze Textinfo ist ein Feld, beginnend mit maximal fünf Ziffern, welche die Texthöhe in 1/100 Millimeter bzgl. des in den Kopfdaten angegebenen Textmaßstabs repräsentieren. Optional kann sich das Trennzeichen / anschließen, gefolgt von einer Ziffer, welche die Textart repräsentiert und gefolgt von einem der Zeichen L, M oder R, welches die Textausrichtung (Links, Mittig, Rechts) repräsentiert.

Man beachte, daß die Information für die Textausrichtung nur interpretiert wird, falls die Sequenze OK-Info in den Kopfinformationen vorhanden ist – ansonsten wird die Ausrichtung automatisch linksbündig angenommen.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

:=

Vorzeichen

{Ziffern}[9]

 

 

 

 

 

 

Y

:=

Vorzeichen

{Ziffern}[9]

 

Die Sequenzen X, Y sind Ziffernfelder mit einem optionalen Vorzeichen gefolgt von maximal neun Ziffern. Die Felder beschreiben die Position des Textes. Die Angaben der Koordinaten verstehen sich als Relativkoordinaten, falls das entsprechende Flag in den Kopfdaten gesetzt ist – ansonsten als Absolutkoordinaten.

 

 

 

 

 

W

:=

{Ziffern}[6]

 

Die Sequenze W ist ein Ziffernfeld mit maximal sechs Ziffern. Das Feld beschreibt den positiven Richtungswinkel des Textes bezüglich der X-Achse. Die Angaben des Winkels findet in der Einheit von 1/100000 Radian statt.

 

 

 

 

Text

:=

%

{ASCII}[255]

%

 

Die Sequenze Text ist ein Textfeld mit maximal 256 Zeichen, welches durch das Kennungszeichen % beidseitig begrenzt wird. Das Feld beschreibt den Texteintrag.

 

 

 

 

 

 

L

:=

{Ziffern}[6]

 

Die Sequenze L ist ein Ziffernfeld mit maximal sechs Ziffern. Das Feld beschreibt die Standlinienlänge für Texte mit fester Länge.

 

 

 

 

Liste

:=

%

Label

Labelliste

%

mit

Labelliste

:=

{

,

Label

}9

 

 

Label

:=

{Ziffern, Großbuchstaben, Punkt, $}[3]

 

Die Sequenze Liste ist eine Auflistung von maximal zehn Attribut-Labeln, welche durch das Zeichen , getrennt sind. Die Auflistung wird beidseitig durch das Kennungszeichen % begrenzt. Die einzelnen Attribut-Label bestehen aus maximal drei Zeichen aus der oben angeführten Menge.

 

 

 

 

 

 

 

 

 

Attribute

Die Attribute besitzen folgenden sequentiellen Aufbau:

 

Attribute

:=

&A

 

AName

 

Text

mit

 

Aname

:=

{Ziffern, Großbuchstaben, Punkt, $}3

 

Die Sequenze AName ist ein Textfeld mit genau drei Zeichen. Es repräsentiert den Attributnamen.

 

 

 

 

Text

:=

%

{ASCII}[255]

%

 

Die Sequenze Text ist ein Textfeld mit maximal 256 Zeichen, welches durch das Kennungszeichen % beidseitig begrenzt wird. Das Feld beschreibt den Attributwert.

 

 

 

 

 

Dateiabschluß

Der Dateiabschluß wird durch die feste Kennung &E gekennzeichnet:

 

Dateiabschluß

:=

&E

Jede Datei im LOU-Format muß diese Ende-Kennung enthalten!

 

Beispiel:

&H Test T150 10000 15000 5000 5000 200 1000 R

&H3 $OK

$ST MK08145 ND1

BSP %Beliebiger Text%

&O N11 1004 1010 1021

&L K123/12

P/4F 1050 1500

L 1100 2000 580 2112 608 2112

610 2423 980 1701

R/B 1100 1605

&L K24

P 5312 4333

L 5400 4804 5477 4000

C/A3 5500 5000 5550 5020 5600 5040

5650 5060 5700 5080 5750 5100

5800 5150

&S K24/12 132 4811 3010 0

&S 133 4822 3010 81804

&O 1011

&L3 K7

P/5 1945 200 340

L 1960 250 500 1975 420 812

1990 390 1003

&T K5/33 1000/4M 2000 1500 12000 %Mein Text%

&O 1033 1034 1035 1036 1037 1038

&TA 1000 2500 800 0 %TST,AB1,AB2%

&A TST %Dies ist ein Test%

AB1 %34567,34%

AB2 %DM%

&O 1001

&T2 K11/9 500/6 2100 12000 %Feste Länge% 1000

&E