SCHEMA Allgemeine_Geometrieobjekte;

REFERENCE FROM Entwurf (DGM);

REFERENCE FROM Geometrieschema (Flaechenobjekt_Modell, Linienobjekt_Modell, Punktobjekt_Modell);

REFERENCE FROM Allgemeine_Objekte (Winkel, Groesse);

ENTITY Eigensch_allgem_Geometrieobj
ABSTRACT SUPERTYPE OF (ONEOF(allgemeines_Punktobjekt , allgemeines_Linienobjekt , allgemeines_Flaechenobjekt , ALKIS_Objekt_Punkt , ALKIS_Objekt_Linie , ALKIS_Objekt_Flaeche ));
--- Attribute :
    Fachbedeutung: OPTIONAL SET [1: ?] OF STRING;
    Bezeichnung: OPTIONAL STRING;
    Informationstext: OPTIONAL SET [1: ?] OF STRING;
--- Relationen :
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY allgemeines_Punktobjekt
SUBTYPE OF (Punktobjekt_Modell, Eigensch_allgem_Geometrieobj);
--- Attribute :
--- Relationen :
    hat_Symbol: OPTIONAL SET [1: ?] OF Symbol;
INVERSE
    in_Dreieck: SET [0: ?] OF Dreieck FOR hat_Punkte;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Symbol
SUBTYPE OF (Punktobjekt_Modell);
--- Attribute :
    Symbolbedeutung: STRING;
    Breite: Groesse;
    Hoehe: Groesse;
    Einheit: Einheit;
    Drehwinkel: Winkel;
--- Relationen :
INVERSE
    mit_Bezug_auf_allg_Punktobjekt: SET [0: 1] OF allgemeines_Punktobjekt FOR hat_Symbol;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Einheit;
--- Attribute :
    Kennung: INTEGER;
    Einheit: STRING(4);
--- Relationen :
UNIQUE
    Kennung_eindeutig: Kennung;
END_ENTITY;


(* zulaessige Werte, in der Form (Kennung,Langtext):

   (0,'Welt')
   (1,'mm')

*)

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY allgemeines_Linienobjekt
SUBTYPE OF (Linienobjekt_Modell, Eigensch_allgem_Geometrieobj);
--- Attribute :
--- Relationen :
INVERSE
    in_Boeschung: SET [0: ?] OF Boeschungsschraffen FOR hat_Linie;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Boeschungsschraffen;
--- Attribute :
    Boeschungsbedeutung: STRING;
--- Relationen :
    hat_Linie: SET [1: ?] OF allgemeines_Linienobjekt;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY allgemeines_Flaechenobjekt
SUBTYPE OF (Flaechenobjekt_Modell, Eigensch_allgem_Geometrieobj);
--- Attribute :
--- Relationen :
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY ALKIS_Objekt_Punkt
SUBTYPE OF (Punktobjekt_Modell, Eigensch_allgem_Geometrieobj);
--- Attribute :
--- Relationen :
    hat_ALKIS_Identifikator: ALKIS_Identifikator;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY ALKIS_Objekt_Linie
SUBTYPE OF (Linienobjekt_Modell, Eigensch_allgem_Geometrieobj);
--- Attribute :
--- Relationen :
    hat_ALKIS_Identifikator: ALKIS_Identifikator;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY ALKIS_Objekt_Flaeche
SUBTYPE OF (Flaechenobjekt_Modell, Eigensch_allgem_Geometrieobj);
--- Attribute :
--- Relationen :
    hat_ALKIS_Identifikator: ALKIS_Identifikator;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY ALKIS_Identifikator;
--- Attribute :
    Identifikator: STRING;
--- Relationen :
INVERSE
    von_ALKIS_Objekt_Punkt: SET [0: ?] OF ALKIS_Objekt_Punkt FOR hat_ALKIS_Identifikator;
    von_ALKIS_Objekt_Linie: SET [0: ?] OF ALKIS_Objekt_Linie FOR hat_ALKIS_Identifikator;
    von_ALKIS_Objekt_Flaeche: SET [0: ?] OF ALKIS_Objekt_Flaeche FOR hat_ALKIS_Identifikator;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Dreieck;
--- Attribute :
    Dreiecksbedeutung: STRING;
--- Relationen :
    hat_Punkte: LIST [3: 3] OF allgemeines_Punktobjekt;
    hat_Seiteneigenschaften: LIST [3: 3] OF Seiteneigenschaft;
INVERSE
    in_DGM: DGM FOR hat_Dreiecke;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Seiteneigenschaft;
--- Attribute :
    Kennung: INTEGER;
    Seiteneigenschaft: STRING(13);
--- Relationen :
UNIQUE
    Kennung_eindeutig: Kennung;
END_ENTITY;


(* zulaessige Werte, in der Form (Kennung,Langtext):

   (1,'normale Seite')
   (2,'Bruchlinie')
   (3,'Formlinie')

*)

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Beschriftung
SUBTYPE OF (Punktobjekt_Modell);
--- Attribute :
    Text: RTF;
    Textbedeutung: STRING;
    Breite: Groesse;
    Hoehe: Groesse;
    Einheit: OPTIONAL Einheit;
    Drehwinkel: OPTIONAL Winkel;
    Textneigung: OPTIONAL Winkel;
    Schriftart: OPTIONAL STRING;
    Kasten: OPTIONAL BOOLEAN;
    Fahne: OPTIONAL Fahne;
    vertikale_Ausrichtung: OPTIONAL vertikale_Ausrichtung;
    horizontale_Ausrichtung: OPTIONAL horizontale_Ausrichtung;
--- Relationen :
    zu_Punktobjekt_Modell: OPTIONAL Punktobjekt_Modell;
END_ENTITY;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY Fahne;
--- Attribute :
    Kennung: INTEGER;
    Fahne: STRING(8);
--- Relationen :
UNIQUE
    Kennung_eindeutig: Kennung;
END_ENTITY;


(* zulaessige Werte, in der Form (Kennung,Langtext):

   (0,'ohne')
   (1,'gerade')
   (2,'geknickt')

*)

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY vertikale_Ausrichtung;
--- Attribute :
    Kennung: INTEGER;
    vertikale_Ausrichtung: STRING(9);
--- Relationen :
UNIQUE
    Kennung_eindeutig: Kennung;
END_ENTITY;


(* zulaessige Werte, in der Form (Kennung,Langtext):

   (0,'zentriert')
   (1,'oberhalb')
   (2,'unterhalb')

*)

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

ENTITY horizontale_Ausrichtung;
--- Attribute :
    Kennung: INTEGER;
    horizontale_Ausrichtung: STRING(9);
--- Relationen :
UNIQUE
    Kennung_eindeutig: Kennung;
END_ENTITY;


(* zulaessige Werte, in der Form (Kennung,Langtext):

   (0,'zentriert')
   (1,'links')
   (2,'rechts')

*)

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

TYPE RTF = STRING;
END_TYPE;

-- SCHEMA - OKSTRA - INDEX - VERSION << - VERSION >>

END_SCHEMA; -- Allgemeine_Geometrieobjekte