Zum Inhalt springen

MWT Syntax-Makro MASSEN: Unterschied zwischen den Versionen

Aus VermCAD Hilfe Wiki
Querverweis auf das Makro PROFIL - Task DGM
Stand 28.09.2026: Sätze STUETZ und BRUCH, KORRIDOR, Mischfläche, MODELL entfällt, Rechenmodell neu (exakte Prismen, Mittel beider Diagonalen, Teilung an der Nulllinie), Fehlertabelle, Beispiele, Bilder (Task DGM)
 
Zeile 1: Zeile 1:
{{DISPLAYTITLE:MASSEN}}
{{DISPLAYTITLE:MASSEN}}
Das Makro MASSEN berechnet das Volumen zwischen einer '''Ist-Fläche''' (dem Gelände) und einer '''Soll-Fläche''' (dem Planum) innerhalb eines Umrings aus koordinierten Punkten. Ausgegeben werden Abtrag, Auftrag und die Nettomasse. Als Höhenquelle dient wahlweise das digitale Geländemodell aus dem [[Optionen Menü-Das Dialogfenster DGM-Verwaltung|DGM-Katalog]] oder die Dreiecksvermaschung der Umringpunkte.
Das Makro MASSEN berechnet das Volumen zwischen einer '''Ist-Fläche''' (dem Gelände) und einer '''Soll-Fläche''' (dem Planum) innerhalb eines Umrings aus koordinierten Punkten. Ausgegeben werden Abtrag, Auftrag und die Nettomasse. Als Höhenquelle dient wahlweise das digitale Geländemodell aus dem [[Optionen Menü-Das Dialogfenster DGM-Verwaltung|DGM-Katalog]] oder die Dreiecksvermaschung gemessener Punkte. Zusätzliche '''Stützpunkte''' und '''Bruchkanten''' gehen in die Vermaschung ein oder korrigieren das DGM dort, wo der Vermesser es besser weiß.


Das Makro entsteht über '''Rechnen''' → '''Massenberechnung''' ([[Rechnen Menü-Das Dialogfenster Massenberechnung|Dialogfenster Massenberechnung]]). Verfügbar ab Version 5.1.
Das Makro entsteht über '''Rechnen''' → '''Massenberechnung''' ([[Rechnen Menü-Das Dialogfenster Massenberechnung|Dialogfenster Massenberechnung]]). Verfügbar ab Version 5.1.
Zeile 9: Zeile 9:
   <Steuersatz> ;
   <Steuersatz> ;
   <Umring> ;
   <Umring> ;
  { STUETZ <Punktliste> ; | BRUCH <Punktliste> ; }*
END[;]
END[;]


Steuersatz  ::= <Zuweisung> { , <Zuweisung> }*
Steuersatz  ::= <Zuweisung> { , <Zuweisung> }*
Zuweisung  ::= TITEL = '<Text>' | IST = DGM|PUNKTE | SOLL = FEST|EBENE|DOM|PUNKTE
Zuweisung  ::= TITEL = '<Text>' | IST = DGM|PUNKTE | SOLL = FEST|EBENE|DOM|PUNKTE
               | SOLLH = <w> | NEIGE = <w> | NEIGN = <w> | RASTER = <w>
               | SOLLH = <w> | NEIGE = <w> | NEIGN = <w> | RASTER = <w> | KORRIDOR = <w>
              | MODELL = RASTER|TIN
Umring      ::= <Punkt> { , <Punkt> }*
Umring      ::= <Umringpunkt> { , <Umringpunkt> }*
Punktliste  ::= <Punkt> { , <Punkt> }*
Umringpunkt ::= <NV> <NR> [<Handhoehe>] [D|P]
Punkt      ::= <NV> <NR> [<Handhoehe>] [D|P]
</pre>
</pre>


Der Block hat '''genau zwei Sätze'''. Ein dritter Satz wird mit dem Fehler ''END erwartet'' abgewiesen.
Pflicht sind die ersten beiden Sätze: der Steuersatz und der Umring. Danach dürfen '''beliebig viele''' weitere Punktsätze folgen, jeder eingeleitet mit einem Schlüsselwort:
 
