MWT Syntax-Makro MASSEN: Unterschied zwischen den Versionen
Claude (Diskussion | Beiträge) Nachtrag: Steuersatz MODELL = RASTER|TIN, exakter Randschnitt, Fehler 732 (Task DGM) |
Claude (Diskussion | Beiträge) Querverweis auf das Makro PROFIL - Task DGM |
||
| Zeile 190: | Zeile 190: | ||
* [[CAD-Massenberechnung aus DGM|Massenberechnung aus DGM im CAD]] — dieselbe Rechnung ohne Makro, direkt auf CAD-Flächen | * [[CAD-Massenberechnung aus DGM|Massenberechnung aus DGM im CAD]] — dieselbe Rechnung ohne Makro, direkt auf CAD-Flächen | ||
* [[Optionen Menü-Das Dialogfenster DGM-Verwaltung|Die DGM-Verwaltung]] — woher die Kacheln kommen | * [[Optionen Menü-Das Dialogfenster DGM-Verwaltung|Die DGM-Verwaltung]] — woher die Kacheln kommen | ||
* [[MWT Syntax-Makro PROFIL|Das Makro PROFIL]] — Längsschnitt und Querprofile aus demselben Geländemodell | |||
== Entwicklerhinweise == | == Entwicklerhinweise == | ||
Version vom 10. September 2026, 09:50 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 der Umringpunkte.
Das Makro entsteht über Rechnen → Massenberechnung (Dialogfenster Massenberechnung). Verfügbar ab Version 5.1.
Syntaxregel
MASSEN [, NR = <n>] {, <KopfInfo>}*
<Steuersatz> ;
<Umring> ;
END[;]
Steuersatz ::= <Zuweisung> { , <Zuweisung> }*
Zuweisung ::= TITEL = '<Text>' | IST = DGM|PUNKTE | SOLL = FEST|EBENE|DOM|PUNKTE
| SOLLH = <w> | NEIGE = <w> | NEIGN = <w> | RASTER = <w>
| MODELL = RASTER|TIN
Umring ::= <Umringpunkt> { , <Umringpunkt> }*
Umringpunkt ::= <NV> <NR> [<Handhoehe>] [D|P]
Der Block hat genau zwei Sätze. Ein dritter Satz wird mit dem Fehler END erwartet abgewiesen.
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, bilinear interpoliert. |
IST = PUNKTE |
– | Die Ist-Fläche entsteht aus der Dreiecksvermaschung der Umringpunkte mit ihren Höhen (siehe Der Umring). | |
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. | |
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 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 | 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. |
MODELL = RASTER |
– | Vorgabe im Makro | Rasterprismen: je Rasterzelle ein Prisma, die Höhen werden bilinear in der Zellmitte abgegriffen. Fehlt MODELL, gilt dieser Wert — bestehende Makros rechnen also unverändert weiter.
|
MODELL = TIN |
– | 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. |
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.
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.
Hinter jedem Punkt darf stehen, woher seine Höhe kommt. Die Hö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.
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. So lässt sich das Volumen zwischen einem schräg liegenden Geländedeckel und einer festen Sohle bestimmen.
Rechenmodell wählen
MASSEN, NR = 5 TITEL = 'Damm Süd', IST = DGM, SOLL = FEST, SOLLH = 448, RASTER = 1, MODELL = TIN; xx 10, xx 11, xx 12, xx 13; END
Dasselbe Gelände gegen dieselbe Sohle, aber als Dreiecksprismen über der Vermaschung der Rasterknoten gerechnet. Ohne MODELL stünde hier RASTER; der Dialog schreibt MODELL = TIN bei neuen Berechnungen von sich aus.
Rechenmodell
Gerechnet wird nach der Prismenmethode: Über die Umschließende des Umrings wird ein Raster der Weite RASTER gelegt. Wie daraus das Volumen entsteht, entscheidet MODELL.
Rasterprismen (MODELL = RASTER)
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).
Dreiecksprismen (MODELL = TIN)
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.
Welches Modell wann?
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.
- RASTER ist eine gleichwertige Näherung auf der bilinearen Fläche und bleibt die Vorgabe für Makros ohne
MODELL, damit vorhandene Berechnungen ihre Zahlen behalten.
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.
Fläche und Randzellen
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.
Für beide Modelle gilt:
- 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.
- Für die Vermaschung (
IST = PUNKTEbzw.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.
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.
- Keine Bögen im Umring — nur gerade Verbindungen zwischen den Punkten.
- Die geneigte Ebene ist nur über Schwerpunkt und zwei Gefälle beschreibbar, nicht über drei Stützpunkte.
- Punkte ohne Lage brechen die Berechnung ab.
Fehlermeldungen der Syntaxprüfung
| Meldung | Ursache |
|---|---|
| Ungültige Angabe für IST oder SOLL (DGM, PUNKTE, FEST, EBENE, DOM erwartet) | Hinter IST = bzw. SOLL = steht ein unbekanntes Wort.
|
| 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. |
| Kennbuchstabe D (DGM-Höhe) oder P (Planumshöhe) erwartet | Hinter einem Umringpunkt steht ein anderer Buchstabe. |
| Ungültige Angabe für MODELL (RASTER oder TIN erwartet) | Hinter MODELL = steht ein anderes Wort.
|
| END erwartet | Der Block hat mehr als zwei Sätze. |
| 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. |
Siehe auch
- Das Dialogfenster Massenberechnung — Eingabe und Bedienung
- Die Ergebnisliste Massenberechnung — Aufbau des Protokolls
- Massenberechnung aus DGM im CAD — dieselbe Rechnung ohne Makro, direkt auf CAD-Flächen
- Die DGM-Verwaltung — woher die Kacheln kommen
- Das Makro PROFIL — Längsschnitt und Querprofile aus demselben Geländemodell
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örterkwMassen,kwMassenTitel/Ist/Soll/SollHoehe/NeigungE/NeigungN/Raster, KennbuchstabenMassenHoeheDGMChar/MassenHoeheSollCharVERMCAD\VCSCHMWT.PAS— Steuersatz-Parser (ZweigBlockKind = kMassen, Fehler 801–804) und Punktzusatz (Zahl bzw. Kennbuchstabe) im ZweigkMassenVERMCAD\VCDCHMWT.PAS— Decoder: Parameter aus Satz 1,InsertOutLinefür Satz 2, Parameterfehler überSetParameterFehlerVERMCAD\VcCompileErrorMessages.pas— Meldungstexte 728–731VERMCAD\VcMassen.pas—TMassenberechnung:CalculateItem,QuelleVonPunkt(Reihenfolge Hand/DGM/Planum/Punkt),ResultList,SaveMakroDGMModul\VermCad.DGM.Massen.pas— beide Rechenmodelle (dmmRaster/dmmTIN), exakter Randschnitt (_ClipHalbebene,_AnteilExakt), Höhenfunktionen für Ist und SollDGMModul\VermCad.DGM.Punktflaeche.pas— Dreiecksvermaschung (Bowyer-Watson-Delaunay), lineare Interpolation im Dreieck