Studienarbeit - Bauhaus

Transcrição

Studienarbeit - Bauhaus
Bauhaus Universität Weimar
Institut für Strukturmechanik
Studienarbeit
Implementierung einer Schnittstelle in SLang
zum Einlesen von DXF-Dateien und Erweiterung der
Geometrie-Datenstruktur in SLang
eingereicht von:
Mehlhorn, Tobias
geb. am 22.05.1982
in Altenburg/Thüringen
Erstprüfer:
Prof. Dr.-Ing. habil. C. Könke
Zweitprüfer:
Dipl.-Ing. S. Eckardt
Dipl.-Ing. T. Luther
Bearbeitungszeitraum:
06.11.2006-17.12.2006
Institut für Strukturmechanik
Bauhaus Universität Weimar
Aufgabenstellung zur Studienarbeit
Kandidat:
Matr.-Nr.:
Bearbeitungszeitraum:
Erstprüfer:
Zweitprüfer:
Tobias Mehlhorn
21106
6.11.2006 - 17.12.2006
Prof. Dr.-Ing. habil. C. Könke
Dipl.-Ing. T. Luther
Dipl.-Ing. S. Eckardt
Thema:
Implementierung einer Schnittstelle in SLang zum Einlesen von DXFDateien und Erweiterung der Geometrie-Datenstruktur in SLang
Aufgabenstellung:
Eine wichtige Grundlage für die numerische Simulation physikalischer Prozesse ist die
geometrische Modellierung der zugrundeliegenden realen dreidimensionalen Objekte. Dabei
wird in rechnergestützten Technologien die Beschreibung der Geometrie und der Topologie
vom sogenannten Körpermodellierer übernommen. Der Kern eines Körpermodells ist seine
Datenstruktur. Die meisten modernen Datenstrukturen für die 3D-Modellierung von Körpern
basieren auf dem Boundary Representation (BRep)-Datenmodell. Im Rahmen einer
Diplomarbeit [1] wurde eine Radial Edge Data Structure (RED), basierend auf dem BRepDatenmodell, in das Programmsystem Slang implementiert, das am Institut für
Strukturmechanik (ISM) entwickelt und genutzt wird. Mit Hilfe von BRep-Datenstrukturen
können komplexe Geometrien aus den Verknüpfungen ihrer Volumen, Flächen, Kanten und
Knoten beschrieben werden.
Im Rahmen der Studienarbeit soll der Kandidat eine Schnittstelle zum Einlesen von DXFDateien aus AutoCAD in das Programmsystem SLang implementieren. Damit soll es
ermöglicht werden, komplexe Geometrien als Körpermodell in AutoCAD zu erzeugen und
diese als BRep-Datenstruktur in SLang zu importieren. Die Zeichnungsdateien der AutoCAD
Versionen haben meist eine unterschiedliche interne Organisation. Deshalb wird als ImportFormat der DXF-Dateityp von AutoCAD R12/LT 2 festgelegt, der als Speicherformat auch in
neueren AutoCAD Versionen zur Verfügung steht und ohne interne Makros auskommt. Um
die Schnittstelle effizient nutzen zu können, soll der Kandidat die in SLang bisher
vorhandenen einfachen geometrischen Formen um B-Spline-Kurven und -Flächen erweitern.
Die Funktionsfähigkeit der Schnittstelle ist am Beispiel der Importierung eines Geometriemodells, bestehend aus einem Quader mit zum Teil vollständig eingeschlossenen und zum
Teil am Rand geschnittenen Ellipsoiden nachzuweisen. Ein solches Geometriemodell wird am
ISM für die Modellierung von Beton auf der Mesoskala verwendet.
Im Rahmen dieser Aufgabenstellung sind vom Kandidaten folgende Punkte zu bearbeiten:
•
•
•
•
•
•
Analyse des DXF-Formats als Ausgabe von AutoCAD R12/LT 2
Implementierung einer Schnittstelle in SLang zum Einlesen von DXF-Dateien der
Version AutoCAD R12/LT 2.
Implementierung neuer geometrischer Objekte (B-Spline-Kurven, B-SplineFlächen) in SLang.
Nachweis der Funktionsfähigkeit der DXF-Schnittstelle am Beispiel der
Importierung des geometrischen Mesomodells für Beton mit geschnittenen
Ellipsoiden am Rand eines umschließenden Quaders.
Schriftliche Dokumentation der Arbeit.
Dokumentation der erstellten und implementierten Algorithmen auf CD-Rom
Literatur:
[1]
David Schneider. Konzept und Implementierung einer Geometrie-Datenstruktur in
das Programmsystem SLang basierend auf der „Boundary Representation Data
Structure“, Diplomarbeit, Institut für Strukturmechanik, BU Weimar, 2006
[2]
Sebastian Grolla. Interpretieren von DXF-Dateien, Belegarbeit „CAD in der
Bauinformatik“, Professur Informatik im Bauwesen, BU Weimar, 2005
[3]
Institute of Structural Mechanics. SLang – the Structural Language Version
5.0.9., Manual, BU Weimar, 2005.
[4]
Dokumentationen zu AutoCAD R12/LT 2
[5]
Dokumentationen zu C und C++ Programmierung
Inhaltsverzeichnis
1 Einleitung
5
2 Das Drawing-Interchange-Format DXF
6
2.1
Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.2
Abschnitte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.3
Geometrische Elemente . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
3 DXF-Parser
17
3.1
Einlesen der Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
3.2
Löschen redundanter Informationen und interne Datenstruktur . . . . .
19
3.3
Erstellen des SLang -Inputfiles . . . . . . . . . . . . . . . . . . . . . . .
21
3.4
Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
4 Implementation geometrischer Beschreibungen
25
4.1
Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
4.2
Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
5 Zusammenfassung
32
Literaturverzeichnis
34
3
INHALTSVERZEICHNIS
4
Abbildungsverzeichnis
36
Anhang
37
A.1 POINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
A.2 CIRCLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
A.3 ARC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
A.4 SOLID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
A.5 TRACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
A.6 3DFACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
A.7 POLYLINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
A.8 CD-ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
A.9 Erklärung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
Kapitel 1
Einleitung
Die geometrische Modellierung realer dreidimensionaler Objekte ist eine wichtige Grundlage für die numerische Simulation physikalischer Prozesse. Das am Institut für Strukturmechanik (ISM) entwickelte und genutzte Programmsystem SLang bietet dafür eine
Geometriedatenstruktur. Sie ist ein Hybrid aus der Radial Edge Data Structure (RED)
und einer Constructive Solid Geometry (CSG)-Datenstruktur und wurde im Rahmen
einer Diplomarbeit [5] in SLang implementiert.
Zur Zeit existiert für diese Datenstruktur noch keine Möglichkeit zum Austausch der
Geometriedaten mit anderen Programmsystemen. Diese Option erspart aber Zeit, reduziert die Fehleranfälligkeit und erhöht die Benutzerfreundlichkeit, da für das Erstellen der Geometrie auf kommerzielle Algorithmen der exportierenden Programme
zurückgegriffen wird. Dazu bieten sie auf Grund der vorhandenen GUI eine hohe Übersichtlichkeit. Mit einer Schnittstelle für den Geometriedatenaustausch ist es möglich,
komplexe Geometrien als Körpermodell in einem CAD-Programm zu erstellen und diese in die SLang Geometriedatenstruktur zu importieren.
Im Rahmen dieser Arbeit wird ein solcher Import für den Geometriedatenaustausch
mit CAD-Programmen implementiert. Als Grundlage für den Austausch dient das Drawing Interchange Format (DXF) in der Version R12/LT2. Diesen Datentyp exportieren
die meisten CAD-Programme. Er kommt ohne Verweise auf programminterne Zeichnungselemente (Makros) aus. Entwickelt wurde DXF von der Firma Autodesk, Inc.,
dem Hersteller des CAD-Programms AutoCAD. Es ist ein Industriestandard.
Desweiteren wurde die Geometriedatenstruktur in SLang um die geometrischen Formen
Spline, B-Spline und Bézierkurve erweitert.
5
Kapitel 2
Das Drawing-Interchange-Format
DXF
In diesem Kapitel wird der Aufbau von DXF-Dateien vorgestellt. Dieser dient als
Grundlage für das Erstellen einer Schnittstelle zum Einlesen von DXF-Dateien in das
Programmsystem SLang .
Die DXF-Datei enthält eine vollständige Beschreibung einer technischen Zeichnung
oder eines geometrischen Modells. Dazu gehören alle grafischen Elemente sowie verschiedene strukturelle und verwaltungstechnische Informationen. Es werden in einer
Struktur ähnlich der Boundary Representation (BRep) einfache geometrische Objekte wie Punkte, Linien und Flächen in topologische Beziehungen gestellt. In höheren
Versionen (> R12/LT 2) werden in dieser Struktur auch Constructive Solid Geometry (CSG) Primitive angewandt. Diese werden als Makros in dem DXF abgelegt. So
setzt das Laden einer solchen Geometrie-Datei voraus, dass man dasselbe Programm/
dieselbe Geometriebibliothek wie der Ersteller dieser Datei besitzt. Es sei denn, man
schreibt einen Übersetzungsalgorithmus für jedes Makro, oder man hat alle durch Makros definierbaren Objekte in der eigenen Struktur implementiert. Deshalb wurde sich
im Rahmen dieser Studienarbeit auf die Version R12/LT2 bezogen.
Das DXF bietet in dieser Version die Möglichkeit komplexe, geradlinig begrenzte Strukturen als Draht- oder Flächenmodell darzustellen. Desweiteren ist es möglich, B-Splineund Bézierkurven zu erstellen. Auch die Darstellung von krummlinig (Kreisbögen, BSpline, Bézier) begrenzten Strukturen als Drahtmodell ist möglich. Zu den Grenzen des
DXF R12/LT2 gehört, dass sich in diesem Format keine Volumen abspeichern lassen.
6
KAPITEL 2. DAS DRAWING-INTERCHANGE-FORMAT DXF
7
Koordinaten und Längen, Richtung und Winkel
Alle Koordinaten- und Längenangaben einer DXF-Datei sind einheitenunabhängig.
Richtungen und Winkel werden im Gradmaß mit Nachkommastellen gespeichert. Richtungen besitzen einen Wert größer bzw. gleich 0 und kleiner 360. Die Winkel sind
mathemathisch positiv definiert.
2.1
Aufbau
Eine DXF-Datei besitzt eine klar gegliederte Struktur. Sie wird aus einem Grundbaustein mit dem gleichen Syntax, der Gruppe, erstellt. Die Gruppe setzt sich aus der
Gruppennummer und dem Gruppenwert zusammen.
Gruppenaufbau
Gruppennummer
Gruppenwert
Bedeutung
Bedeutung der Gruppe
Wert der Gruppe
Beispiel
10
1.5
Erläuterung
X-Koordinate
x-Wert = 1.5
Tabelle 2.1: Aufbau einer Gruppe
Als Beispiel ist in Tab. 2.1 die Gruppe der X-Koordinate aufgeführt. Die Gruppennummer 10 signalisiert, dass in dieser Gruppe der x-Wert eines Koordinatentriples als
Gruppenwert abgelegt ist. Innerhalb einer DXF-Datei kann jede Gruppe mehrfach auftreten, wobei der Gruppenwert gleich oder unterschiedlich sein darf.
Abschnitt
HEADER
TABLES
BLOCKS
ENTITIES
Bedeutung
Informationen
Informationen
Informationen
Informationen
zum Zeichnungslayout
zur Zeichnungsumgebung
zur Geometrie und Topologie
zur Geometrie
Tabelle 2.2: Abschnitte der DXF-Datei
Mit Hilfe der Gruppe werden in der DXF-Datei vier Abschnitte definiert (siehe Tab.
2.2). Diese bilden die oberste Verwaltungsebene. Die Informationen über das Zeichnungslayout (Abschnitt HEADER) und die Zeichenumgebung (TABLES) werden zur
Zeit nicht benötigt. Ausdiesem Grund wird auf sie nicht weiter eingegangen.
KAPITEL 2. DAS DRAWING-INTERCHANGE-FORMAT DXF
8
Die Abschnitte werden aus Gruppen gebildet. Sie haben einen klar definierten Anfang
und ein klar definiertes Ende. Dies geschieht wiederum über die Gruppen. Dadurch
entsteht eine Klammerstruktur (siehe Abb. 2.1).
0
SECTION
2
ENTITIES
Klammerstruktur
Gruppe
Beginn Abschnitt
Gruppe
def. des Abschnitts
(ENTITIES)
.
.
0
ENDSEC
Gruppe
Ende Abschnitt
Abbildung 2.1: Aufbau der Abschnitte
In Abb. 2.1 ist der Aufbau der Klammerstruktur eines Abschnittes dargestellt. Als Beispiel dient der Abschnitt ENTITIES. In der ersten Gruppe wird die Klammer geöffnet
und mit der letzten wieder geschlossen. Dies geschieht über die Gruppe mit der Gruppennummer 0 und den Gruppenwert SECTION bzw. ENDSEC. Nach dem Öffnen der
Klammerstruktur wird die Bedeutung des Abschnnittes über die Gruppe 2 festgelegt.
In diesem Fall ist der Gruppenwert der Gruppe 2 ENTITIES. Somit bildet die Klammerstruktur den Abschnitt ENTITIES.
KAPITEL 2. DAS DRAWING-INTERCHANGE-FORMAT DXF
9
Die Abschnitte enthalten aus Gruppen zusammengesetzte Elemente. Elemente beginnen ebenfalls mit der Gruppe der Gruppennummer 0 und dem Gruppenwert Name
”
des Elements“, so dass sich ein Aufbau wie in Abb.2.2 in einer DXF-Datei ergibt.
Abschnitt
0
SECTION
Gruppe
2
ENTITIES
Gruppe
0
ARC
Element
8
Beton
.
.
0
ARC
Element
8
Beton
.
.
0
ENDSEC
Beginn Abschnitt
def. des Abschnitts
(ENTITIES)
Gruppe
Beginn Element ARC
Gruppe 8 (Layer)
16 (Layername)
Gruppe
Beginn Element ARC
Gruppe 8 (Layer)
16 (Layername)
Gruppe
Ende Abschnitt
Abbildung 2.2: Aufbau der DXF-Datei
Als Beispiel für den Aufbau der DXF-Datei dient der Abschnitt ENTITIES und das
Element Kreisbogen (ARC). Der Aufbau des Abschnittes ENTITIES gestaltet sich
wie zuvor beschrieben. Das Element ARC“ beginnt ebenfalls mit einer Gruppe der
”
Gruppennummer 0 gefolgt vom Gruppenwert ARC. Stellvertretend für die weiteren
Gruppen ist die Gruppe mit der Nummer 8 (Layer) und dem Gruppenwert Beton“
”
(Layername) aufgeführt. Sie steht dafür, dass das Objekt ARC im Layer mit dem
Namen Beton“ gezeichnet wurde.
”
KAPITEL 2. DAS DRAWING-INTERCHANGE-FORMAT DXF
2.2
10
Abschnitte
BLOCKS
Blöcke sind komplexe Objekte, die aus mehreren Elementen bestehen und beliebig
oft, an verschiedenen Punkten, in die Zeichnung eingefügt werden können, wobei das
Element nur einmal in der DXF- Datei definiert werden muss. Blöcke besitzen Klammerstrukturen. Ein Block beginnt mit der Gruppennummer 0 und dem Gruppenwert
BLOCK. Er endet mit der Gruppennummer 0 und dem Gruppenwert ENDBKL. In
dem Abschnitt BLOCKS werden geometrische Zusammenhänge und topologische Informationen gespeichert.
Es gibt fünf Arten von Blöcken:
ˆ benutzerdefinierte, interne Blöcke
ˆ benutzerdefinierte, externe Blöcke
ˆ Bemaßungsblöcke
ˆ Schraffurblöcke
ˆ applikationsabhängige, anonyme Blöcke
Die Blöcke, die zu Schraffuren, zu assoziativen Bemaßungen oder zu speziellen Applikationen(z.B. Branchenpaketen) gehören, bezeichnet man als anonyme“ Blöcke, da
”
diese nicht direkt in der DXF-Datei abgelegt werden [3, 4]. Aus diesem Grund werden
in dieser Arbeit nur die benutzerdefinierten Blöcke beachtet.
ENTITIES
In dem Abschnitt ENTITIES werden die geometrischen Informationen, die nicht in
Blöcken zusammengefasst wurden, abgespeichert. Desweiteren werden Einfügeort und
Skalierung der Blöcke abgelegt. Der Abschnitt ENTITIES enthält die Informationen,
welches geometrische Element an welcher Stelle der Zeichnung und mit welchen Eigenschaften erscheint. Dieser Abschnitt ist eine sequenzielle Folge von Geometrieelementen.
KAPITEL 2. DAS DRAWING-INTERCHANGE-FORMAT DXF
2.3
11
Geometrische Elemente
Die Beschreibung der Geometrieelemente kann in den Abschnitten ENTITIES und
BLOCKS vorkommen. Zu den geometrischen Elementen zählen:
ˆ POINT: entspricht einem einzelnem Punkt
ˆ LINE: bildet eine Linie im dreidimensionalen Raum
ˆ CIRCLE: beschreibt einen Vollkreis in einer lokalen X-Y-Ebene im Raum
ˆ POLYLINE: definiert verschiedene Arten von Kurven und Flächen
ˆ SOLID: stellt eine ebene Fläche im dreidimensionalen Raum dar
ˆ TRACE: siehe SOLID
ˆ 3DFACE: erzeugt eine Fläche im dreidimensionalen Raum
In der DXF-Datei werden alle geometrischen Objekte aus diesen Elementen zusammengesetzt. Es werden keine weiteren Elemente benötigt. So wird beispielsweise eine
Ellipse mit dem Element POLYLINE in der DXF-Datei dargestellt.
Die geometrischen Elemente lassen sich in zwei Kategorien einteilen. Zur Ersten, die
der einfachen geometrischen Elemente, gehören die Elemente POINT, LINE, CIRCLE,
ARC, TRACE, SOLID, 3DFACE. Das Element POLYLINE gehört zu der Kategorie
komplexer Elementtypen. Es besitzt mehrere Unterelemente, aus denen es sich zusammensetzt.
KAPITEL 2. DAS DRAWING-INTERCHANGE-FORMAT DXF
12
POINT
Stellvertretend für den Aufbau der Geometrieelementtypen wird in diesem Abschnitt
das Geometrieelement POINT ausführlich beschrieben. Die anderen Geometrieelementtypbeschreibungen befinden sich im Anhang.
Das Geometrieelement POINT bildet einen Punkt im dreidimensionalen Raum und ist
ein einfaches Zeichnungselement ohne Unterelemente.In Tab. 2.3 sind alle möglichen
Gruppennummern, die mit dem Geometrieelement POINT aufgeführt werden können,
dargestellt.
Gruppennummer
0
8
6
62
39
5
67
10
20
30
210
220
230
Bedeutung
Elementtyp
Layer
Linientyp
Farbe
Objekthöhe
Elementreferenz
Bereich
Welt-X-Koordinate des Startpunkts
Welt-Y-Koordinate des Startpunkts
Welt-Z-Koordinate des Startpunkts
X-Koordinate Hochzugsrichtung
Y-Koordinate Hochzugsrichtung
Z-Koordinate Hochzugsrichtung
Gruppen Wert
POINT
String
String
integer
float
String
integer
float
float
float
float
float
float
muß
ja
ja
nein
nein
nein
nein
nein
ja
ja
ja
nein
nein
nein
Tabelle 2.3: Gruppen des Elements POINT
Anschließend werden die Gruppen des geometrischen Grundelements näher beschrieben.
Elementtyp (Gruppe 0) Jedes Element beginnt mit der Gruppe 0. In ihr wird der
Elementtyp (Name) als Gruppenwert abgelegt. In den Abschnitten dient die Gruppe 0 der
Definition der Klammerstruktur (siehe Abb. 2.1)
Layer (8) Layer(textitdt. Schichten) dienen dazu, Elemente zu trennen und zu organisieren. Es können in einer DXF-Datei beliebig viele Layer benutzt werden. Ein Element kann
immer nur einen Layer besitzen.
KAPITEL 2. DAS DRAWING-INTERCHANGE-FORMAT DXF
13
Linientyp (6) Jedem Element der DXF-Datei ist impizit oder explizit genau ein Linientyp
zugeordnet. Er gibt die Art der Linie, an in dem das Element dargestellt wird.
Farbe (62) Es gibt in dem DXF ein Spektrum von 255-Farben, die von 1 bis 255 nummeriert sind. Um einer Zahl eine Farbe zuzuordnen, wird der AutoCAD Color Index“ (ACI)
”
verwendet. Mit dem ACI kann die Zahl in RGB-Werte (Rot-Grün-Blau) umgewandelt werden.
Elementreferenz (5) Mit der Elementreferenz wird jedes Element einer Zeichnung eindeutig gekennzeichnet. Elementreferenzen sind Zahlen größer Null und werden als hexadezimale Notation abgelegt.
Bereich (67) Jedem Element kann ein Bereich zugeordnet werden. Es gibt einen Modellbereich (Konstruktionsbereich) und Papierbereich (Layoutbereich: Darstellung des Modells
auf einer Zeichnung).
x,y,z - Koordinaten (10-18,20-28,30-38) Sämtliche Elemente in einer DXF-Datei
besitzen Koordinaten. Welche die Position des Elements im Modell oder auf dem Papier
kennzeichnen. Je nach Element sind ein oder mehrere Koordinatentripel nötig, um die Lage des Elements eindeutig zu bestimmen. Jede Koordinate wird in einer eigenen Gruppe
zugeordnet.
Koordinatensysteme Das Basiskoordinatensystem in einer DXF-Datei trägt den Namen Weltkoordinatensystem“ (globales System). Desweiteren gibt es das “Element- koordi”
natensystem“ (lokales System). Das Elementkoordinatensystem ist ein Koordinatensystem, in
dem die Position und die Richtung eines speziellen Elements gespeichert wird. Dieses wird für
zweidimensionale Elemente benötigt, deren Konstruktionsebene gegen die Welt-X/Y-Ebene
gedreht ist. Die Hochzugsrichtung beschreibt in diesem Fall die Lage der Konstruktionsebene
im Raum.
Hochzugsrichtung und Objekthöhe (210,220,230,39) Jedes Element, bei dem
einige oder alle Koordinaten in Elementkoordinaten gespeichert werden, besitzt eine sogenannte Hochzugsrichtung“. Diese dient einerseits zur Definition des jeweiligen Elementkoor”
dinatensystems, andererseits auch dazu, Elemente geringerer Dimension unter Verwendung
der Objekthöhe auszudehnen.
KAPITEL 2. DAS DRAWING-INTERCHANGE-FORMAT DXF
14
Beispiel
Als Beispiel dient ein Punkt der mit dem Layer Beton“ in dem Linientyp CONTI”
”
NUOUS“ (Volllinie) gezeichnet wurde. Die Farbe 5“ (blau), das entspricht dem RGB”
Wert (0, 0, 1). Die Elementreferenz ist 10A“ und der Bereich, in dem das Objekt
”
gezeichnet worden ist, ist der Papierbereich 1“. Der Punkt besitzt eine Objekthöhe
”
von 10. Er hat die Koordinaten (1.5, 2.5, 3.5) und wird in die Z-Richtung hochgezogen
(0,0,1). Somit ergibt sich eine Linie der Länge 10.
In der unten abgebildeten Tabelle ist das Beispiel dargestellt.
DXF Notation
Gruppennummer: 0
Gruppenwert: POINT
8
Beton
6
CONTINUOUS
62
5
5
10A
67
1
39
10
10
1.5
20
2.5
30
3.5
210
0
220
0
230
1
Bedeutung
Elementtyp
POINT
Layer
Layer Beton
Linientyp
Linientyp Volllinie
Farbe
5 = blau; RGB-Wert (0.,0.,1.)
Elementreferenz
Element 10A
Bereich
Papierbereich
Objekthöhe
Höhe 10
Welt-X-Koordinate
x = 1.5
Welt-Y-Koordinate
y = 2.5
Welt-Z-Koordinate
z = 3.5
X-Koordinate Hochzugsrichtung
x=0
Y-Koordinate Hochzugsrichtung
y=0
Z-Koordinate Hochzugsrichtung
z=1
Tabelle 2.4: DXF-Notation eines Punktes und seine Interpretation
KAPITEL 2. DAS DRAWING-INTERCHANGE-FORMAT DXF
15
POLYLINE
Im Gegensatz zu den anderen Elementen ist POLYLINE ein komplexes Geometrieelement und setzt sich aus mehreren Elementen zusammen. Deshalb werden der Aufbau
und die Möglichkeiten des Elements kurz erklärt. Das komplexe Element POLYLINE
kann verschiedene Arten von Flächen und Kurven im dreidimensionalen Raum bilden.
Die verschiedenen Flächen und Kurven, die durch eine POLYLINE definiert werden,
lassen sich folgendermaßen untergliedern:
Kurven und hochgezogene“ Kurven :
”
ˆ 2D Kurve
ˆ hochgezogene“ 2D Kurve
”
ˆ 2D B-Spline Kurve
ˆ hochgezogene“ 2D B-Spline Kurve
”
ˆ 3D Kurve (Polygon)
ˆ 3D B-Spline Kurve
Flächen:
ˆ Polygonnetz
ˆ B-Spline Fläche
ˆ Bézier- Fläche
ˆ Vielflächennetz
Diese Untergliederung erfolgt in dem Element POLYLINE mit Hilfe der Gruppe mit
der Nummer 70. Der Wert der Gruppe entscheidet, welche Bedeutung das Element
POLYLINE besitzt.
In der Tabelle 2.5 findet man die Bedeutung der einzelnen Werte, die zum Gesamtwert
dieser Gruppe addiert werden. Bestimmte Werte werden nur für die Definition entweder
von Kurven oder Flächen verwendet, während andere bei Kurven und Flächen ähnliche
Bedeutung besitzen. So bildet zum Beispiel das Element POLYLINE eine 2D-Kurve,
wenn der Wert der Gruppe 70 kleiner als vier ist. Falls der Wert der Gruppe 70 im
Element POLYLINE gleich 1 ist, handelt es sich um eine geschlossene 2D-Kurve.
KAPITEL 2. DAS DRAWING-INTERCHANGE-FORMAT DXF
Wert
0
1
2
4
8
16
32
64
128
16
Bedeutung
Kurve : Das Element POLYLINE beschreibt eine 2D-Kurve,
die aus Linien- und Bogensegmenten besteht
Kurve : Die Kurve ist geschlossen
Fläche: Eine dreidimensionale Fläche die in M-Richtung
durch ein lineares Element geschlossen wird
Kurve : Interpolation der Scheitelpunkte durch Bogensegmente
Kurve : Approximation der Scheitelpunkte durch eine B-Spline-Kurve
Kurve : Das Element POLYLINE beschreibt eine 3D-Kurve
Fläche: Das Element POLYLINE beschreibt ein Polygonnetz, eine
B-Spline- oder Bezier-Fläche
Fläche: Eine dreidimensionale Fläche die in N-Richtung
durch ein lineares Element geschlossen wird
Das Element POLYLINE beschreibt ein Vielflächennetz
Der Linientyp wird kontinuierlich auf die gesamte Kurve angewandt
Tabelle 2.5: Gruppenwerte der Gruppe 70 des Elements POLYLINE
VERTEX
Auf den Definitionskopf eines Elements POLYLINE folgt eine Anzahl von Unterelementen
vom Typ VERTEX1 . Der Elementtyp VERTEX definiert einen Stützpunkt einer Kurve oder
Fläche oder eine Einzelfläche im Vielflächennetz. Jede Fläche, die durch das Element vom
Typ POLYLINE dargestellt wird, enthält mindestens zwei Elemente vom Typ VERTEX. Die
Definition der Scheitelpunkte wird von einem Unterelement SEQEND abgeschlossen.
Die geometrische Bedeutung des Unterelements VERTEX wird in der Gruppe 70 definiert
und hängt von der Art der Kurve oder Fläche ab, die durch das jeweilige Element POLYLINE
beschrieben wird.
SEQEND
Einem Element POLYLINE folgt immer eine Reihe von Stützpunkten (Element VERTEX).
Auf das letzte Element dieser Reihe folgt ein Element SEQEND, welches damit das Ende des
komplexen Elements POLYLINE kennzeichnet.
1
VERTEX ist in dem DXF ein Stützpunkt und kein Knoten im Sinn üblicher Geometriedatenstruktur z.B. RED [6]
Kapitel 3
DXF-Parser
Auf der Grundlage der in Kapitel 2 beschriebenen Struktur wurde der DXF-Parser entwickelt.
Die Implementation gliedert sich in vier Teile:
1. Parsen (Einlesen)
2. Datenstruktur
3. Sortier- und Löschalgorithmen
4. Export des SLang -Inputfiles
Die grundlegende Arbeitsweise des DXF-Parsers gliedert sich wie folgt. Der erste Schritt ist
das Einlesen der DXF-Datei in einen Zwischenspeicher. Anschließend wird die eingelesene Datei einmal nach den Geometriedaten durchsucht. Das DXF ist redundant. Um die redundanten
Daten löschen zu können ist es notwendig, eine eigene Datenstruktur zu implementieren. Die
eingelesenen Geometriedaten werden in der entwickelte Datenstruktur temporär abgespeichert. Es folgt das Löschen der redundanten Daten. Anschließend werden die verbleibenden
Daten aus Gründen der Übersichtlichkeit neu nummeriert. Im letzten Schritt werden die Daten aus der Struktur in ein SLang -Inputfile geschrieben und die temporäre Datenstruktur
wird gelöscht.
17
KAPITEL 3. DXF-PARSER
3.1
18
Einlesen der Datei
Nach dem Einlesen der DXF-Datei in den Zwischenspeicher werden die Geometriedaten eingelesen. Dafür wurde ein eigener Parser in der Programmiersprache C++unter Verwendung
der C++Library Boost Spirit implementiert. Diese Bibliothek stellt eine Reihe von
vorgefertigten Regeln und Aktionen zur Verfügung. Diese Regeln können beliebig kombiniert und erweitert werden.
Dem implementierten Parser liegt eine Baumstruktur zugrunde, die dem Aufbau einer
DXF-Datei nachempfunden wurde. So beginnt er mit der obersten Verwaltungsebene,
dem Abschnitt“, und endet, nach den verschiedenen Fallunterscheidungen, mit dem
”
Einlesen und Abspeichern der geometrischen Objekte.
Dieser Aufbau ermöglicht es, dass der Zwischenspeicher, um alle Geometriedaten zu
erhalten, nur einmal von Anfang bis Ende durchlaufen werden muss.
DXF-DATEI
ENTITIES
INSERT
Einfügeort
des
Blocks
...
BLOCKS
TABLES
HEADER
GEOMETRISCHE
ELEMENTE
POINT
LINE
...
CIRCLE
...
ARC
...
Layer
Linientyp
Datenstruktur
Farbe
Elementreferenz
Objekthöhe
Weltkoord.
...
Abbildung 3.1: Parserstruktur
POLYLINE
...
KAPITEL 3. DXF-PARSER
3.2
19
Löschen redundanter Informationen und interne Datenstruktur
Da das DXF redundant ist, wurde eine eigene interne Datenstruktur implementiert.
Die Redundanz entsteht beispielsweise, wenn mehrere Linien einen Anfangs- oder Endpunkt gemeinsam haben.
4(1,1,1)
3(1,0,1)
1(0,0,1)
3(1,0,1)
3(1,0,1)
2(1,0,0)
Abbildung 3.2: Beispiel Redundanz
Wird zum Beispiel die Geometrie aus der Abb. 3.2 in einer DXF-Datei gespeichert,
werden drei Linienelemente mit jeweils zwei Koordinatentripeln abgelegt. Somit ist der
Punkt 3 dreimal vorhanden. Diese Mehrfachinformation beeinflust die Weiterverarbeitung der geometrischen Daten in erheblichen Maße, oder kann sie sogar unmöglich
machen. Deshalb werden mehrfach vorkommende Daten gelöscht. Die topologischen
Verknüpfungen der verschiedenen Elemente werden aktualisiert. Nachdem die redundanten Daten gelöscht wurden, werden die verbleibenden neu nummeriert. Dies führt
zu einem übersichtlicheren System.
KAPITEL 3. DXF-PARSER
20
Die Datenstruktur besteht aus den Klassen Dxf Point, Dxf Line, Dxf Polyline, Dxf 3dface
und der Klasse Dxf Circle (siehe Abb.3.3). In der Klasse Dxf Point werden die Koordinaten der geometrischen Beschreibung der Elemente, sowie die topologische Verknüpfung, zu welchem Element der Punkt gehört, gespeichert. Die Klassen Dxf Line,
Dxf Polyline und Dxf 3dface enthalten ihrerseits die Information, welche Punkte zu
ihnen gehören. In der DXF werden begrenzte topologische Informationen der geometriDxf_Polyline
uint
std::vector<uint>
mapkey
points
face
int
...
Dxf_Point
uint
float
std::vector<uint>
...
Dxf_Line
mapkey
x,y,z
lines
int
mapkey
points
face
...
Dxf_Circle
uint
float
float
...
uint
std::vector<uint>
Dxf_3dface
mapkey
radius
x,y,z
uint
std::vector<uint>
int
...
mapkey
lines
region
Abbildung 3.3: Aufbau Datenstruktur
schen Grundelemente abgespeichert. Topologische Informationen über mehrere Hierarchieebenen werden nicht abgespeichert. Es existieren keine topologischen Informationen
über zusammengesetzte Objekte. Das DXF besitzt keine Volumeninformation. Beim
Einlesen aus der DXF-Datei wird, auch im kommerziellen Programmen, ein erstelltes
Volumen“ nur als Drahtgittermodell erkannt. Um diese Art der Unterinformation zu
”
beheben, wurde folgende Möglichkeit der Informationsgewinnung“ implementiert:
”
Es wird die Festlegung getroffen, dass alle Elemente, welche denselben Layer besitzen,
ein gemeinsames Objekt bilden. Aus diesem Grund wird auch die Layerinformation in
der Datenstruktur gespeichert.
KAPITEL 3. DXF-PARSER
3.3
21
Erstellen des SLang -Inputfiles
Für den Geometriedatenaustausch zwischen dem DXF-Parser und der Geometriedatenstruktur von SLang existieren verschiedene Möglichkeiten. Eine davon ist das direkte
Abspeichern der eingelesenen Geometriedaten in die SLang Geometriedatenstruktur.
Dies hätte zur Folge, dass das Beseitigen der redundanten Daten in der SLang Geometriedatenstruktur vorgenommen werden muss. Desweiteren müßste die DXF-Datei
jedesmal neu geparst werden.
Das Einlesen über ein SLang -Inputfile bietet die Möglichkeit, nachträglich Änderungen
am Geometriemodell vorzunehmen. Dafür muss die DXF-Datei nicht neu eingelesen
werden. Desweiteren können auch die einzelnen Entwicklungsstände seperat verwaltet
werden und nicht nur in der Geometriedatenstruktur von SLang . Im Rahmen dieser
Arbeit wurde sich für den Austausch mittels Inputfile entschieden.
Für die Eingabe eines Geometriemodells in die SLang Geometriedatenstruktur werden
die Befehle der Kommandogruppe RED“ verwendet. Der DXF-Parser schreibt die
”
Geometrie in diesen Befehlen in das File. Es werden dafür nur die Befehle der Kommandos red create“ und “red modify“ benötigt. Das Kommando red create“ nutzt
”
”
zum Erstellen der Objekte die Make-Operatoren. Die Make-Operatoren dienen dem
Erstellen des Modells [5].
Das Kommando red create“ kann folgende Attribute besitzen:
”
auto/ man, model/ box/ ellipsoid/ elliptic arc/ spline1 / bspline/ bezier/ vertex/ edge/
face/ region / replace /noreplace
Es wird zum Anlegen der Struktur verwendet.
Die Befehle des Komandos “red modify“ werden zum Rotieren und Verschieben geometrischer Elemente und Strukturen benötigt.
Der Aufbau des Inputfiles folgt dem logischen Aufbau. So werden als erstes alle Knoten in das File geschrieben. Darauf folgen die Kanten und Flächen. Den Abschluß
bilden die Regionen. In SLang wird genau in der Reihenfolge, wie sie auch in dem Inputfile vorhanden ist, das Geometriemodell mit Hilfe der Make-Operatoren in der Datenstruktur erstellt. Zweidimensionale Elemente, deren Konstruktionsebene gegen die
Welt-X-Y-Ebene gedreht ist, werden durch Rotieren und Verschieben mit den Befehlen
des Komandos “red modify“ in ihre Position gebracht.
1
Unterstrichene Werte wurden im Rahmen dieser Arbeit in SLang implementiert. Siehe Kapitel 4.
KAPITEL 3. DXF-PARSER
3.4
22
Beispiel
Für die Verifizierung des DXF-Parsers wurden zwei Arten von Testbeispielen verwendet:
ˆ linear begrenzte Modelle
ˆ nicht linear begrenzte Modelle
Ein Beispiel für ein linear begrenztes Modell findet sich in Abb. 3.4
Abbildung 3.4: linear begrenzte Modelle im Programm AutoCAD
Dieses Modell wurde in einem CAD-Programm (AutoCAD) unter Verwendung des Elementes 3DFACE erzeugt.
Im Vergleich zur Eingabe der Geometrie von Hand“ in die SLang -Geometriedatenstruktur
”
ist dies weniger fehleranfällig. Für das Erstellen der Geometrie konte auf (kommerzielle) Algorithmen des Programms zurückgegriffen werden. Sie bieten dazu eine hohe
Übersichtlichkeit aufgrund der vorhandenen GUI. Das so entstandene Modell wurde in
dem DXF R12/LT2 abgelegt und dem DXF-Parser übergeben.
KAPITEL 3. DXF-PARSER
23
Da das DXF redundant ist, werden wesentlich mehr Elemente in die interne Datenstruktur des Parsers geschrieben, als tatsächlich notwendig. Diese werden unter Zuhilfenahme der implementierten Löschalgorithmen entfernt.
Die verbleibenden Daten werden anschließend neu nummeriert. Dies dient der Übersichtlichkeit des Inputfiles, welches anschließend erstellt wird. Das Einlesen in die SLang
-Datenstruktur, sowie die Visualizierung erfolgt mit den Kommandos:
#include fly star.s
*Erstellen der Geometrie/
visualize create, super window, .01 .01 .4 .3, sup / *Anlegen eines Hauptfensters/
visualize create, sub window, sup, geo /
*Anlegen eines Unterfensters/
visualize geometry, , geo, geo layer /
*Visualizierung der Geometrie
im Unterfenster/
Die Abb. 3.5 zeigt die SLang -interne Visualisierung des in Abb. 3.4 enthaltenen Modells.
Abbildung 3.5: Darstellung linear begrenzter Modelle mit visualize geometry“
”
KAPITEL 3. DXF-PARSER
24
Das nichtlineare Modell wird aus den elementen CIRCLE, POLYLINE sowie LINE
erstellt. Als Beispiel dient das in Abb. 3.6 dargestellte Modell. Das Vorgehen beim
Abbildung 3.6: nichtlinear begrenzte Modelle im Programm AutoCAD
Parsen und dem Erstellen des Inputfiles ist analog zu dem bei linearen Modellen. Die
Visualisierung erfolgt in diesen Fall mit Hilfe des Vernetzers gmsh. Dafür wird mit dem
SLang Kommando red export“ die Datenstruktur in ein gmsh Inputfile geschrieben und
”
anschließend ausgeführt. Die Abb. 3.7 zeigt die gmsh-Visualisierung des in Abb. 3.6
dargestellten Modells.
Z
Y
X
Abbildung 3.7: Darstellung nichtlinear begrenzter Modelle mit gmsh“
”
Kapitel 4
Implementation geometrischer
Beschreibungen
Im Rahmen einer Diplomarbeit[5] wurde in das Programmsystem SLang eine Hybridgeometriedatenstruktur (HGDS) implementiert. Als Basis der HGDS diente die von Weiler[6]
entwickelte RED. Diese wurde um die Möglichkeit, CSG-Primitive zu erstellen erweitert, so dass diese als Volumen in der HGDS gespeichert werden.
Eine Teilaufgabe im Rahmen dieser Arbeit ist das Erweitern der HGDS um die geometrische Beschreibung von Spline-, B-Spline- und Bézierkurven. Die geometrische Beschreibung in der HGDS baut auf vier geometrischen Elemententypen auf. Diese sind
Knoten, Kanten und Flächen und Volumen.
Der Knoten“ beschreibt einen Punkt im dreidimensionalen Raum. Er ist der kleinste
”
geometrische Elementtyp. Die Kante definiert sich aus zwei Knoten und der Information über den Verlauf dazwischen. Die Knoten einer Kante können unterschiedlich oder
identisch sein. Im letzterem Fall beschreibt die Kante eine geschlossene Fläche, wie zum
Beispiel einen Kreis oder Ellipsenbogen. Der geometrische Typ der Fläche wird durch
mindestens einen geschlossenen äußeren Ring von Kanten gebildet. Das Volumen ist
als Menge von geschlossenen Flächen definiert. Daher muss jede Kante einer Fläche
mit einer der in der Menge enthaltenen Flächen verbunden sein für die gilt: die Kante
jeder Fläche stoße an Kanten anderer Flächen der Menge.
Im Rahmen dieser Arbeit wird die geometrische Definition der Kante um die Beschreibung der Formen von Spline-, B-Spline- und Bézierkurven erweitert. Die geometrische
25
KAPITEL 4. IMPLEMENTATION GEOMETRISCHER BESCHREIBUNGEN
26
Beschreibung wird in einer Beschreibungsklasse“ definiert. Die Möglichkeit der Wei”
terentwicklung wurde in der implementierten Datenstruktur berücksichtigt.
4.1
Implementation
Jedes geometrische Element erhält angehängte Daten in einer
INFO“-Klasse. Inner”
halb dieser Klasse werden Informationen wie Material, Vernetzerinformationen und
geometrische Beschreibungen zusammengefasst. Die geometrische Beschreibung des
Elements wird mit einem void-Pointer auf die jeweilige geometrische Beschreibungsklasse in dieser informations Klasse abgespeichert. Die geometrische Beschreibungsklasse ( Geo desc“) enthält u.a. Stützpunkte, parametrische Beschreibungen, Abfrage- und
”
Überschneidungsalgorithmen. Durch diese Kapselung kann jede Geometrieform einfach
implementiert werden. Sie garantiert Übersichtlichkeit und die Möglichkeit zur Weiterentwicklung der Datenstruktur. Abbildung 4.1 zeigt den allgemeinen Aufbau und die
Verknüpfung in der HDGS [5].
std::map<uint, Geo_class>
Geo_class
Topo_class
uint
mapkey
std::list<Topo_class*> t_list
Geo_info
info
...
Geo_class*
std::list<Down_class*>
int
void*
...
Geo_info
int
double*
int
void*
...
geo_class
t_list
up_type
up_ptr
Geo_desc
material
load
geotype
geodesc
Stützpunkte
Abfrage- und
Überschneidungs
algorithmen
Abbildung 4.1: Allgemeiner Aufbau und Verknüpfung der Objekte in der HDGS [5]
Zur Erweiterung der Datenstruktur wurden drei neue Beschreibungsklassen, für Spli-
KAPITEL 4. IMPLEMENTATION GEOMETRISCHER BESCHREIBUNGEN
27
nes, B-Spline und Bézier-Kurven, programmiert. Die Beschreibungsklassen erhielten
Stützpunktvektoren für die geometrische Beschreibung. In jeder Klasse wurden Erstellungs(Konstruktoren) und Löschmethoden (Destruktoren) definiert. Der Vernetzerexport
(zu gmsh), die Kopierfunktionalität und Ausgabemethoden wurden ebenso definiert
wie Translations- und Rotationsfunktionen.
Kurzbeschreibung der zu implementierenden Elemente
Ein Spline n-ten Grades ist eine Funktion, die stückweise aus Polynomen mit maximalem Grad n zusammengesetzt ist. Die Spline, die in die Geometriedatenstruktur
implementiert wurde, besitzen den Grad 2. Das Aussehen der Kurven wird über ihre
Stützpunkte bestimmt.
Die B-Spline-Kurve wird durch so genannte De-Boor-Punkte (Stützpunkte) bestimmt,
mit denen sich das Aussehen der Kurve steuern lässt: Die Kurve liegt immer in der
konvexen Hülle der Stützpunkte, wird also von ihnen eingeschlossen. Die B-Spline, die
in die Geometriedatenstruktur implementiert wurde, besitzen den Grad 3.
Eine ähnliche Darstellung haben Bézier-Kurven. Diese basieren auf den Bernsteinpolynomen1 . Genau wie es bei B-Spline-Kurven die De-Boor-Punkte gibt, gibt es hier
die Bézier-Punkte, die das sogenannte Kontrollpolygon bilden und mit denen man die
Kurve darstellen kann.
4.2
Beispiele
Als Beispiel für die Verifizierung der implementierten Geometriebeschreibung sollen
aus Spline- und B-Spline- sowie Bézier-Kurven begrenzte Fläche erzeugt werden. Desweiteren sollen anhand des Beispiels die Befehle vorgestellt und eingeführt werden. Die
verwendeten Befehle gehören der SLang Kommandogruppe red“ an.
”
Zu Beginn muss das MODEL angelegt werden.
red create, , , /
Als nächstes werden die Knoten der Anfangs- und Endpunkte der zu erstellenden Kanten eingegeben.
1
Die Bernsteinpolynome sind eine Familie reeller Polynome mit ganzzahligen Koeffizienten
KAPITEL 4. IMPLEMENTATION GEOMETRISCHER BESCHREIBUNGEN
28
Y
Z
X
Abbildung 4.2: red create: Erstellen eines MODELs
red create, vertex man, 1 0 0 0, /
red create, vertex man, 2 1 0 0, /
red create, vertex man, 3 0 3 0, /
red create, vertex man, 4 1 3 0, /
red create, vertex man, 5 3 0 0, /
red create, vertex man, 6 3 3 0, /
red create, vertex man, 7 6 0 0, /
red create, vertex man, 8 6 3 0, /
red create, vertex man, 9 8 0 0, /
red create, vertex man, 10 8 3 0, /
3
4
6
8
10
1
2
5
7
9
Y
Z
X
Abbildung 4.3: red create: Anlegen der Knotenpunkte
Anschließend werden die Knoten durch Kanten verbunden. Die Kante 1 bis 7 sind
KAPITEL 4. IMPLEMENTATION GEOMETRISCHER BESCHREIBUNGEN
29
Kanten aus Linienelementen und werden mit den Befehl
red create, edge man, 1 1 2 , /
red create, edge man, 2 3 1, /
red create, edge man, 3 3 4 , /
red create, edge man, 4 2 4 , /
red create, edge man, 5 5 6 , /
red create, edge man, 6 7 8 , /
red create, edge man, 7 9 10 , /
3
3
2
1
1
4
6
8
10
4
5
6
7
2
5
7
Y
9
Z
X
Abbildung 4.4: red create: Anlegen der linearen Elemente
erzeugt. Die nächste Kante soll eine Spline-Definition besitzen. Dafür wir der im Rahmen dieser Arbeit implementierte Befehl
red create, spline man, 8 6 5 6 2. 0. 0. 2. 3. 2.,/
benutzt. Der Befehl red create, spline man, 8 6 5 6 2. 0. 0. 2. 3. 2.,/ erzeugt die Kante 8 zwischen den VERTICES 5 und 6 mit der geometrischen Beschreibung eines Splines. Der Stützpunkt liegt bei (2, 0, 0) und (2, 3, 2). Die zweite Zahl (6)
gibt an, wieviele Koordinaten (der Stützpunkte) eingegeben werden müssen
Die neunte Kante soll die Form eines B-Splines beschreiben. Mit dem neu implementierten Befehl
red create, bspline man, 9 6 7 8 5. 0. 0. 5. 3. 2.,/
wird die Kante 9 zwischen den VERTICES 7 und 8 mit der geometrischen Beschreibung
KAPITEL 4. IMPLEMENTATION GEOMETRISCHER BESCHREIBUNGEN
3
4
3
2
4
1
12
8
2
1
11
6
8
10
5
6
7
5
7
Y 9
Z
30
X
Abbildung 4.5: red create: Anlegen der Spline-Kurve
eines B-Splines angelegt. Der Stützpunkt liegt bei (5, 0, 0) und (5, 3, 2). Die zweite
Zahl (6) gibt an, wieviele Koordinaten (der Stützpunkte) eingegeben werden müssen.
Um der letzten Kante die Form einer Bézier-Kurve zu geben, wird der Befehl
3
4
3
2
4
12
8
6
14
8
10
5
9
6
7
5
13
7
Y
1
2
1
11
Z
9
X
Abbildung 4.6: red create: Anlegen der B-Spline-Kurve
red create, bezier man, 10 6 9 10 7. 0. 0. 7. 3. 2.,/
benutzt. Dieser erzeugt die Kante 10 zwischen den VERTICES 9 und 10 mit der geometrischen Beschreibung einer Bézier-Kurve. Der Stützpunkt liegt bei (7, 0, 0) und (7,
3, 2). Die zweite Zahl (6) gibt an, wieviele Koordinaten(der Stützpunkte) eingegeben
werden müssen.
KAPITEL 4. IMPLEMENTATION GEOMETRISCHER BESCHREIBUNGEN
3
3
2
1
4
4
1
12
8
2
11
6
14
8
5
9
6
5
13
7
16
31
10
10
15
7
Y
9
Z
X
Abbildung 4.7: red create: Anlegen der Bézier-Kurve
Die Kanten bilden geweils zusammen einen geschlossene Fläche. Mit dem Befehl
red create, face man, 1 4 1 2 3 4,/
red create, face man, 2 2 5 6,/
red create, face man, 3 2 7 8,/
red create, face man, 4 2 9 10,/
werden die Kanten zu einer Fläche zusammengefasst.
Dieses Beispiel zeigt die Funktionsweise der neu implementierten Befehle. Sie können
3
3
2
1
4
4
1
2
12
8
11
6
14
8
5
9
6
5
13
7
16
10
10
15
7
Y
9
Z
X
Abbildung 4.8: red create: Anlegen der Flächen
wie jeder andere Befehl der Kommandogruppe red benutzt und kombiniert werden.
Kapitel 5
Zusammenfassung
Die geometrische Modellierung realer dreidimensionaler Objekte ist eine wichtige Grundlage für die numerische Simulation physikalischer Prozesse.
Im Rahmen einer Diplomarbeit[5] wurde in das Programmsystem SLang eine Hybridgeometriedatenstruktur (HGDS) implementiert. Zu Beginn diser Arbeit existierte für die
HGDS noch keine Möglichkeit zum Austausch der Geometriedaten auf Grundlage
des Drawing Interchange Format (DXF R12/LT2). Die Implementation dieser Option ermöglicht das Einlesen von Modellen aus CAD-Programmen. Dadurch wird die
Fehleranfälligkeit im Vergleich zur Eingabe von Hand in die HGDS reduziert und die
Benutzerfreundlichkeit gesteigert. Dies wird durch eine Vielzahl von Zeichenhilfsmitteln
in den CAD-Programmen ermöglicht.
Um diesen Import zu realisieren, wurde die Struktur des DXF im Rahmen dieser Arbeit untersucht.
In dem DXF R12/LT2 Datentyp werden keine topologischen Informationen über erstellte Modelle abgespeichert, sondern nur die der Grundelemente.Um dennoch die
Information der Zusammengehörigkeit zu erhalten, wurde festgelegt, dass alle Objekte
in einen eigenen Layer gezeichnet werden. Somit kann beim Parsen des Modells die
Information der topologischen Zusammengehörigkeit übergeben und mit abgespeichert
werden.
Da das DXF redundant ist, müssen nach dem Einlesen des Modells in die interne Datenstruktur des Parsers die redundanten Daten gelöscht werden. Nach dem Löschen
erfolgt das neu nummerieren der verbleibenden Daten, aus Gründen der Übersichtlichkeit. Anschließend wird das Modell in Form der Befehle der SLang -Kommandogruppe
32
KAPITEL 5. ZUSAMMENFASSUNG
33
red“ in das Inputfile geschrieben.
”
Zur Zeit stehen zwei Möglichkeiten für die Visualisierung zur Verfügung. So können
linear begrenzte Modelle mit der SLang -internen Visualisierung umgesetzt werden. Desweiteren kann die Geometrie einem Vernetzer(gmsh) übergeben werden. Dieser kann
zurVisualisierung und zum Vernetzen der Geometrie genutzt werden. Die vernetzte
Geometrie steht dann zur Strukturmechanischen Auswertung zur Verfügung.
Die geometrische Beschreibung der Linie in der HGDS wurde im Rahmen dieser Arbeit
um die Kantendefinitionen von Spline-, B-Spline- und Bézierkurven erweitert. Dafür
wurden drei geometrische Beschreibungsklassen angelegt. Diese sind Teil der HGDS. In
den neu implementierten Beschreibungsklassen wurden Erstell- und Löschmethoden definiert. Desweiteren besitzen sie einen Stützpunktvektor, in dem die Stützpunkte für die
geometrische Beschreibung abgespeichert werden. Der Vernetzerexport (zu gmsh), die
Kopierfunktionalität und Ausgabemethoden wurden ebenso definiert wie Translationsund Rotationsfunktionen.
Aufgrund der im Rahmen dieser Arbeit gewonnenen Erkenntnise können folgende Vorschläge für die Erweiterung der Funktionsfähigkeit des DXF-Parsers gegeben werden:
ˆ Einlesen von höheren DXF-Versionen (in denen topologische Informationen über
das Modell ebenfalls abgespeichert werden)
ˆ DXF-Output zur Verwendung der Geometrie in anderen Progammen
ˆ Implementation einfacher Überschneidungsalgorithmen
ˆ Ausbau der Funktionalität von visualize geometry“
”
ˆ Erweiterung der geometrischen Beschreibungen für Flächen
Literaturverzeichnis
[1] Bucher, C. et. al. SLang The Structural Language. Institute of Structural Mechanics,
Bauhaus-University of Weimar, Germany; version 5.09; 2005
[2] Geuzaine, C.; Remacle, J.-F.: Gmsh Reference Manual; 2006
[3] Rudolph, D.: Der DXF-Standart, TLC The Learning Companie; 1993
[4] Rudolph, D.: DXF intern, CR/LF GmbH; 1998
[5] Schneider, D.: Konzept und Implementierung einer Geometrie-Datenstruktur in das
Programmsystem SLang basierend auf der Boundary Representation Data Struc”
ture “; Bauhaus-Universität Weimar; 2006
[6] Weiler, K.J.: Topological structures for geometric Modeling; PhD Thesis; Rensselear
Polytechnic Institute; 1986
34
Abbildungsverzeichnis
2.1
Aufbau der Abschnitte . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.2
Aufbau der DXF-Datei . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3.1
Parserstruktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
3.2
Beispiel Redundanz . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.3
Aufbau Datenstruktur . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.4
linear begrenzte Modelle im Programm AutoCAD . . . . . . . . . . . .
22
3.5
Darstellung linear begrenzter Modelle mit visualize geometry“
”
. . . .
23
3.6
nichtlinear begrenzte Modelle im Programm AutoCAD . . . . . . . . .
24
3.7
Darstellung nichtlinear begrenzter Modelle mit gmsh“ . . . . . . . . .
”
24
4.1
Allgemeiner Aufbau und Verknüpfung der Objekte in der HDGS [5] . .
26
4.2
red create: Erstellen eines MODELs . . . . . . . . . . . . . . . . . . . .
28
4.3
red create: Anlegen der Knotenpunkte . . . . . . . . . . . . . . . . . .
28
4.4
red create: Anlegen der linearen Elemente . . . . . . . . . . . . . . . .
29
4.5
red create: Anlegen der Spline-Kurve . . . . . . . . . . . . . . . . . . .
30
4.6
red create: Anlegen der B-Spline-Kurve . . . . . . . . . . . . . . . . . .
30
35
ABBILDUNGSVERZEICHNIS
36
4.7
red create: Anlegen der Bézier-Kurve . . . . . . . . . . . . . . . . . . .
31
4.8
red create: Anlegen der Flächen . . . . . . . . . . . . . . . . . . . . . .
31
Anhang
A.1
POINT
Der Elementtyp POINT beschreibt ein einfaches Zeichnungselement ohne Unterobjekte.
A.2
Gruppe
Bedeutung
0
8
6
62
39
5
67
10
20
30
210
220
230
50
Elementtyp
Layer
Linientyp
Farbe
Objekthöhe
Elementreferenz
Bereich
X-Koordinate
Y-Koordinate
Z-Koordinate
X-Koordinate Hochzugsrichtung
Y-Koordinate Hochzugsrichtung
Z-Koordinate Hochzugsrichtung
Lage der Waagerechten
Wert
Attribut
POINT
String
String
integer
float
String
integer
float
float
float
float
float
float
float
muss
ja
ja
nein
nein
nein
nein
nein
ja
ja
ja
nein
nein
nein
nein
CIRCLE
CIRCLE beschreibt einen Vollkreis im dreidimensionalen Raum und ist ein einfaches
Zeichnungselement ohne Unterobjekte.
37
ABBILDUNGSVERZEICHNIS
38
Gruppe
Bedeutung
0
8
6
62
39
5
67
10
20
30
210
220
230
40
Elementtyp
Layer
Linientyp
Farbe
Objekthöhe
Elementreferenz
Bereich
X-Koordinate des Kreismittelpunkts
Y-Koordinate des Kreismittelpunkts
Z-Koordinate des Kreismittelpunkts
X-Koordinate Hochzugsrichtung
Y-Koordinate Hochzugsrichtung
Z-Koordinate Hochzugsrichtung
Radius des Kreises
Wert
Attribut
CIRCLE
String
String
integer
float
String
integer
float
float
float
float
float
float
float
muss
ja
ja
nein
nein
nein
nein
nein
ja
ja
ja
nein
nein
nein
ja
ABBILDUNGSVERZEICHNIS
A.3
39
ARC
Der Elementtyp ARC beschreibt einen Kreisbogen im dreidimensionalen Raum und ist
ein einfaches Zeichnungselement ohne Unterobjekte.
Gruppe
Bedeutung
0
8
6
62
39
5
67
10
20
30
210
220
230
40
50
51
Elementtyp
Layer
Linientyp
Farbe
Objekthöhe
Elementreferenz
Bereich
X-Koordinate des Kreismittelpunkts
Y-Koordinate des Kreismittelpunkts
Z-Koordinate des Kreismittelpunkts
X-Koordinate Hochzugsrichtung
Y-Koordinate Hochzugsrichtung
Z-Koordinate Hochzugsrichtung
Radius des Kreises
Anfangswinkle
Endwinkle
Wert
Attribut
ARC
String
String
integer
float
String
integer
float
float
float
float
float
float
float
float
float
muss
ja
ja
nein
nein
nein
nein
nein
ja
ja
ja
nein
nein
nein
ja
ja
ja
ABBILDUNGSVERZEICHNIS
A.4
40
SOLID
Der Elementtyp SOLID definiert eine ebene Fläche im dreidimensionalen Raum und
ist ein einfaches Zeichnungselement ohne Unterobjekte.
Gruppe
Bedeutung
0
8
6
62
39
5
67
10
20
30
11
21
31
12
22
32
13
23
33
210
220
230
Elementtyp
Layer
Linientyp
Farbe
Objekthöhe
Elementreferenz
Bereich
X-Koordinate des ersten Eckpunkts
Y-Koordinate des ersten Eckpunkts
Z-Koordinate des ersten Eckpunkts
X-Koordinate des zweiten Eckpunkts
Y-Koordinate des zweiten Eckpunkts
Z-Koordinate des zweiten Eckpunkts
X-Koordinate des dritten Eckpunkts
Y-Koordinate des dritten Eckpunkts
Z-Koordinate des dritten Eckpunkts
X-Koordinate des vierten Eckpunkts
Y-Koordinate des vierten Eckpunkts
Z-Koordinate des vierten Eckpunkts
X-Koordinate Hochzugsrichtung
Y-Koordinate Hochzugsrichtung
Z-Koordinate Hochzugsrichtung
Wert
Attribut
SOLID
String
String
integer
float
String
integer
float
float
float
float
float
float
float
float
float
float
float
float
float
float
float
muss
ja
ja
nein
nein
nein
nein
nein
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
nein
nein
nein
ABBILDUNGSVERZEICHNIS
A.5
41
TRACE
Der Elementtyp TRACE entspricht in allen Punkten dem Element SOLID.
A.6
3DFACE
Der Elementtyp 3DFACE beschreibt ein einfaches Zeichnungselement ohne Unterelemente. Es definiert eine Fläche im dreidimensionalen Raum. Die Fläche wird durch vier
Punkte beschrieben, die an beliebigen Positionen liegen und diese werden durch Weltkoordinaten ausgedrückt. Die Flächenkanten werden durch geradlinige Verbindungen
zwischen den Eckpunkten gebildet. Der Syntax entspricht dem des Elements SOLID.
ABBILDUNGSVERZEICHNIS
A.7
42
POLYLINE
Der Elementtyp POLYLINE beschreibt ein komplexes Zeichnungelement mit Unterobjekten.
POLYLINE definiert verschiedene Arten von Kurven und Flächen und enthält in jedem
Fall mindestens zwei Unterelemente vom Typ VERTEX. Die Definition vom Element
VERTEX wird abgeschlossen durch das Unterelement SEQEND.
Gruppe
0
8
6
62
39
5
67
66
10
20
30
70
40
41
210
220
230
71
72
73
74
75
Bedeutung
Elementtyp
Layer
Linientyp
Farbe
Objekthoehe
Elementreferenz
Bereich
VERTEX-Beschreibung
X-Koordinate des Basispunkts
Y-Koordinate des Basispunkts
Z-Koordinate des Basispunkts
Bedeutung der Polylinie
vorgegebene Anfangsbreite
vorgegebene Endbreite
X-Koordinate Hochzugsrichtung
Y-Koordinate Hochzugsrichtung
Z-Koordinate Hochzugsrichtung
Anzahl Scheitel/Kontrollpunkte in M-Richtung
Anzahl Scheitel/Kontrollpunkte in N-Richtung
Dichte der appr. Darstellung in M-Richtung
Dichte der appr. Darstellung in N-Richtung
Wert für die Art der Glätung von Kurven und Flächen
Wert
POLYLINE
String
String
integer
float
String
integer
1
float
float
float
integer
float
float
float
float
float
integer
integer
integer
integer
integer
muss
ja
ja
nein
nein
nein
nein
nein
ja
ja
ja
ja
nein
nein
nein
nein
nein
nein
nein
nein
nein
nein
nein
VERTEX
Auf den Definitionskopf eines Elements POLYLINE folgt eine Anzahl von Unterelementen vom Typ VERTEX. Der Elementtyp VERTEX definiert einen Scheitelpunkt einer
Kurve oder Fläche oder eine Einzelfläche im Vielflächennetz. Jede Fläche, die durch
das Element vom Typ POLYLINE dargestellt wird, enthält mindestens zwei Elemente
vom Typ VERTEX. Die Definition der Scheitelpunkte wird von einem Unterelement
SEQEND abgeschlossen.
ABBILDUNGSVERZEICHNIS
43
Bei 2D-Kurven werden alle Scheitelpunkte in Elementkoordinaten angegeben, bei 3DKurven und Flächen werden die Punkte in Weltkoordinaten angegeben.
Die geometrische Bedeutung des Unterelements VERTEX wird in der Gruppe 70 definiert und hängt von der Art der Kurve oder Fläche ab, die durch das jeweilige Element
POLYLINE beschrieben wird.
Syntax des Elements VERTEX
Element VERTEX
<Scheitelpunkt 2D-Kurve>|
<Scheitelpunkt 2D- B- Spline Kurve>|
<Kontrollpunkt 2D- B- Spline Kurve>|
<Scheitelpunkt 3D- B- Spline Kurve>|
<Kontrollpunkt 3D- B- Spline Kurve>|
<Scheitelpunkt Polygonnetz>|
<Scheitelpunkt B- Spline
Kurve>|
<Kontrollpunkt B- Spline
Kurve>|
<Scheitelpunkt Bezier-Fl"ache>|
<Kontrollpunkt Bezier-Fl"ache>|
<Scheitelpunkt Vielfl"achennetz>|
<Kontrollpunkt Vielfl"achennetz>
Die jeweiligen Definitionen finden Sie in den entsprechenden Unterkapiteln.
SEQEND
Einem Element POLYLINE folgt immer eine Reihe von Scheitelpunkten (Element
VERTEX). Auf das letzte Element dieser Reihe folgt ein Element SEQEND, das damit das Ende des komplexen Elements POLYLINE kennzeichnet. Die Gruppen des
Elements SEQEND sind ohne Bedeutung denn sie entsprechen den Werten des Definitionskopfes der Polylinie.
2D-Kurve
Kurven werden durch eine Abfolge von Scheitelpunkten (VERTEX) definiert. Die Anzahl der Scheitelpunkte ist beliebig größer oder gleich zwei und wird im Kopf einer
ABBILDUNGSVERZEICHNIS
44
POLYLINE nicht angegeben. Wenn der Wert der Gruppe 70 im Definitionskopf des
Elements POLYLINE kleiner als 4 ist, definiert die Polylinie eine aus Strecken und
Kreisbögen zusammengesetzte 2D- Kurve. Bei 2D- Kurven werden alle Koordinaten der
Scheitelpunkte in Elementkoordinaten angegeben. Aus der Hochzugsrichtung (Gruppe
210, 220, 230) lassen sich die Weltkoordinaten berechnen. Die 2D- Kurve liegt immer
parallel zur X/Y Ebene des Elementkoordinatensystems.
2D- KURVE - VERTEX Elemente können außer den Gruppen 10, 20, 30 auch die
Gruppen
Startbreite
Endbreite
Ausbuchtung
Tangentenrichtung
Hochzugsrichtung
40
41
42
50
210, 220, 230
besitzen. Falls die Gruppe 70 den Wert 3 besitzt ist sie ein Scheitelpunkt einer 2DKurve, der durch die Interpolation mit Kreisboegen zusätzlich erzeugt wurde und für
den bei der Interpolation eine bestimmte Tangentenrichtung festgelegt wurde. Falls
keine Gruppe 70 vorhanden ist, gilt die Voreinstellung (0) =Scheitelpunkt einer 2DKurve. Die Werte 1 und 2 enthalten nur Information zur Entstehungsgeschichte. Wenn
Gruppe 42 Ausbuchtungsmaß gegeben ist handelt es sich um einen Kreisbogen (der
erste ist auch der letzte Scheitelpunkt obwohl er nicht noch mal angegeben wird).
Breite “ 2D- Kurve
”
Eine 2D- Kurve kann als einziges Element eine Strichstärke (Breite) besitzen. Die Startbreite wird im Definitionskopf des Elements POLYLINE in der Gruppe 40 und die Endbreite in der Gruppe 41 definiert. Der Endwert ist gleich dem Startwert des nächsten
Elements(VERTEX). An den Segmentgrenzen werden breite “ Liniensegmente glatt
”
verbunden, wenn der eingeschlossene Winkel größer als 28 ist, sonst werden sie normal
gezeichnet und gerade Verbunden. Dies kann auch mit Kreisbogensegmenten gemacht
werden. Des Weiteren können diesen Elementen auch Objekthöhen zugewiesen werden
(Gruppe 39).
ABBILDUNGSVERZEICHNIS
45
Syntax einer 2D-Kurve
2D-Kurve
0
POLYLINE
<Layerzuordnung>
<Linientypzuordnung>
<Farbzuordnung>
<Elementreferenzzuordnung>
<Bereichszuordnung>
<Objekthoehenzuordnung>
<Basispunkt 2D-Kurve>
<Beschreibung der 2D-Kurve>
<vorgegebene Anfangsbreite>
<vorgegebene Endbreite>
<Hochzugsrichtung>
<erweiterte Elemendaten>
<Scheitelpunkt 2D-Kurve>
<Scheitelpunkt 2D-Kurve>
<Scheitelpunkt 2D-Kurve>^n
<Element SEQEND>
Beschreibung der 2D-Kurve
70
0|1|2|3|128|130|131
vorgegbene Anfangsbreite
40
<Strichst"ake>
vorgegbene Endbreite
41
<Strichst"ake>
Scheitelpunkt 2D-Kurve
0
VERTEX
<Layerzuordnung>
<Linientypzuordnung>
ABBILDUNGSVERZEICHNIS
46
<Farbzuordnung>
<Elementreferenzzuordnung>
<Bereichszuordnung>
<Objekthoehenzuordnung>
<Beschreibung Scheitelpunkt 2D-Kurve>
<X-Koordinate des Punkts>
<Y-Koordinate des Punkts>
<Z-Koordinate des Punkts>
<Anfangsbreite>
<Endbreite>
<Ausbuchtung fuer Bogensegmente>
<Tangentenrichtung fuer Bogensegmente>
<Hochzugsrichtung>
<erweiterte Elementdaten>
Beschreibung Scheitelpunkt 2D-Kurve
70
0|1|2|3
Ausbuchtung fuer Bogensegmente
42
<float>
Tangentenrichtung fuer Bogensegmente 50
<float>
2D-B-Spline-Kurve
Der Wert der Gruppe 70 im Definitionskopf des Elements POLYLINE kann gleich 4
oder 5 (gegebenenfalls +128) sein, dann handelt es sich um ein 2D-B-Spline-Kurve.
Zusätzlich muß im Definitionskopf des Elements POLYLINE die Gruppe 75 definiert
sein; sie gibt die Ordnung der B-Spline-Kurve an. Optional kann es auch die Gruppen
(39, 40, 41, 210, 220, 230) besitzen deren Bedeutung bereits erläutert wurde. Die Gruppe 75 kann den Wert 5 (das Element POLYLINE beschreibt einen uniformen, nichtrationalen B-Spline der Ordnung 3) oder Wert 6 ( uniformer, nicht-rationaler B-Spline
der Ordnung 4) enthalten. Zusätzlich zu der exakten Definition durch Kontrollpunkte
und Trägervektor ist in der DXF-Datei eine durch Linien- oder Bogensegmente ap-
ABBILDUNGSVERZEICHNIS
47
proximierte Darstellung enthalten. Von diesem Element existieren auch Breite “ und
”
Hochgezogene “ Varianten.
”
Syntax einer 2D-Kurve
2D-B-Spline-Kurve 0
POLYLINE
<Layerzuordnung>
<Linientypzuordnung>
<Farbzuordnung>
<Elementreferenzzuordnung>
<Bereichszuordnung>
<Objekthoehenzuordnung>
<Basispunkt 2D-B-Spline-Kurve>
<Beschreibung 2D-B-Spline-Kurve>
<vorgegebene Anfangsbreite>
<vorgegebene Endbreite>
<Hochzugsrichtung>
<erweiterte Elemendaten>
<Kontrollpunkt 2D-B-Spline-Kurve>
<Scheitelpunkt 2D-B-Spline-Kurve>^m
<Kontrollpunkt 2D-B-Spline-Kurve>^n-1
<Element SEQEND>
Beschreibung 2D-B-Spline-Kurve 70
4|5|132|133
Scheitelpunkt 2D-B-Spline-Kurve
0
VERTEX
<Layerzuordnung>
<Linientypzuordnung>
<Farbzuordnung>
<Elementreferenzzuordnung>
<Bereichszuordnung>
<Objekthoehenzuordnung>
ABBILDUNGSVERZEICHNIS
48
<Beschreibung Scheitelpunkt 2D-B-Spline-Kurve>
<X-Koordinate des Punkts>
<Y-Koordinate des Punkts>
<Z-Koordinate des Punkts>
<Anfangsbreite>
<Endbreite>
<Hochzugsrichtung>
<erweiterte Elementdaten>
Kontrollpunkt 2D-B-Spline-Kurve
0
VERTEX
<Layerzuordnung>
<Linientypzuordnung>
<Farbzuordnung>
<Elementreferenzzuordnung>
<Bereichszuordnung>
<Objekthoehenzuordnung>
<Beschreinbung Kontrollpunkt 2D-B-Spline-Kurve>
<X-Koordinate des Punkts>
<Y-Koordinate des Punkts>
<Z-Koordinate des Punkts>
<Anfangsbreite>
<Endbreite>
<Hochzugsrichtung>
<erweiterte Elementdaten>
Beschreibung Scheitelpunkt 2D-B-Spline-Kurve 70
1|8
Beschreibung Kontrollpunkt 2D-B-Spline-Kurve 70
16
ABBILDUNGSVERZEICHNIS
49
3D-Kurve (Polygonzug)
Wenn der Wert der Gruppe 70 im Definitionskopf des Elements POLYLINE den Wert
8 oder 9 angenommen hat, definiert die Polylinie eine 3D-Kurve, die sich ausschließlich
aus Liniensegmenten zusammensetzt. Die Scheitelpunkte (VERTEX) einer 3D-Kurve
besitzen keine zusätzlichen Eigenschaften. Die Gruppe 70, die die Bedeutung des jeweiligen Scheitelpunktes bestimmt, kann nur den Wert 32 = Scheitelpunkteiner3D −
Kurve annehmen. Falls der Wert der Gruppe 70 im Definitionskopf des Elements POLYLINE gleich 9 (8+1) ist, handelt es sich um eine geschlossene 3D-Kurve, d.h. der
letzte und der erste Scheitelpunkt werden zusätzlich durch ein Liniensegment verbunden, ohne daß der erste Scheitelpunkt noch einmal explizit angegeben wird.
Syntax einer 3D-Kurve
3D-Kurve
0
POLYLINE
<Layerzuordnung>
<Linientypzuordnung>
<Farbzuordnung>
<Elementreferenzzuordnung>
<Bereichszuordnung>
<Objekthoehenzuordnung>
<NULL Basispunkt>
<Beschreibung 3D-Kurve>
<erweiterte Elemendaten>
<Scheitelpunkt 3D-Kurve>
<Scheitelpunkt 3D-Kurve> ^n
<Element SEQEND>
Beschreibung 3D-Kurve 70
8|9
Scheitelpunkt 3D-Kurve
0
VERTEX
<Layerzuordnung>
<Linientypzuordnung>
ABBILDUNGSVERZEICHNIS
50
<Farbzuordnung>
<Elementreferenzzuordnung>
<Bereichszuordnung>
<Beschreibung Scheitelpunkt 3D-Kurve>
<X-Koordinate des Punkts>
<Y-Koordinate des Punkts>
<Z-Koordinate des Punkts>
<erweiterte Elementdaten>
Beschreibung Scheitelpunkt 3D-Kurve
70
32
3D-B-Spline-Kurve
Der Wert der Gruppe 70 im Definitionskopf des Elements POLYLINE muß gleich 12
oder 13 sein, dann handelt es sich um eine 3D-B-Spline-Kurve. Zusätzlich muß in
diesen Definitionskopf die Gruppe 75 definiert sein, sie gibt die Ordnung der B-SplineKurve an. Die Gruppe 75 kann den Wert 5 (das Element POLYLINE beschreibt einen
uniformen, nicht-rationalen B-Spline der Ordnung 3) oder Wert 6 (uniformer, nichtrationaler B-Spline der Ordnung 4) enthalten. Zusätzlich zu der exakten Definition
durch Kontrollpunkte und Trägervektor ist in der DXF-Datei eine durch Liniensegmente approximierte Darstellung enthalten. Die Scheitelpunkte (VERTEX) einer 3DB-Spline-Kurve besitzen keine zusätzlichen Gruppen. Die Gruppe 70, die die Bedeutung
des jeweiligen Scheitelpunktes bestimmt, kann die Werte 40 für zusätzlich eingefügter
Scheitelpunkt zur approximativen Darstellung einer 3D-B-Spline-Kurve und 48 für BSpline-Kontrollpunkt annehmen.
Syntax einer 3D-B-Spline-Kurve
3D-Spline-Kurve 0
POLYLINE
<Layerzuordnung>
ABBILDUNGSVERZEICHNIS
51
<Linientypzuordnung>
<Farbzuordnung>
<Elementreferenzzuordnung>
<Bereichszuordnung>
<NULL Basispunkt>
<Beschreibung 3D-B-Spline-Kurve>
<erweiterte Elemendaten>
<Kontrollpunkt 3D-B-Spline-Kurve>
<Scheitelpunkt 3D-B-Spline-Kurve>^m
<Kontrollpunkt 3D-B-Spline-Kurve>^n
<Element SEQEND>
Beschreibung 3D-B-Spline-Kurve
70
12|13
Scheitelpunkt 3D-B-Spline-Kurve
0
VERTEX
<Layerzuordnung>
<Linientypzuordnung>
<Farbzuordnung>
<Elementreferenzzuordnung>
<Bereichszuordnung>
<Beschreibung Scheitelpunkt 3D-B-Spline-Kurve>
<X-Koordinate des Punkts>
<Y-Koordinate des Punkts>
<Z-Koordinate des Punkts>
<erweiterte Elementdaten>
Kontrollpunkt 3D-B-Spline-Kurve
0
VERTEX
<Layerzuordnung>
<Linientypzuordnung>
<Farbzuordnung>
<Elementreferenzzuordnung>
<Bereichszuordnung>
<Beschreibung Kontrollpunkt 3D-B-Spline-Kurve>
ABBILDUNGSVERZEICHNIS
52
<X-Koordinate des Punkts>
<Y-Koordinate des Punkts>
<Z-Koordinate des Punkts>
<erweiterte Elementdaten>
Beschreibung Scheitelpunkt 3D-B-Spline-Kurve 70
40
Beschreibung Kontrollpunkt 3D-B-Spline-Kurve 70
48
Polygonnetz
Flächen werden durch ein Gitter von Scheitelpunkten (VERTEX) definiert. Die Scheitelpunkte sind wie in einer Reihenfolge von Zeilen und Spalten in einer Matrix angeordnet. Wenn die Gruppe 70 den Wert 16 enthält, definiert das Element POLYLINE ein
Polygonnetz. Zusätzlich können die Summanden 1 und 32 vorkommen. Weiter muß der
Definitionskopf die Anzahl der Scheitelpunkte in M-Richtung (Gruppe 71) und in NRichtung (Gruppe 72) enthalten. Die Scheitelpunkte (VERTEX) eines Polygonnetzes
besitzen keine zusätzlichen Gruppen. Die Gruppe 70, die die Bedeutung des jeweiligen
Scheitelpunktes bestimmt, kann den Wert 64 für den Scheitelpunkt eines Polygonnetzes annehmen.
Syntax eines Polygonnetzes
Polygonnetz
0
POLYLINE
<Layerzuordnung>
<Linientypzuordnung>
<Farbzuordnung>
<Elementreferenzzuordnung>
<Bereichszuordnung>
<NULL Basispunkt>
<Beschreibung Polygonnetz>
ABBILDUNGSVERZEICHNIS
53
<Anzahl der Scheitelpunkte in M-Richtung>
<Anzahl der Scheitelpunkte in N-Richtung>
<erweiterte Elemendaten>
<Kontrollpunkt Polygonnetz>
<Scheitelpunkt Polygonnetz> ^n ^m
<Element SEQEND>
Beschreibung Polygonnetz
70
116|17|48|49
Anzahl der Scheitelpunkte in M-Richtung 71
<integer>
Anzahl der Scheitelpunkte in N-Richtung 72
<integer>
Scheitelpunkt Polygonnetz
0
VERTEX
<Layerzuordnung>
<Linientypzuordnung>
<Farbzuordnung>
<Elementreferenzzuordnung>
<Bereichszuordnung>
<Beschreibung Scheitelpunkt Polygonnetz>
<X-Koordinate des Punkts>
<Y-Koordinate des Punkts>
<Z-Koordinate des Punkts>
<erweiterte Elementdaten>
Beschreibung Scheitelpunkt Polygonnetz 70
64
ABBILDUNGSVERZEICHNIS
54
B-Spline-Fläche
Wenn der Wert der Gruppe 70 im Definitionskopf des Elements POLYLINE die Summanden 16 und 4 enthält, dann handelt es sich um eine B-Spline-Fläche. Zusätzlich
können in der Gruppe 70 die Summanden 1 und 32 vorkommen, wenn die B-SplineFläche in M- bzw. N-Richtung geschlossen ist. Weiterhin muß in diesem Definitionskopf die Gruppe 75 definiert sein; sie gibt die Ordnung der B-Spline-Fläche an. Die
Gruppe 75 kann den Wert 5 (das Element POLYLINE beschreibt einen uniformen,
nicht-rationalen B-Spline der Ordnung 3) oder Wert 6 ( uniformer, nicht-rationaler
B-Spline der Ordnung 4) enthalten. Zusätzlich zu der exakten Definition durch Kontrollpunkte und Trägervektor ist in der DXF-Datei eine durch Liniensegmente approximierte Darstellung enthalten. Die Scheitelpunkte (VERTEX) einer 3D-B-Spline-Kurve
besitzen keine zusätzlichen Gruppen. Die Gruppe 70, die die Bedeutung des jeweiligen Scheitelpunktes bestimmt, kann den Wert 72 (64+8) fuer einen Scheitelpunkt
zur approximativen Darstellung einer 3D-B-Spline-Fläche und 80 (64+16) fuer ein BSpline-Kontrollpunkt annehmen.
Syntax einer B-Spline-Fläche
B-Spline-Fl"ache
0
POLYLINE
<Layerzuordnung>
<Linientypzuordnung>
<Farbzuordnung>
<Elementreferenzzuordnung>
<Bereichszuordnung>
<NULL Basispunkt>
<Beschreibung B-Spline-Fl"ache>
<Anzahl nu der Kontrollpunkte in M-Richtung>
<Anzahl nv der Kontrollpunkte in N-Richtung>
<Anzahl M der Scheitelpunkte in M-Richtung>
<Anzahl N der Scheitelpunkte in N-Richtung>
<Oberfl"ahentyp>
<erweiterte Elemendaten>
<Kontrollpunkt B-Spline-Fl"ache>
<Scheitelpunkt B-Spline-Fl"ache> ^N ^M
ABBILDUNGSVERZEICHNIS
55
<Kontrollpunkt B-Spline-Fl"ache> ^nv-1
<Kontrollpunkt B-Spline-Fl"ache> ^nv ^nu-1
<Element SEQEND>
Beschreibung B-Spline-Fl"ache
70
20|21|52|53|
Anzahl nu der Kontrollpunkte in M-Richtung 71
<integer>
Anzahl nv der Kontrollpunkte in N-Richtung 72
<integer>
Anzahl M der Kontrollpunkte in M-Richtung 73
<integer>
Anzahl N der Kontrollpunkte in N-Richtung 74
<integer>
Oberfl"achentyp
75
5|6
Scheitelpunkt B-Spline-Fl"ache
0
VERTEX
<Layerzuordnung>
<Linientypzuordnung>
<Farbzuordnung>
<Elementreferenzzuordnung>
<Bereichszuordnung>
<Beschreibung Scheitelpunkt B-Spline-Fl"ache>
<X-Koordinate des Punkts>
<Y-Koordinate des Punkts>
<Z-Koordinate des Punkts>
<erweiterte Elementdaten>
Kontrollpunkt B-Spline-Fl"ache
0
ABBILDUNGSVERZEICHNIS
56
VERTEX
<Layerzuordnung>
<Linientypzuordnung>
<Farbzuordnung>
<Elementreferenzzuordnung>
<Bereichszuordnung>
<Beschreibung Kontrollpunkt B-Spline-Fl"ache>
<X-Koordinate des Punkts>
<Y-Koordinate des Punkts>
<Z-Koordinate des Punkts>
<erweiterte Elementdaten>
Beschreibung Scheitelpunkt B-Spline-Fl"ache 70
72
Beschreibung Kontrollpunkt B-Spline-Fl"ache
70
80
Bezier-Fläche
Die Definition einer Bezier-Fläche entspricht in beinahe allen Punkten der Definition
einer B-Spline-Fläche. Es handelt sich um eine Bezierfläche wenn der Wert der Gruppe
75 gleich 8 ist.
Syntax einer Bezier-Fläche
Bezier-Fl"ache
0
POLYLINE
<Layerzuordnung>
<Linientypzuordnung>
<Farbzuordnung>
<Elementreferenzzuordnung>
<Bereichszuordnung>
<NULL Basispunkt>
ABBILDUNGSVERZEICHNIS
57
<Beschreibung Bezier-Fl"ache>
<Anzahl nu der Kontrollpunkte in M-Richtung>
<Anzahl nv der Kontrollpunkte in N-Richtung>
<Anzahl M der Scheitelpunkte in M-Richtung>
<Anzahl N der Scheitelpunkte in N-Richtung>
<Oberfl"achentyp>
<erweiterte Elemendaten>
<Kontrollpunkt Bezier-Fl"ache>
<Scheitelpunkt Bezier-Fl"ache> ^N ^M
<Kontrollpunkt Bezier-Fl"ache> ^nv-1
<Kontrollpunkt Bezier-Fl"ache> ^nv ^nu-1
<Element SEQEND>
Beschreibung Bezier-Fl"ache
70
20|21|52|53|
Anzahl nu der Kontrollpunkte in M-Richtung 71
<integer>
Anzahl nv der Kontrollpunkte in N-Richtung 72
<integer>
Anzahl M der Kontrollpunkte in M-Richtung 73
<integer>
Anzahl N der Kontrollpunkte in N-Richtung 74
<integer>
Oberfl"achentyp
75
8
Scheitelpunkt Bezier-Fl"ache
0
VERTEX
<Layerzuordnung>
<Linientypzuordnung>
<Farbzuordnung>
<Elementreferenzzuordnung>
ABBILDUNGSVERZEICHNIS
58
<Bereichszuordnung>
<Beschreibung Scheitelpunkt Bezier-Fl"ache>
<X-Koordinate des Punkts>
<Y-Koordinate des Punkts>
<Z-Koordinate des Punkts>
<erweiterte Elementdaten>
Kontrollpunkt Bezier-Fl"ache
0
VERTEX
<Layerzuordnung>
<Linientypzuordnung>
<Farbzuordnung>
<Elementreferenzzuordnung>
<Bereichszuordnung>
<Beschreibung Kontrollpunkt Bezier-Fl"ache>
<X-Koordinate des Punkts>
<Y-Koordinate des Punkts>
<Z-Koordinate des Punkts>
<erweiterte Elementdaten>
Beschreibung Scheitelpunkt Bezier-Fl"ache 70
72
Beschreibung Kontrollpunkt Bezier-Fl"ache 70
80
Vielflächennetz
Wenn der Wert der Gruppe 70 im Definitionskopf des Elements POLYLINE gleich 64
ist, dann handelt es sich um ein Vielflächennetz. Ein solches besteht aus einer Ansammlung von Einzelflächen, die aus jeweils ein bis vier Scheitelpunkten zusammengesetzt
sind. Die Einzelflächen stehen in keiner Beziehung zueinander, d.h. sie muessen auch
geometrisch nicht aneinander grenzen. Der Definitionskopf der Polylinie kann neben den
immer vorkommenden Eigenschaften die folgenden Gruppen enthalten. In der Gruppe
ABBILDUNGSVERZEICHNIS
59
71 wird die Gesamtanzahl der Scheitelpunkte, die in einem Vielflächennetz vorkommen,
definiert. Der Wert der Gruppe 72 gibt die Anzahl der Einzelflächen an, aus denen das
Netz zusammengesetzt ist.
Es existieren zwei grundlegend verschiedene Arten von VERTEX-Elementen in einem
Vielflächennetz. Es werden normale Scheitelpunkte durch Angabe der Koordinaten definiert. Darueber hinaus existieren Elemente vom Typ VERTEX, die keinen Punkt
definieren, sondern eine Einzelfläche. Die Definition erfolgt jeweils ueber 1 bis 4 Scheitelpunkte, die durch laufende Nummern bezueglich der Gesamtabfolge der Scheitelpunkte referenziert werden. Die Gruppe 70 kann im Element VERTEX den Wert 192
(128+64) fuer einen Scheitelpunkt eines Vielflächennetzes annehmen oder den Wert
128 fuer die Definition einer Einzelfläche durch die Nummern von eins bis vier.
Syntax einer Vielflähennetz
Vielfl"achennetz
0
POLYLINE
<Layerzuordnung>
<Linientypzuordnung>
<Farbzuordnung>
<Elementreferenzzuordnung>
<Bereichszuordnung>
<NULL Basispunkt>
<Beschreibung Vielfl"achennetz>
<Anzahl M der Scheitelpunkte>
<Anzahl N der Einzelfl"achen>
<erweiterte Elemendaten>
<Kontrollpunkt Vielfl"achennetz>
<Scheitelpunkt Vielfl"achennetz> ^N
<Einzelfl"ahe Vielfl"achennetz> ^N
<Element SEQEND>
Beschreibung Vielfl"achennetz
70
64
Anzahl M der Scheitelpunkte 71
<integer>
ABBILDUNGSVERZEICHNIS
60
Anzahl N der Einzelfl"achen 72
<integer>
Scheitelpunkt Vielfl"achennetz 0
VERTEX
<Layerzuordnung>
<Linientypzuordnung>
<Farbzuordnung>
<Elementreferenzzuordnung>
<Bereichszuordnung>
<Beschreibung Scheitelpunkt Vielfl"achennetz>
<X-Koordinate des Punkts>
<Y-Koordinate des Punkts>
<Z-Koordinate des Punkts>
<erweiterte Elementdaten>
Einzelfl"ache Vielfl"achennetz 0
VERTEX
<Layerzuordnung>
<Linientypzuordnung>
<Farbzuordnung>
<Elementreferenzzuordnung>
<Bereichszuordnung>
<Beschreibung Einzelfl"ache>
10
0.0
20
0.0
30
0.0
<Fl"achendefinition>
<erweiterte Elementdaten>
Beschreibung Scheitelpunkt Vielfl"achennetz
70
192
ABBILDUNGSVERZEICHNIS
Beschreibung Einzelfl"ache
61
70
128
Fl"achendefinition
71
<integer>
72
<integer>
73
<integer>
74
<integer>
ABBILDUNGSVERZEICHNIS
A.8
CD-ROM
LaTex-Dateien
ˆ *.tex-File
ˆ zugehörige Bilderdateien
ˆ diese Arbeit im pdf-Format
Programmierung
ˆ Header-Dateien
ˆ *.cpp-Dateien
ˆ Testbeispiele
ˆ doxygen-Dokumentation
62
A.9
Erklärung
Ich erkläre, dass ich die vorliegende Arbeit selbständig und nur unter Verwendung der
angegebenen Quellen und Hilfsmittel angefertigt habe.
Weimar, 17.12.2006
T obias M ehlhorn

Documentos relacionados