* <code>STUETZ</code> — Stützpunkte, also einzelne gemessene Punkte im Umring (siehe [[#Stützpunkte (STUETZ)|Stützpunkte]]),
* <code>BRUCH</code> — '''eine''' Bruchkante als offener Linienzug, die Punkte in ihrer Reihenfolge entlang der Kante (siehe [[#Bruchkanten (BRUCH)|Bruchkanten]]).
 
Die Reihenfolge der Sätze <code>STUETZ</code> und <code>BRUCH</code> ist frei; mehrere Sätze <code>STUETZ</code> werden zusammengeführt. Fehlt das Schlüsselwort am Anfang eines dritten oder späteren Satzes, meldet die Syntaxprüfung ''STUETZ oder BRUCH erwartet''.


== Der Steuersatz ==
== Der Steuersatz ==
Zeile 29: Zeile 35:
| <code>TITEL = '<Text>'</code> || Text in Hochkommas || leer || Bezeichnung der Berechnung. Erscheint im Kopf der Ergebnisliste hinter „Massenberechnung" und im Dialogfenster im Feld ''Bezeichnung''.
| <code>TITEL = '<Text>'</code> || Text in Hochkommas || leer || Bezeichnung der Berechnung. Erscheint im Kopf der Ergebnisliste hinter „Massenberechnung" und im Dialogfenster im Feld ''Bezeichnung''.
|-
|-
| <code>IST = DGM</code> || – || '''Vorgabe''' || Die Ist-Fläche (das Gelände) kommt aus dem DGM-Katalog, bilinear interpoliert.
| <code>IST = DGM</code> || – || '''Vorgabe''' || Die Ist-Fläche (das Gelände) kommt aus dem DGM-Katalog. Stützpunkte und Bruchkanten korrigieren das DGM örtlich (siehe [[#Mischfläche: gemessene Punkte korrigieren das DGM|Mischfläche]]).
|-
|-
| <code>IST = PUNKTE</code> || – || || Die Ist-Fläche entsteht aus der Dreiecksvermaschung der Umringpunkte mit ihren Höhen (siehe [[#Der Umring|Der Umring]]).
| <code>IST = PUNKTE</code> || – || || Die Ist-Fläche entsteht aus der Dreiecksvermaschung der Umringpunkte, der Stützpunkte und der Bruchkanten mit ihren Höhen.
|-
|-
| <code>SOLL = FEST</code> || – || '''Vorgabe''' || Das Planum ist eine waagerechte Ebene in der Höhe <code>SOLLH</code>.
| <code>SOLL = FEST</code> || – || '''Vorgabe''' || Das Planum ist eine waagerechte Ebene in der Höhe <code>SOLLH</code>.
Zeile 39: Zeile 45:
| <code>SOLL = DOM</code> || – || || Das Planum ist die Oberfläche (DOM) aus dem Katalog. Damit wird das Volumen zwischen Gelände und Oberfläche gerechnet (Bewuchs, Gebäude). Setzt DOM-Kacheln im Katalog voraus.
| <code>SOLL = DOM</code> || – || || Das Planum ist die Oberfläche (DOM) aus dem Katalog. Damit wird das Volumen zwischen Gelände und Oberfläche gerechnet (Bewuchs, Gebäude). Setzt DOM-Kacheln im Katalog voraus.
|-
|-
| <code>SOLL = PUNKTE</code> || – || || Das Planum entsteht aus der Dreiecksvermaschung der Umringpunkte.
| <code>SOLL = PUNKTE</code> || – || || Das Planum entsteht aus der Dreiecksvermaschung der Umringpunkte, Stützpunkte und Bruchkanten.
|-
|-
| <code>SOLLH = <w></code> || Zahl (m) || – || Höhe des Planums bei <code>FEST</code> bzw. Höhe der Ebene im Flächenschwerpunkt bei <code>EBENE</code>. Bei diesen beiden Soll-Arten '''Pflicht''' — fehlt sie, meldet VermCad beim Übersetzen ''Soll-Höhe fehlt''.
| <code>SOLLH = <w></code> || Zahl (m) || – || Höhe des Planums bei <code>FEST</code> bzw. Höhe der Ebene im Flächenschwerpunkt bei <code>EBENE</code>. Bei diesen beiden Soll-Arten '''Pflicht''' — fehlt sie, meldet VermCad beim Übersetzen ''Soll-Höhe (SOLLH) fehlt''.
|-
|-
| <code>NEIGE = <w></code> || Zahl (%) || 0 || Gefälle der Ebene nach '''Osten''' in Prozent, negativ = fallend. Nur bei <code>SOLL = EBENE</code> ausgewertet.
| <code>NEIGE = <w></code> || Zahl (%) || 0 || Gefälle der Ebene nach '''Osten''' in Prozent, negativ = fallend. Nur bei <code>SOLL = EBENE</code> ausgewertet.
Zeile 47: Zeile 53:
| <code>NEIGN = <w></code> || Zahl (%) || 0 || Gefälle der Ebene nach '''Norden''' in Prozent, negativ = fallend. Nur bei <code>SOLL = EBENE</code> ausgewertet.
| <code>NEIGN = <w></code> || Zahl (%) || 0 || Gefälle der Ebene nach '''Norden''' in Prozent, negativ = fallend. Nur bei <code>SOLL = EBENE</code> ausgewertet.
|-
|-
| <code>RASTER = <w></code> || Zahl (m) || feinstes Kachelraster || Rasterweite der Prismenberechnung. Fehlt die Angabe, nimmt VermCad die feinste Rasterweite, die im Katalog vorkommt (bei DGM1 also 1 m). Größere Werte rechnen schneller und gröber.
| <code>RASTER = <w></code> || Zahl (m) || feinstes Kachelraster || Weite der Rastermaschen, über die das DGM (bzw. DOM) gerechnet wird. Fehlt die Angabe, nimmt VermCad die feinste Rasterweite, die im Katalog vorkommt (bei DGM1 also 1 m). Größere Werte rechnen schneller und gröber. Kommen Ist oder Soll aus den Punkten und das jeweils andere aus einer festen Höhe oder Ebene, hat die Rasterweite '''keinen''' Einfluss (siehe [[#Rechenmodell|Rechenmodell]]).
|-
| <code>MODELL = RASTER</code> || – || '''Vorgabe im Makro''' || '''Rasterprismen''': je Rasterzelle ein Prisma, die Höhen werden bilinear in der Zellmitte abgegriffen. Fehlt <code>MODELL</code>, gilt dieser Wert — bestehende Makros rechnen also unverändert weiter.
|-
|-
| <code>MODELL = TIN</code> || – || '''Vorgabe im Dialog''' || '''Dreiecksprismen''': das Rastergitter wird vermascht (jede Masche entlang der Diagonale SW–NE in zwei Dreiecke) und je Dreieck das Volumen aus Fläche mal mittlerer Höhendifferenz der drei Ecken gebildet. Siehe [[#Rechenmodell|Rechenmodell]].
| <code>KORRIDOR = <w></code> || Zahl (m), ≥ 0 || Rasterweite || Nur bei der [[#Mischfläche: gemessene Punkte korrigieren das DGM|Mischfläche]]: Breite des Übergangs zwischen gemessener Höhe (Bruchkante, Stützpunkt) und DGM. <code>0</code> fügt die gemessenen Punkte nur ein, ohne Übergang.
|}
|}


'''Nicht zulässig''' ist <code>IST = PUNKTE</code> zusammen mit <code>SOLL = PUNKTE</code> — beide Flächen wären dieselbe, das Volumen also immer null. Diese Kombination wird beim Übersetzen am Makro gemeldet.
'''Nicht zulässig''' ist <code>IST = PUNKTE</code> zusammen mit <code>SOLL = PUNKTE</code> — beide Flächen wären dieselbe, das Volumen also immer null. Diese Kombination wird beim Übersetzen am Makro gemeldet.
{{Hilfe:Hinweis|Ein Schlüsselwort <code>MODELL</code> (Rasterprismen/Dreiecksprismen) gibt es nicht mehr — gerechnet wird immer mit Dreiecksprismen. Eine Zeile mit <code>MODELL = …</code> aus einer Vorabversion wird mit ''Schlüsselwort (TITEL, IST, SOLL, SOLLH, NEIGE, NEIGN, RASTER, KORRIDOR) erwartet'' abgewiesen; die Angabe einfach löschen.}}


== Der Umring ==
== Der Umring ==
Der zweite Satz zählt die Umringpunkte auf, durch Komma getrennt, abgeschlossen mit Semikolon. Der '''erste Punkt wird am Ende nicht wiederholt''' — anders als beim Makro [[MWT Syntax-Makro FLAECHE|FLAECHE]] schließt VermCad den Umring selbst. Es sind mindestens drei Punkte nötig.
Der zweite Satz zählt die Umringpunkte auf, durch Komma getrennt, abgeschlossen mit Semikolon. Der '''erste Punkt wird am Ende nicht wiederholt''' — anders als beim Makro [[MWT Syntax-Makro FLAECHE|FLAECHE]] schließt VermCad den Umring selbst. Es sind mindestens drei Punkte nötig.


Hinter jedem Punkt darf stehen, '''woher seine Höhe kommt'''. Die Höhen werden nur gebraucht, wenn <code>IST = PUNKTE</code> oder <code>SOLL = PUNKTE</code> gewählt ist; in der Ergebnisliste stehen sie aber immer.
Der Umring ist in der Vermaschung eine '''Zwangskante''': Kein Dreieck läuft über ihn hinweg, auch nicht an einspringenden Ecken. Die Höhen innerhalb einer Kerbe werden also nie über die Außenseite des Umrings interpoliert.
 
Hinter jedem Punkt darf stehen, '''woher seine Höhe kommt'''. Die Umringhöhen werden nur gebraucht, wenn <code>IST = PUNKTE</code> oder <code>SOLL = PUNKTE</code> gewählt ist; in der Ergebnisliste stehen sie aber immer.


{| class="wikitable"
{| class="wikitable"
Zeile 77: Zeile 85:
: '''Hand''' vor '''DGM''' (<code>D</code>) vor '''Planum''' (<code>P</code>) vor '''Punkt'''.
: '''Hand''' vor '''DGM''' (<code>D</code>) vor '''Planum''' (<code>P</code>) vor '''Punkt'''.


Ein anderer Buchstabe als <code>D</code> oder <code>P</code> wird mit ''Kennbuchstabe D (DGM-Höhe) oder P (Planumshöhe) erwartet'' abgewiesen.
Ein anderer Buchstabe als <code>D</code> oder <code>P</code> wird mit ''Kennbuchstabe D (DGM-Höhe) oder P (Planumshöhe) erwartet'' abgewiesen. Dieselben Zusätze gelten in den Sätzen <code>STUETZ</code> und <code>BRUCH</code>.
 
== Stützpunkte (STUETZ) ==
Ein Satz, der mit <code>STUETZ</code> beginnt, zählt gemessene Einzelpunkte auf, etwa Geländepunkte in einem Haufwerk oder in einer Grube. Jeder Stützpunkt geht mit seiner Höhe (Zusatz wie beim Umring) als Knoten in die Vermaschung ein.
 
* Ein Stützpunkt '''ohne Höhe''' oder ohne Lage wird übergangen und in der Ergebnisliste so gekennzeichnet — anders als beim Umring ist das kein Fehler.
* Stützpunkte '''außerhalb''' des Umrings sind erlaubt, wirken aber nicht.
* Die Stützpunkte wirken in jeder Kombination von Ist und Soll: bei <code>IST = PUNKTE</code> bzw. <code>SOLL = PUNKTE</code> als zusätzliche Knoten der Punktfläche, bei <code>IST = DGM</code> als örtliche Korrektur des DGM.
 
== Bruchkanten (BRUCH) ==
Ein Satz, der mit <code>BRUCH</code> beginnt, beschreibt '''eine''' Bruchkante: einen offenen Linienzug durch gemessene Punkte, in der Reihenfolge entlang der Kante — zum Beispiel eine Böschungsoberkante, einen Dammfuß oder eine Mauerkrone. Für jede weitere Bruchkante folgt ein eigener Satz <code>BRUCH</code>.
 
Eine Bruchkante ist in der Vermaschung eine '''Zwangskante''': Jede ihrer Strecken wird Dreieckskante, kein Dreieck kreuzt sie. Ohne Bruchkante würde die Vermaschung zwei nahe Punkte beidseits eines Grates womöglich quer über den Grat verbinden und ihn kappen.
 
* Die Punkte einer Bruchkante sind zugleich Stützpunkte.
* Ein Punkt '''ohne Höhe''' wird übergangen, die Kante läuft dann vom Vorgänger direkt zum Nachfolger. Bei der [[#Mischfläche: gemessene Punkte korrigieren das DGM|Mischfläche]] bekommt er stattdessen die DGM-Höhe; die Kante wirkt dort nur als Knicklinie.
* Eine Kante mit weniger als zwei brauchbaren Punkten wirkt nicht; die Liste vermerkt ''weniger als zwei Punkte mit Höhe, nicht verwendet''.
* Reicht eine Bruchkante über den Umring hinaus, wird sie '''am Umring beschnitten'''; die Höhe im Schnittpunkt liegt linear auf der Bruchkante.
* '''Kreuzen''' sich zwei Bruchkanten, bekommen sie im Schnittpunkt einen gemeinsamen Punkt mit dem Mittel beider Höhen. Beträgt der Höhenunterschied dort mehr als 5 cm, warnt die Ergebnisliste.
* Ein Punkt darf in mehreren Kanten vorkommen (etwa an einer Kreuzung). Er hat innerhalb einer Berechnung immer '''eine''' Höhe.
 
Im Dialogfenster lassen sich Bruchkanten auch von der CAD-Folie ''DGM-Bruchkanten'' übernehmen; maßgeblich für die Rechnung ist aber immer das, was im Makro steht.
 
== Rechenmodell ==
Gerechnet wird nach der '''Prismenmethode''' mit '''Dreiecksprismen''': Je Dreieck ist die Höhendifferenz zwischen Ist und Soll linear, das Volumen also '''Dreiecksfläche mal mittlere Höhendifferenz der drei Ecken''' — das klassische, von Hand nachrechenbare Verfahren (REB-VB 23.003, Formel 13). Welche Dreiecke das sind, wählt VermCad nach den Quellen von Ist und Soll selbst, und zwar den jeweils genauesten Weg:
 
{| class="wikitable"
! Ist !! Soll !! Rechenweg !! Zeile ''Rechenmodell'' in der Liste
|-
| Punkte || feste Höhe, Ebene || '''exakte Prismen''' direkt über den Dreiecken der Vermaschung, '''ohne Raster'''. Die Rasterweite hat keinen Einfluss. || ''exakte Prismen über den n Dreiecken der Vermaschung (ohne Raster)''
|-
| DGM || Punkte || die Dreiecke der Rastermaschen werden mit den Dreiecken der Vermaschung '''verschnitten''' — exakt für beide Flächen || ''Dreiecksprismen über den Rasterknoten, verschnitten mit den Dreiecken der Vermaschung (exakt)''
|-
| Punkte || DOM || wie oben, mit getauschten Rollen || wie oben
|-
| DGM || feste Höhe, Ebene, DOM || '''Dreiecksprismen über den Rasterknoten''': jede Rastermasche wird einmal an der einen und einmal an der anderen Diagonale in zwei Dreiecke geteilt, jedes der vier Dreiecke zählt halb || ''Dreiecksprismen über den Rasterknoten, je Masche Mittel beider Diagonalen''
|}
 
Das Mittel beider Diagonalen ergibt für eine ganze Masche genau das Volumen der '''bilinearen''' Fläche durch ihre vier Eckhöhen — also derselben Fläche, aus der VermCad auch die DGM-Höhe an einem Punkt interpoliert. Liegt die Rasterweite auf dem Kachelraster, sind die Rasterknoten genau die DGM-Punkte.
 
=== Abtrag und Auftrag an der Nulllinie ===
Wechselt die Differenz Ist − Soll innerhalb eines Dreiecks das Vorzeichen, wird das Dreieck an der Geraden Ist = Soll '''geteilt'''; jedes Teilstück zählt ganz zum Abtrag oder ganz zum Auftrag. Damit sind nicht nur das Netto, sondern auch Abtrag, Auftrag und ihre Flächen einzeln richtig — gerade bei großen Dreiecken aus wenigen gemessenen Punkten macht das viel aus.
 
{{Hilfe:Hinweis|Ist die Rasterweite gröber als das Kachelraster, wird das Gelände zwischen den Kachelpunkten nur abgetastet — dann ist das Ergebnis eine Näherung. Für einen Nachweis die Rasterweite der Kacheln verwenden (Feld leer lassen).}}
 
=== Mischfläche: gemessene Punkte korrigieren das DGM ===
Kommt das Ist aus dem DGM und das Soll '''nicht''' aus den Punkten, und gibt es mindestens einen Stützpunkt mit Höhe oder eine brauchbare Bruchkante, rechnet VermCad automatisch eine '''Mischfläche''' — ein eigener Schalter ist nicht nötig. Das ist der typische Praxisfall: Das DGM liefert das Gelände, an einzelnen Stellen (Damm, Böschungskante, Mauer) weiß es der Vermesser besser.
 
* Ersetzt werden nur die Rastermaschen in der Nähe der gemessenen Punkte und Bruchkanten (Mitte der Masche näher als Korridor plus eine Dreiviertel-Rasterweite). Alles andere rechnet unverändert über die Rasterknoten.
* In diesem Bereich entsteht ein '''Dreiecksnetz''' aus den DGM-Knoten und den gemessenen Punkten; die Bruchkanten werden als Zwangskanten eingearbeitet. Dabei wird jede Bruchkante an den Kanten der Rastermaschen geteilt, damit keine langen, schmalen Dreiecke entstehen. Ein DGM-Knoten, der sehr dicht an einer Bruchkante liegt (weniger als 10 % der Maschenweite, höchstens 0,25 m), wird auf die Kante gezogen.
* '''Korridor:''' DGM-Knoten, die näher als <code>KORRIDOR</code> an einer Bruchkante oder einem Stützpunkt liegen, bekommen eine Höhe, die linear zwischen der gemessenen Höhe und der DGM-Höhe übergeht. So entsteht ein stetiger Übergang zwischen Messung und Geländemodell.
* Das Volumen wird dort exakt über die Dreiecke gerechnet.
* Gemessene Punkte, an denen das DGM keine Höhe hat, wirken nicht; die Liste warnt davor.
 
=== Fläche und Randmaschen ===
Maschen und Dreiecke am Rand des Umrings werden '''exakt geschnitten''', Innenringe gehen negativ ein. Die ausgewiesene Fläche entspricht damit der geometrischen Fläche des Umrings — auch bei schräg liegenden Flächen und auch bei grober Rasterweite. Die kleinsten und größten Höhen der Liste kommen aus den Ecken der geschnittenen Stücke, also aus dem Umring selbst.
 
Allgemein gilt:
 
* Die Koordinaten werden in das Lagesystem der Kacheln (ETRS89/UTM) umgerechnet; in Altsystemen läuft der Weg über die NTv2-Transformation. Fläche und Volumen werden anschließend mit dem Flächenmaßstab in die Örtlichkeit gebracht; die Liste weist das aus.
* Für die Vermaschung (<code>IST = PUNKTE</code> bzw. <code>SOLL = PUNKTE</code>) braucht '''jeder''' Umringpunkt eine gültige Höhe. Fehlt eine, nennt die Fehlermeldung den ersten betroffenen Punkt. Liegen alle Punkte auf einer Geraden, lässt sich nicht vermaschen.
* Ist im Projekt „Flächen mit gerundeten Koordinaten" eingestellt, rechnet auch MASSEN mit den gerundeten Koordinaten; die Ergebnisliste weist das im Kopf aus.
* Höhen aus DGM und DOM sind '''Näherungen''' (Genauigkeit je Kachel etwa ±0,15 m). Die Ergebnisliste vermerkt das.


== Parameter ==
== Parameter ==
Zeile 114: Zeile 184:
END
END
</pre>
</pre>
Die Ist-Fläche entsteht aus der Vermaschung der vier Umringpunkte, deren Höhen aus dem DGM kommen; das Soll ist eine waagerechte Ebene in 440 m. So lässt sich das Volumen zwischen einem schräg liegenden Geländedeckel und einer festen Sohle bestimmen.
Die Ist-Fläche entsteht aus der Vermaschung der vier Umringpunkte, deren Höhen aus dem DGM kommen; das Soll ist eine waagerechte Ebene in 440 m. Gerechnet wird exakt über die Dreiecke der Vermaschung, die Rasterweite spielt keine Rolle.


=== Rechenmodell wählen ===
=== Haufwerk mit Stützpunkten ===
<pre>
<pre>
MASSEN, NR = 5
MASSEN, NR = 5,
  DATUM = 11.09.2026,
  ZEIT = 12:02:00,
  REM = 'Haufwerk'


   TITEL = 'Damm Süd', IST = DGM, SOLL = FEST, SOLLH = 448, RASTER = 1, MODELL = TIN;
   TITEL = 'Haufwerk', IST = PUNKTE, SOLL = FEST, SOLLH = 440;


   xx         10,
   xx           1  d ,
   xx          11,
  xx          2  d ,
   xx          12,
  xx          3  d ,
   xx          13;
  xx          4  d;
 
  STUETZ
   xx          10 ,
   xx          11  455.20 ,
   xx          12  d;
END
END
</pre>
</pre>
Dasselbe Gelände gegen dieselbe Sohle, aber als Dreiecksprismen über der Vermaschung der Rasterknoten gerechnet. Ohne <code>MODELL</code> stünde hier <code>RASTER</code>; der Dialog schreibt <code>MODELL = TIN</code> bei neuen Berechnungen von sich aus.
Die Umringpunkte liegen am Fuß des Haufwerks; die Stützpunkte 10 bis 12 beschreiben seine Form. Punkt 10 mit seiner gemessenen Höhe, Punkt 11 mit der Handhöhe 455,20 m, Punkt 12 mit seiner DGM-Höhe. Die Liste nennt die Ist-Fläche ''Fläche durch die Umring- und Stützpunkte''.
 
=== Böschung mit Bruchkanten ===
<pre>
MASSEN, NR = 6


== Rechenmodell ==
  TITEL = 'Böschung', IST = PUNKTE, SOLL = FEST, SOLLH = 440;
Gerechnet wird nach der '''Prismenmethode''': Über die Umschließende des Umrings wird ein Raster der Weite <code>RASTER</code> gelegt. Wie daraus das Volumen entsteht, entscheidet <code>MODELL</code>.
 
  xx          1 ,
  xx          2 ,
  xx          3 ,
  xx          4;
 
  BRUCH
  xx          20 ,
  xx          21 ,
  xx          22;


=== Rasterprismen (MODELL = RASTER) ===
  BRUCH
Je Rasterzelle ein Prisma: Die Ist- und die Soll-Höhe werden in der '''Zellmitte''' abgegriffen (im DGM bilinear interpoliert), ihre Differenz mal der Fläche des Zellanteils ergibt den Beitrag der Zelle zu Abtrag (Ist über Soll) bzw. Auftrag (Ist unter Soll).
  xx          30 ,
  xx          31 ,
  xx          32;
END
</pre>
Zwei Bruchkanten, etwa Böschungsoberkante (20–22) und Böschungsfuß (30–32). Die Vermaschung legt ihre Dreiecke so, dass keines die Kanten kreuzt; die Liste nennt die Ist-Fläche ''Fläche durch die Umringpunkte mit Bruchkanten''.


=== Dreiecksprismen (MODELL = TIN) ===
=== DGM mit gemessener Bruchkante korrigieren (Mischfläche) ===
Die Knoten des Rasters werden '''vermascht''': Jede Masche zwischen vier Knoten wird entlang der Diagonale von Südwest nach Nordost in zwei Dreiecke geteilt. Je Dreieck ist die Höhendifferenz zwischen Ist und Soll linear, das Volumen also '''Dreiecksfläche mal mittlere Höhendifferenz der drei Ecken''' — das klassische, von Hand nachrechenbare Verfahren der Massenermittlung. Liegt die Rasterweite auf dem Kachelraster, sind die Knoten genau die DGM-Punkte.
[[Datei:MWT_Makro_MASSEN_Beispiel_STUETZ_BRUCH.png|thumb|right|450px|Makro MASSEN mit Stützpunkten und zwei Bruchkanten in der Messwerttabelle: die erste Kante aus gemessenen Punkten (der erste mit Handhöhe), die zweite mit Höhen aus dem DGM]]
<pre>
MASSEN, NR = 7


=== Welches Modell wann? ===
  TITEL = 'Damm', IST = DGM, SOLL = FEST, SOLLH = 360, KORRIDOR = 1;
Beide Modelle liefern bei gleicher Rasterweite praktisch dasselbe Ergebnis — an einem Rechteck von 200 × 100 m im 1-m-Raster unterscheiden sich die Nettomassen um 0,02 %, die mittlere Höhe ist identisch. Der Unterschied liegt nicht in der Genauigkeit, sondern in der '''Nachvollziehbarkeit''':


* '''TIN''' ist für die vermaschte Fläche '''exakt''' und unabhängig vom Randschnitt; für eine geneigte Ebene kommt der Sollwert auf die vierte Nachkommastelle heraus. Das ist das Verfahren, das ein Prüfer erwartet — deshalb die Vorgabe für neue Berechnungen. Es rechnet etwa 30 % länger, was bei Millisekunden je 20.000 Zellen keine Rolle spielt.
  xx        1206 ,
* '''RASTER''' ist eine gleichwertige Näherung auf der bilinearen Fläche und bleibt die Vorgabe für Makros ohne <code>MODELL</code>, damit vorhandene Berechnungen ihre Zahlen behalten.
  xx        1200 ,
  xx        1202 ,
  xx        1204;


{{Hilfe:Hinweis|Ist die Rasterweite gröber als das Kachelraster, sind '''beide''' Modelle Näherungen — dann wird das Gelände zwischen den Kachelpunkten abgetastet. Für einen Nachweis deshalb die Rasterweite der Kacheln verwenden.}}
  STUETZ
  xx          S1 ,
  xx          S2;


=== Fläche und Randzellen ===
  BRUCH
Zellen am Rand des Umrings werden '''exakt geschnitten''': Der Umring wird auf das Zeilenband und dann auf das Zellquadrat beschnitten, Innenringe gehen negativ ein. Die ausgewiesene Rasterfläche entspricht damit der geometrischen Fläche des Umrings — auch bei schräg liegenden Flächen und auch bei grober Rasterweite.
  xx        5508  333.00,
  xx        5505 ,
  xx        5502 ,
  xx        5458;


Für beide Modelle gilt:
  BRUCH
  xx      44846  d,
  xx      44848  d,
  xx      44854  d;
END
</pre>
Das Gelände kommt aus dem DGM, die gemessene Dammkrone (erste Bruchkante) und zwei Stützpunkte korrigieren es. In einem Streifen von 1 m (<code>KORRIDOR = 1</code>) geht die gemessene Höhe in das DGM über. Die zweite Bruchkante hat Höhen aus dem DGM (<code>d</code>) und wirkt als Knicklinie. Die Umringpunkte brauchen hier keine Höhe. Die Liste nennt die Ist-Fläche ''DGM (Gelände aus dem Katalog), korrigiert durch 2 Bruchkanten und 2 Stützpunkte'' und weist die Mischfläche mit der Zahl der ersetzten Rastermaschen aus.
<div style="clear:both;"></div>


* Die Umringkoordinaten werden in das Lagesystem der Kacheln (ETRS89/UTM) umgerechnet; in Altsystemen läuft der Weg über die NTv2-Transformation. Lagestatus und UTM-Zone stehen im Kopf der Ergebnisliste.
[[Datei:Rechnen_Massenberechnung_Bruchkante_CAD.png|thumb|none|800px|Darstellung im CAD über der DGM-Höhenfärbung: Umring (blau), Abtrag (rot) und Auftrag (blau gefüllt), die gemessene Bruchkante mit dem lokalen Dreiecksnetz der Mischfläche und die Stützpunkte S1 und S2]]
* Für die Vermaschung (<code>IST = PUNKTE</code> bzw. <code>SOLL = PUNKTE</code>) braucht '''jeder''' Umringpunkt eine gültige Höhe. Fehlt eine, nennt die Fehlermeldung den ersten betroffenen Punkt. Liegen alle Punkte auf einer Geraden, lässt sich nicht vermaschen.
* Ist im Projekt „Flächen mit gerundeten Koordinaten" eingestellt, rechnet auch MASSEN mit den gerundeten Koordinaten; die Ergebnisliste weist das im Kopf aus.
* Höhen aus DGM und DOM sind '''Näherungen''' (Genauigkeit je Kachel etwa ±0,15 m). Die Ergebnisliste vermerkt das.


== Reihenfolge im Rechenlauf ==
== Reihenfolge im Rechenlauf ==
Zeile 161: Zeile 269:


== Grenzen ==
== Grenzen ==
* '''Keine Aussparungen''': Der Umring des Makros ist immer einfach zusammenhängend. Flächen mit Löchern rechnet die [[CAD-Massenberechnung aus DGM|Massenberechnung im CAD]], die Innenringe berücksichtigt.
* '''Keine Aussparungen''': Der Umring des Makros ist immer einfach zusammenhängend. Flächen mit Löchern rechnet die [[CAD-Massenberechnung aus DGM|Massenberechnung im CAD]], die Innenringe berücksichtigt (dort ohne Stützpunkte und Bruchkanten).
* '''Keine Bögen''' im Umring — nur gerade Verbindungen zwischen den Punkten.
* '''Keine Bögen''' im Umring und in den Bruchkanten — nur gerade Verbindungen zwischen den Punkten.
* Die geneigte Ebene ist nur über Schwerpunkt und zwei Gefälle beschreibbar, nicht über drei Stützpunkte.
* Die geneigte Ebene ist nur über Schwerpunkt und zwei Gefälle beschreibbar, nicht über drei Stützpunkte.
* Punkte ohne Lage brechen die Berechnung ab.
* Umringpunkte ohne Lage brechen die Berechnung ab.
* Sehr viele, über die ganze Fläche verstreute Stützpunkte bei <code>IST = DGM</code> machen das lokale Netz der Mischfläche groß; die Rechenzeit steht in der Liste.


== Fehlermeldungen der Syntaxprüfung ==
== Fehlermeldungen der Syntaxprüfung ==
{| class="wikitable"
{| class="wikitable"
! Meldung !! Ursache
! Nr. !! Meldung !! Ursache
|-
|-
| ''Ungültige Angabe für IST oder SOLL (DGM, PUNKTE, FEST, EBENE, DOM erwartet)'' || Hinter <code>IST =</code> bzw. <code>SOLL =</code> steht ein unbekanntes Wort.
| 728 || ''Ungültige Angabe für IST oder SOLL (DGM, PUNKTE, FEST, EBENE, DOM erwartet)'' || Hinter <code>IST =</code> bzw. <code>SOLL =</code> steht ein unbekanntes Wort.
|-
|-
| ''Komma oder Satzende erwartet'' || Zwei Zuweisungen im Steuersatz sind nicht durch Komma getrennt bzw. der Satz endet nicht mit Semikolon.
| 729 || ''Komma oder Satzende erwartet'' || Zwei Zuweisungen im Steuersatz sind nicht durch Komma getrennt bzw. der Satz endet nicht mit Semikolon.
|-
|-
| ''Schlüsselwort (TITEL, IST, SOLL, SOLLH, NEIGE, NEIGN, RASTER, MODELL) erwartet'' || Im Steuersatz steht ein unbekanntes Schlüsselwort.
| 730 || ''Schlüsselwort (TITEL, IST, SOLL, SOLLH, NEIGE, NEIGN, RASTER, KORRIDOR) erwartet'' || Im Steuersatz steht ein unbekanntes Schlüsselwort — auch ein <code>MODELL = …</code> aus einer Vorabversion.
|-
|-
| ''Kennbuchstabe D (DGM-Höhe) oder P (Planumshöhe) erwartet'' || Hinter einem Umringpunkt steht ein anderer Buchstabe.
| 731 || ''Kennbuchstabe D (DGM-Höhe) oder P (Planumshöhe) erwartet'' || Hinter einem Punkt steht ein anderer Buchstabe.
|-
|-
| ''Ungültige Angabe für MODELL (RASTER oder TIN erwartet)'' || Hinter <code>MODELL =</code> steht ein anderes Wort.
| 736 || ''STUETZ oder BRUCH erwartet (Satz mit Stützpunkten bzw. mit einer Bruchkante für die Vermaschung)'' || Ein dritter oder späterer Satz beginnt nicht mit <code>STUETZ</code> oder <code>BRUCH</code>.
|-
|-
| ''END erwartet'' || Der Block hat mehr als zwei Sätze.
| – || ''IST und SOLL können nicht beide PUNKTE sein'' · ''Soll-Höhe (SOLLH) fehlt'' || Beim Übersetzen am Makro gemeldete Parameterfehler.
|-
|-
| ''Ist und Soll können nicht beide aus den Umringpunkten kommen'' · ''Soll-Höhe fehlt'' · ''Der Umring braucht mindestens drei Punkte'' || Beim Übersetzen am Makro gemeldete Parameterfehler.
| – || ''Der Umring hat weniger als drei Punkte'' · ''Punkt … hat keine Höhe für die Massenberechnung'' · ''Die Umringpunkte lassen sich nicht vermaschen (alle auf einer Geraden?)'' · ''Keine DGM-Kacheln im Katalog (Optionen > DGM-Verwaltung)'' || Beim Rechnen erkannt; steht in der Ergebnisliste hinter ''Nicht berechnet:''.
|}
|}
Die Zahl der Sätze ist nicht mehr begrenzt; die frühere Meldung ''END erwartet'' bei einem dritten Satz gibt es für MASSEN nicht mehr.


== Siehe auch ==
== Siehe auch ==
Zeile 196: Zeile 307:


'''Quellen im Code:'''
'''Quellen im Code:'''
* <code>VERMCAD\GlobalConsts.pas</code> — Schlüsselwörter <code>kwMassen</code>, <code>kwMassenTitel/Ist/Soll/SollHoehe/NeigungE/NeigungN/Raster</code>, Kennbuchstaben <code>MassenHoeheDGMChar</code>/<code>MassenHoeheSollChar</code>
* <code>VERMCAD\GlobalConsts.pas</code> — Schlüsselwörter <code>kwMassen</code>, <code>kwMassenTitel/Ist/Soll/SollHoehe/NeigungE/NeigungN/Raster/Korridor</code>, <code>kwMassenStuetz</code>, <code>kwMassenBruch</code>, Kennbuchstaben <code>MassenHoeheDGMChar</code>/<code>MassenHoeheSollChar</code>
* <code>VERMCAD\VCSCHMWT.PAS</code> — Steuersatz-Parser (Zweig <code>BlockKind = kMassen</code>, Fehler 801–804) und Punktzusatz (Zahl bzw. Kennbuchstabe) im Zweig <code>kMassen</code>
* <code>VERMCAD\VCSCHMWT.PAS</code> — Steuersatz-Parser (Zweig <code>BlockKind = kMassen</code>), Satzart der Punktsätze ab Satz 3 in <code>FMassenPunktSatz</code> (<code>S</code> = STUETZ, <code>B</code> = BRUCH), Punktzusatz (Zahl bzw. Kennbuchstabe) in allen Punktsätzen
* <code>VERMCAD\VCDCHMWT.PAS</code> — Decoder: Parameter aus Satz 1, <code>InsertOutLine</code> für Satz 2, Parameterfehler über <code>SetParameterFehler</code>
* <code>VERMCAD\VcSCheck.pas</code> — Zustände 801–804 und 809 (Meldungen 728–731, 736); keine Satzbegrenzung mehr für MASSEN
* <code>VERMCAD\VcCompileErrorMessages.pas</code> — Meldungstexte 728–731
* <code>VERMCAD\VCDCHMWT.PAS</code> — Decoder: Parameter aus Satz 1, <code>InsertOutLine</code> für Satz 2, danach <code>InsertStuetz</code> bzw. <code>InsertBruchkante</code> je nach Satzart; Parameterfehler über <code>SetParameterFehler</code>
* <code>VERMCAD\VcMassen.pas</code> — <code>TMassenberechnung</code>: <code>CalculateItem</code>, <code>QuelleVonPunkt</code> (Reihenfolge Hand/DGM/Planum/Punkt), <code>ResultList</code>, <code>SaveMakro</code>
* <code>VERMCAD\VcCompileErrorMessages.pas</code> — Meldungstexte 728–731 und 736; 732 ist frei
* <code>DGMModul\VermCad.DGM.Massen.pas</code> — beide Rechenmodelle (<code>dmmRaster</code>/<code>dmmTIN</code>), exakter Randschnitt (<code>_ClipHalbebene</code>, <code>_AnteilExakt</code>), Höhenfunktionen für Ist und Soll
* <code>VERMCAD\VcMassen.pas</code> — <code>TMassenberechnung</code>: <code>CalculateItem</code> (Höhe je Punkt in <code>_HoeheVonPunkt</code>, Befunde der Vermaschung in <code>_BefundeUebernehmen</code>), <code>QuelleVonPunkt</code> (Reihenfolge Hand/DGM/Planum/Punkt), <code>ResultList</code>, <code>SaveMakro</code>, <code>NetzPunkte</code>/<code>NetzKanten</code> für die CAD-Darstellung
* <code>DGMModul\VermCad.DGM.Punktflaeche.pas</code> — Dreiecksvermaschung (Bowyer-Watson-Delaunay), lineare Interpolation im Dreieck
* <code>DGMModul\VermCad.DGM.Massen.pas</code> — <code>DGMMassenBerechnen</code>, Rechenwege <code>drwTIN</code>/<code>drwNetz</code>/<code>drwVerschnitt</code> (<code>TDGMMassenErgebnis.Rechenweg</code>), Teilung an der Nulllinie, Mischfläche (<code>_MischAufbauen</code>/<code>_MischRechnen</code>), exakter Randschnitt
* <code>DGMModul\VermCad.DGM.Punktflaeche.pas</code> — Dreiecksvermaschung (Bowyer-Watson-Delaunay) mit Zwangskanten (<code>KantenVorbereiten</code>, <code>KantenErzwingen</code> nach Sloan), <code>GetZMitRand</code>, <code>CreateAusNetz</code> und <code>ZwangskantenTeilen</code> für die Mischfläche, <code>NetzKanten</code>


{{Hilfe:NachOben}}
{{Hilfe:NachOben}}
[[Kategorie:Blöcke mit Anweisungen (Makros)|MASSEN]]
[[Kategorie:Blöcke mit Anweisungen (Makros)|MASSEN]]

Aktuelle Version vom 28. September 2026, 19:52 Uhr

Das Makro MASSEN berechnet das Volumen zwischen einer Ist-Fläche (dem Gelände) und einer Soll-Fläche (dem Planum) innerhalb eines Umrings aus koordinierten Punkten. Ausgegeben werden Abtrag, Auftrag und die Nettomasse. Als Höhenquelle dient wahlweise das digitale Geländemodell aus dem DGM-Katalog oder die Dreiecksvermaschung gemessener Punkte. Zusätzliche Stützpunkte und Bruchkanten gehen in die Vermaschung ein oder korrigieren das DGM dort, wo der Vermesser es besser weiß.

Das Makro entsteht über Rechnen → Massenberechnung (Dialogfenster Massenberechnung). Verfügbar ab Version 5.1.

Syntaxregel

MASSEN [, NR = <n>] {, <KopfInfo>}*
  <Steuersatz> ;
  <Umring> ;
  { STUETZ <Punktliste> ; | BRUCH <Punktliste> ; }*
END[;]

Steuersatz  ::= <Zuweisung> { , <Zuweisung> }*
Zuweisung   ::= TITEL = '<Text>' | IST = DGM|PUNKTE | SOLL = FEST|EBENE|DOM|PUNKTE
              | SOLLH = <w> | NEIGE = <w> | NEIGN = <w> | RASTER = <w> | KORRIDOR = <w>
Umring      ::= <Punkt> { , <Punkt> }*
Punktliste  ::= <Punkt> { , <Punkt> }*
Punkt       ::= <NV> <NR> [<Handhoehe>] [D|P]

Pflicht sind die ersten beiden Sätze: der Steuersatz und der Umring. Danach dürfen beliebig viele weitere Punktsätze folgen, jeder eingeleitet mit einem Schlüsselwort:

  • STUETZ — Stützpunkte, also einzelne gemessene Punkte im Umring (siehe Stützpunkte),
  • BRUCH — eine Bruchkante als offener Linienzug, die Punkte in ihrer Reihenfolge entlang der Kante (siehe Bruchkanten).

Die Reihenfolge der Sätze STUETZ und BRUCH ist frei; mehrere Sätze STUETZ werden zusammengeführt. Fehlt das Schlüsselwort am Anfang eines dritten oder späteren Satzes, meldet die Syntaxprüfung STUETZ oder BRUCH erwartet.

Der Steuersatz

Der erste Satz enthält ausschließlich Schlüsselwörter mit Zuweisung, durch Komma getrennt und mit Semikolon abgeschlossen. Alle Angaben sind optional; es gelten dann die Vorgaben.

Schlüsselwort Werte Vorgabe Bedeutung
TITEL = '<Text>' Text in Hochkommas leer Bezeichnung der Berechnung. Erscheint im Kopf der Ergebnisliste hinter „Massenberechnung" und im Dialogfenster im Feld Bezeichnung.
IST = DGM – Vorgabe Die Ist-Fläche (das Gelände) kommt aus dem DGM-Katalog. Stützpunkte und Bruchkanten korrigieren das DGM örtlich (siehe Mischfläche).
IST = PUNKTE – Die Ist-Fläche entsteht aus der Dreiecksvermaschung der Umringpunkte, der Stützpunkte und der Bruchkanten mit ihren Höhen.
SOLL = FEST – Vorgabe Das Planum ist eine waagerechte Ebene in der Höhe SOLLH.
SOLL = EBENE – Das Planum ist eine geneigte Ebene: Sie geht in der Höhe SOLLH durch den Flächenschwerpunkt des Umrings und fällt bzw. steigt mit NEIGE nach Osten und NEIGN nach Norden.
SOLL = DOM – Das Planum ist die Oberfläche (DOM) aus dem Katalog. Damit wird das Volumen zwischen Gelände und Oberfläche gerechnet (Bewuchs, Gebäude). Setzt DOM-Kacheln im Katalog voraus.
SOLL = PUNKTE – Das Planum entsteht aus der Dreiecksvermaschung der Umringpunkte, Stützpunkte und Bruchkanten.
SOLLH = <w> Zahl (m) – Höhe des Planums bei FEST bzw. Höhe der Ebene im Flächenschwerpunkt bei EBENE. Bei diesen beiden Soll-Arten Pflicht — fehlt sie, meldet VermCad beim Übersetzen Soll-Höhe (SOLLH) fehlt.
NEIGE = <w> Zahl (%) 0 Gefälle der Ebene nach Osten in Prozent, negativ = fallend. Nur bei SOLL = EBENE ausgewertet.
NEIGN = <w> Zahl (%) 0 Gefälle der Ebene nach Norden in Prozent, negativ = fallend. Nur bei SOLL = EBENE ausgewertet.
RASTER = <w> Zahl (m) feinstes Kachelraster Weite der Rastermaschen, über die das DGM (bzw. DOM) gerechnet wird. Fehlt die Angabe, nimmt VermCad die feinste Rasterweite, die im Katalog vorkommt (bei DGM1 also 1 m). Größere Werte rechnen schneller und gröber. Kommen Ist oder Soll aus den Punkten und das jeweils andere aus einer festen Höhe oder Ebene, hat die Rasterweite keinen Einfluss (siehe Rechenmodell).
KORRIDOR = <w> Zahl (m), ≥ 0 Rasterweite Nur bei der Mischfläche: Breite des Übergangs zwischen gemessener Höhe (Bruchkante, Stützpunkt) und DGM. 0 fügt die gemessenen Punkte nur ein, ohne Übergang.

Nicht zulässig ist IST = PUNKTE zusammen mit SOLL = PUNKTE — beide Flächen wären dieselbe, das Volumen also immer null. Diese Kombination wird beim Übersetzen am Makro gemeldet.

Hinweis: {{{1}}}

Der Umring

Der zweite Satz zählt die Umringpunkte auf, durch Komma getrennt, abgeschlossen mit Semikolon. Der erste Punkt wird am Ende nicht wiederholt — anders als beim Makro FLAECHE schließt VermCad den Umring selbst. Es sind mindestens drei Punkte nötig.

Der Umring ist in der Vermaschung eine Zwangskante: Kein Dreieck läuft über ihn hinweg, auch nicht an einspringenden Ecken. Die Höhen innerhalb einer Kerbe werden also nie über die Außenseite des Umrings interpoliert.

Hinter jedem Punkt darf stehen, woher seine Höhe kommt. Die Umringhöhen werden nur gebraucht, wenn IST = PUNKTE oder SOLL = PUNKTE gewählt ist; in der Ergebnisliste stehen sie aber immer.

Zusatz Bedeutung
(nichts) Es gilt die eigene Höhe des Punktes aus Messung oder Vorgabe.
<Zahl> Handhöhe: der eingetragene Wert gilt unabhängig von der Punkthöhe.
D DGM-Höhe: die Höhe wird bei jeder Berechnung neu aus dem Katalog geholt — an der aktuellen Lage des Punktes. Verschiebt sich der Punkt, ändert sich die Höhe beim nächsten Übersetzen mit.
P Planumshöhe: die Höhe des Soll-Planums an dieser Stelle (feste Höhe, Wert der geneigten Ebene bzw. DOM-Höhe). Bei SOLL = PUNKTE liefert P keinen Wert und der Punkt gilt als „ohne Höhe".

Zahl und Kennbuchstabe dürfen zusammen auftreten (die Zahl steht dann vorn), sind aber redundant: Ist eine Handhöhe eingetragen, gewinnt sie. Die Auswertungsreihenfolge ist

Hand vor DGM (D) vor Planum (P) vor Punkt.

Ein anderer Buchstabe als D oder P wird mit Kennbuchstabe D (DGM-Höhe) oder P (Planumshöhe) erwartet abgewiesen. Dieselben Zusätze gelten in den Sätzen STUETZ und BRUCH.

Stützpunkte (STUETZ)

Ein Satz, der mit STUETZ beginnt, zählt gemessene Einzelpunkte auf, etwa Geländepunkte in einem Haufwerk oder in einer Grube. Jeder Stützpunkt geht mit seiner Höhe (Zusatz wie beim Umring) als Knoten in die Vermaschung ein.

  • Ein Stützpunkt ohne Höhe oder ohne Lage wird übergangen und in der Ergebnisliste so gekennzeichnet — anders als beim Umring ist das kein Fehler.
  • Stützpunkte außerhalb des Umrings sind erlaubt, wirken aber nicht.
  • Die Stützpunkte wirken in jeder Kombination von Ist und Soll: bei IST = PUNKTE bzw. SOLL = PUNKTE als zusätzliche Knoten der Punktfläche, bei IST = DGM als örtliche Korrektur des DGM.

Bruchkanten (BRUCH)

Ein Satz, der mit BRUCH beginnt, beschreibt eine Bruchkante: einen offenen Linienzug durch gemessene Punkte, in der Reihenfolge entlang der Kante — zum Beispiel eine Böschungsoberkante, einen Dammfuß oder eine Mauerkrone. Für jede weitere Bruchkante folgt ein eigener Satz BRUCH.

Eine Bruchkante ist in der Vermaschung eine Zwangskante: Jede ihrer Strecken wird Dreieckskante, kein Dreieck kreuzt sie. Ohne Bruchkante würde die Vermaschung zwei nahe Punkte beidseits eines Grates womöglich quer über den Grat verbinden und ihn kappen.

  • Die Punkte einer Bruchkante sind zugleich Stützpunkte.
  • Ein Punkt ohne Höhe wird übergangen, die Kante läuft dann vom Vorgänger direkt zum Nachfolger. Bei der Mischfläche bekommt er stattdessen die DGM-Höhe; die Kante wirkt dort nur als Knicklinie.
  • Eine Kante mit weniger als zwei brauchbaren Punkten wirkt nicht; die Liste vermerkt weniger als zwei Punkte mit Höhe, nicht verwendet.
  • Reicht eine Bruchkante über den Umring hinaus, wird sie am Umring beschnitten; die Höhe im Schnittpunkt liegt linear auf der Bruchkante.
  • Kreuzen sich zwei Bruchkanten, bekommen sie im Schnittpunkt einen gemeinsamen Punkt mit dem Mittel beider Höhen. Beträgt der Höhenunterschied dort mehr als 5 cm, warnt die Ergebnisliste.
  • Ein Punkt darf in mehreren Kanten vorkommen (etwa an einer Kreuzung). Er hat innerhalb einer Berechnung immer eine Höhe.

Im Dialogfenster lassen sich Bruchkanten auch von der CAD-Folie DGM-Bruchkanten übernehmen; maßgeblich für die Rechnung ist aber immer das, was im Makro steht.

Rechenmodell

Gerechnet wird nach der Prismenmethode mit Dreiecksprismen: Je Dreieck ist die Höhendifferenz zwischen Ist und Soll linear, das Volumen also Dreiecksfläche mal mittlere Höhendifferenz der drei Ecken — das klassische, von Hand nachrechenbare Verfahren (REB-VB 23.003, Formel 13). Welche Dreiecke das sind, wählt VermCad nach den Quellen von Ist und Soll selbst, und zwar den jeweils genauesten Weg:

Ist Soll Rechenweg Zeile Rechenmodell in der Liste
Punkte feste Höhe, Ebene exakte Prismen direkt über den Dreiecken der Vermaschung, ohne Raster. Die Rasterweite hat keinen Einfluss. exakte Prismen über den n Dreiecken der Vermaschung (ohne Raster)
DGM Punkte die Dreiecke der Rastermaschen werden mit den Dreiecken der Vermaschung verschnitten — exakt für beide Flächen Dreiecksprismen über den Rasterknoten, verschnitten mit den Dreiecken der Vermaschung (exakt)
Punkte DOM wie oben, mit getauschten Rollen wie oben
DGM feste Höhe, Ebene, DOM Dreiecksprismen über den Rasterknoten: jede Rastermasche wird einmal an der einen und einmal an der anderen Diagonale in zwei Dreiecke geteilt, jedes der vier Dreiecke zählt halb Dreiecksprismen über den Rasterknoten, je Masche Mittel beider Diagonalen

Das Mittel beider Diagonalen ergibt für eine ganze Masche genau das Volumen der bilinearen Fläche durch ihre vier Eckhöhen — also derselben Fläche, aus der VermCad auch die DGM-Höhe an einem Punkt interpoliert. Liegt die Rasterweite auf dem Kachelraster, sind die Rasterknoten genau die DGM-Punkte.

Abtrag und Auftrag an der Nulllinie

Wechselt die Differenz Ist − Soll innerhalb eines Dreiecks das Vorzeichen, wird das Dreieck an der Geraden Ist = Soll geteilt; jedes Teilstück zählt ganz zum Abtrag oder ganz zum Auftrag. Damit sind nicht nur das Netto, sondern auch Abtrag, Auftrag und ihre Flächen einzeln richtig — gerade bei großen Dreiecken aus wenigen gemessenen Punkten macht das viel aus.

Hinweis: Ist die Rasterweite gröber als das Kachelraster, wird das Gelände zwischen den Kachelpunkten nur abgetastet — dann ist das Ergebnis eine Näherung. Für einen Nachweis die Rasterweite der Kacheln verwenden (Feld leer lassen).

Mischfläche: gemessene Punkte korrigieren das DGM

Kommt das Ist aus dem DGM und das Soll nicht aus den Punkten, und gibt es mindestens einen Stützpunkt mit Höhe oder eine brauchbare Bruchkante, rechnet VermCad automatisch eine Mischfläche — ein eigener Schalter ist nicht nötig. Das ist der typische Praxisfall: Das DGM liefert das Gelände, an einzelnen Stellen (Damm, Böschungskante, Mauer) weiß es der Vermesser besser.

  • Ersetzt werden nur die Rastermaschen in der Nähe der gemessenen Punkte und Bruchkanten (Mitte der Masche näher als Korridor plus eine Dreiviertel-Rasterweite). Alles andere rechnet unverändert über die Rasterknoten.
  • In diesem Bereich entsteht ein Dreiecksnetz aus den DGM-Knoten und den gemessenen Punkten; die Bruchkanten werden als Zwangskanten eingearbeitet. Dabei wird jede Bruchkante an den Kanten der Rastermaschen geteilt, damit keine langen, schmalen Dreiecke entstehen. Ein DGM-Knoten, der sehr dicht an einer Bruchkante liegt (weniger als 10 % der Maschenweite, höchstens 0,25 m), wird auf die Kante gezogen.
  • Korridor: DGM-Knoten, die näher als KORRIDOR an einer Bruchkante oder einem Stützpunkt liegen, bekommen eine Höhe, die linear zwischen der gemessenen Höhe und der DGM-Höhe übergeht. So entsteht ein stetiger Übergang zwischen Messung und Geländemodell.
  • Das Volumen wird dort exakt über die Dreiecke gerechnet.
  • Gemessene Punkte, an denen das DGM keine Höhe hat, wirken nicht; die Liste warnt davor.

Fläche und Randmaschen

Maschen und Dreiecke am Rand des Umrings werden exakt geschnitten, Innenringe gehen negativ ein. Die ausgewiesene Fläche entspricht damit der geometrischen Fläche des Umrings — auch bei schräg liegenden Flächen und auch bei grober Rasterweite. Die kleinsten und größten Höhen der Liste kommen aus den Ecken der geschnittenen Stücke, also aus dem Umring selbst.

Allgemein gilt:

  • Die Koordinaten werden in das Lagesystem der Kacheln (ETRS89/UTM) umgerechnet; in Altsystemen läuft der Weg über die NTv2-Transformation. Fläche und Volumen werden anschließend mit dem Flächenmaßstab in die Örtlichkeit gebracht; die Liste weist das aus.
  • Für die Vermaschung (IST = PUNKTE bzw. SOLL = PUNKTE) braucht jeder Umringpunkt eine gültige Höhe. Fehlt eine, nennt die Fehlermeldung den ersten betroffenen Punkt. Liegen alle Punkte auf einer Geraden, lässt sich nicht vermaschen.
  • Ist im Projekt „Flächen mit gerundeten Koordinaten" eingestellt, rechnet auch MASSEN mit den gerundeten Koordinaten; die Ergebnisliste weist das im Kopf aus.
  • Höhen aus DGM und DOM sind Näherungen (Genauigkeit je Kachel etwa ±0,15 m). Die Ergebnisliste vermerkt das.

Parameter

MASSEN kennt keine eigenen Kopfparameter; alle Steuergrößen stehen im Steuersatz. Es gelten die allgemeinen Makro-Kopfparameter (NR, DATUM, ZEIT, PNR, KN = '…' für den Nachweis, REM = '…' für die Bemerkung, NE, DEA): siehe Blockkopf-Parameter.

Beispiele

Baugrube gegen eine geneigte Ebene

MASSEN, NR = 3,
  DATUM = 07.09.2026,
  ZEIT = 12:00:00,
  REM = 'Baugrube Nord'

  TITEL = 'Baugrube Nord', IST = DGM, SOLL = EBENE, SOLLH = 452.5, NEIGE = 0.5, NEIGN = -0.2, RASTER = 1;

  xx           1  452.30 ,
  xx           2  d ,
  xx           3  p ,
  xx           4;
END

Gelände aus dem DGM, Planum als Ebene mit 452,50 m im Schwerpunkt, 0,5 % Gefälle nach Osten und 0,2 % Gefälle nach Süden. Punkt 1 bekommt die Handhöhe 452,30 m, Punkt 2 seine DGM-Höhe, Punkt 3 die Planumshöhe, Punkt 4 seine eigene Höhe. Weil hier weder Ist noch Soll aus den Punkten kommen, gehen diese Höhen nur in die Punkttabelle der Ergebnisliste ein.

Deckel auf Geländehöhe: Grubenvolumen

MASSEN, NR = 4,
  DATUM = 07.09.2026,
  ZEIT = 12:01:00

  IST = PUNKTE, SOLL = FEST, SOLLH = 440;

  xx           1  d ,
  xx           2  d ,
  xx           3  d ,
  xx           4  d;
END

Die Ist-Fläche entsteht aus der Vermaschung der vier Umringpunkte, deren Höhen aus dem DGM kommen; das Soll ist eine waagerechte Ebene in 440 m. Gerechnet wird exakt über die Dreiecke der Vermaschung, die Rasterweite spielt keine Rolle.

Haufwerk mit Stützpunkten

MASSEN, NR = 5,
  DATUM = 11.09.2026,
  ZEIT = 12:02:00,
  REM = 'Haufwerk'

  TITEL = 'Haufwerk', IST = PUNKTE, SOLL = FEST, SOLLH = 440;

  xx           1  d ,
  xx           2  d ,
  xx           3  d ,
  xx           4  d;

  STUETZ
  xx          10 ,
  xx          11  455.20 ,
  xx          12  d;
END

Die Umringpunkte liegen am Fuß des Haufwerks; die Stützpunkte 10 bis 12 beschreiben seine Form. Punkt 10 mit seiner gemessenen Höhe, Punkt 11 mit der Handhöhe 455,20 m, Punkt 12 mit seiner DGM-Höhe. Die Liste nennt die Ist-Fläche Fläche durch die Umring- und Stützpunkte.

Böschung mit Bruchkanten

MASSEN, NR = 6

  TITEL = 'Böschung', IST = PUNKTE, SOLL = FEST, SOLLH = 440;

  xx           1 ,
  xx           2 ,
  xx           3 ,
  xx           4;

  BRUCH
  xx          20 ,
  xx          21 ,
  xx          22;

  BRUCH
  xx          30 ,
  xx          31 ,
  xx          32;
END

Zwei Bruchkanten, etwa Böschungsoberkante (20–22) und Böschungsfuß (30–32). Die Vermaschung legt ihre Dreiecke so, dass keines die Kanten kreuzt; die Liste nennt die Ist-Fläche Fläche durch die Umringpunkte mit Bruchkanten.

DGM mit gemessener Bruchkante korrigieren (Mischfläche)

Makro MASSEN mit Stützpunkten und zwei Bruchkanten in der Messwerttabelle: die erste Kante aus gemessenen Punkten (der erste mit Handhöhe), die zweite mit Höhen aus dem DGM
MASSEN, NR = 7

  TITEL = 'Damm', IST = DGM, SOLL = FEST, SOLLH = 360, KORRIDOR = 1;

  xx        1206 ,
  xx        1200 ,
  xx        1202 ,
  xx        1204;

  STUETZ
  xx          S1 ,
  xx          S2;

  BRUCH
  xx        5508  333.00,
  xx        5505 ,
  xx        5502 ,
  xx        5458;

  BRUCH
  xx       44846  d,
  xx       44848  d,
  xx       44854  d;
END

Das Gelände kommt aus dem DGM, die gemessene Dammkrone (erste Bruchkante) und zwei Stützpunkte korrigieren es. In einem Streifen von 1 m (KORRIDOR = 1) geht die gemessene Höhe in das DGM über. Die zweite Bruchkante hat Höhen aus dem DGM (d) und wirkt als Knicklinie. Die Umringpunkte brauchen hier keine Höhe. Die Liste nennt die Ist-Fläche DGM (Gelände aus dem Katalog), korrigiert durch 2 Bruchkanten und 2 Stützpunkte und weist die Mischfläche mit der Zahl der ersetzten Rastermaschen aus.

Darstellung im CAD über der DGM-Höhenfärbung: Umring (blau), Abtrag (rot) und Auftrag (blau gefüllt), die gemessene Bruchkante mit dem lokalen Dreiecksnetz der Mischfläche und die Stützpunkte S1 und S2

Reihenfolge im Rechenlauf

Die Massenberechnung ist nachgelagert: Sie läuft im Endlauf zusammen mit den Einfluchtungen — also nach allen Koordinatenberechnungen und vor den Flächen. Damit rechnet sie immer mit den endgültigen Koordinaten und kann keine zyklischen Abhängigkeiten erzeugen.

Grenzen

  • Keine Aussparungen: Der Umring des Makros ist immer einfach zusammenhängend. Flächen mit Löchern rechnet die Massenberechnung im CAD, die Innenringe berücksichtigt (dort ohne Stützpunkte und Bruchkanten).
  • Keine Bögen im Umring und in den Bruchkanten — nur gerade Verbindungen zwischen den Punkten.
  • Die geneigte Ebene ist nur über Schwerpunkt und zwei Gefälle beschreibbar, nicht über drei Stützpunkte.
  • Umringpunkte ohne Lage brechen die Berechnung ab.
  • Sehr viele, über die ganze Fläche verstreute Stützpunkte bei IST = DGM machen das lokale Netz der Mischfläche groß; die Rechenzeit steht in der Liste.

Fehlermeldungen der Syntaxprüfung

Nr. Meldung Ursache
728 Ungültige Angabe für IST oder SOLL (DGM, PUNKTE, FEST, EBENE, DOM erwartet) Hinter IST = bzw. SOLL = steht ein unbekanntes Wort.
729 Komma oder Satzende erwartet Zwei Zuweisungen im Steuersatz sind nicht durch Komma getrennt bzw. der Satz endet nicht mit Semikolon.
730 Schlüsselwort (TITEL, IST, SOLL, SOLLH, NEIGE, NEIGN, RASTER, KORRIDOR) erwartet Im Steuersatz steht ein unbekanntes Schlüsselwort — auch ein MODELL = … aus einer Vorabversion.
731 Kennbuchstabe D (DGM-Höhe) oder P (Planumshöhe) erwartet Hinter einem Punkt steht ein anderer Buchstabe.
736 STUETZ oder BRUCH erwartet (Satz mit Stützpunkten bzw. mit einer Bruchkante für die Vermaschung) Ein dritter oder späterer Satz beginnt nicht mit STUETZ oder BRUCH.
– IST und SOLL können nicht beide PUNKTE sein · Soll-Höhe (SOLLH) fehlt Beim Übersetzen am Makro gemeldete Parameterfehler.
– Der Umring hat weniger als drei Punkte · Punkt … hat keine Höhe für die Massenberechnung · Die Umringpunkte lassen sich nicht vermaschen (alle auf einer Geraden?) · Keine DGM-Kacheln im Katalog (Optionen > DGM-Verwaltung) Beim Rechnen erkannt; steht in der Ergebnisliste hinter Nicht berechnet:.

Die Zahl der Sätze ist nicht mehr begrenzt; die frühere Meldung END erwartet bei einem dritten Satz gibt es für MASSEN nicht mehr.

Siehe auch

Entwicklerhinweise

Diese Angaben richten sich an Entwickler bzw. eine KI mit Zugriff auf den VermCad-Quellcode; für die reine Nutzung der MWT-Syntax sind sie nicht nötig. Unit-Namen und besonders Zeilennummern können sich durch die laufende Weiterentwicklung verschieben - sie dienen als Einstieg, nicht als exakte Fundstelle.

Quellen im Code:

  • VERMCAD\GlobalConsts.pas — Schlüsselwörter kwMassen, kwMassenTitel/Ist/Soll/SollHoehe/NeigungE/NeigungN/Raster/Korridor, kwMassenStuetz, kwMassenBruch, Kennbuchstaben MassenHoeheDGMChar/MassenHoeheSollChar
  • VERMCAD\VCSCHMWT.PAS — Steuersatz-Parser (Zweig BlockKind = kMassen), Satzart der Punktsätze ab Satz 3 in FMassenPunktSatz (S = STUETZ, B = BRUCH), Punktzusatz (Zahl bzw. Kennbuchstabe) in allen Punktsätzen
  • VERMCAD\VcSCheck.pas — Zustände 801–804 und 809 (Meldungen 728–731, 736); keine Satzbegrenzung mehr für MASSEN
  • VERMCAD\VCDCHMWT.PAS — Decoder: Parameter aus Satz 1, InsertOutLine für Satz 2, danach InsertStuetz bzw. InsertBruchkante je nach Satzart; Parameterfehler über SetParameterFehler
  • VERMCAD\VcCompileErrorMessages.pas — Meldungstexte 728–731 und 736; 732 ist frei
  • VERMCAD\VcMassen.pas — TMassenberechnung: CalculateItem (Höhe je Punkt in _HoeheVonPunkt, Befunde der Vermaschung in _BefundeUebernehmen), QuelleVonPunkt (Reihenfolge Hand/DGM/Planum/Punkt), ResultList, SaveMakro, NetzPunkte/NetzKanten für die CAD-Darstellung
  • DGMModul\VermCad.DGM.Massen.pas — DGMMassenBerechnen, Rechenwege drwTIN/drwNetz/drwVerschnitt (TDGMMassenErgebnis.Rechenweg), Teilung an der Nulllinie, Mischfläche (_MischAufbauen/_MischRechnen), exakter Randschnitt
  • DGMModul\VermCad.DGM.Punktflaeche.pas — Dreiecksvermaschung (Bowyer-Watson-Delaunay) mit Zwangskanten (KantenVorbereiten, KantenErzwingen nach Sloan), GetZMitRand, CreateAusNetz und ZwangskantenTeilen für die Mischfläche, NetzKanten



[Nach oben]