MWT Syntax-Übersicht: Unterschied zwischen den Versionen
Claude (Diskussion | Beiträge) MWT-Syntax-Referenz: regelbasierte Seite aus Task MWT_Syntax (Quellen: Compiler-Code + Bestands-MWTs) |
Claude (Diskussion | Beiträge) Entwicklerhinweise: Zeilennummern an den Code vom 18.09.2026 angeglichen |
||
| Zeile 158: | Zeile 158: | ||
* <code>VERMCAD\Editor.pas:2612-2663</code> — Lesen der ProjectID (alte/neue Länge); <code>Editor.pas:4343-4349</code> — Schreiben der Binärzeile <code>#$0E</code> + 12 Bytes | * <code>VERMCAD\Editor.pas:2612-2663</code> — Lesen der ProjectID (alte/neue Länge); <code>Editor.pas:4343-4349</code> — Schreiben der Binärzeile <code>#$0E</code> + 12 Bytes | ||
* <code>VERMCAD\Editor.pas:2664-2666</code> — Sichtbarkeits-Präfixe <code>#$1E</code>/<code>#$1F</code> | * <code>VERMCAD\Editor.pas:2664-2666</code> — Sichtbarkeits-Präfixe <code>#$1E</code>/<code>#$1F</code> | ||
* <code>VERMCAD\GlobalConsts.pas: | * <code>VERMCAD\GlobalConsts.pas:901-957</code> — Codierungs-Konstanten (<code>OwnerDateTimeSize</code> = 12, <code>edODT</code> = #$0E, <code>edProjectID</code> = #$1D, <code>ProjectIDSize</code> = 62) | ||
* <code>VERMCAD\GlobalConsts.pas: | * <code>VERMCAD\GlobalConsts.pas:1441-1512, 2044-2051, 2757-2762</code> — Sonderzeichen-Konstanten (<code>VarPrefix</code>, <code>MisChar</code>, <code>GoDownChar</code>, <code>ExtYX_Char</code>, <code>ExtZ_Char</code>, <code>FlagVariationChar</code>, <code>VorlaufigeNR</code>) | ||
* <code>VERMCAD\VCProjectBase.pas: | * <code>VERMCAD\VCProjectBase.pas:1339-1455</code> — Aufbau und Neuerzeugung der ProjectID (<code>TProjectID</code>) | ||
* <code>VERMCAD\VCSCHMWT.PAS: | * <code>VERMCAD\VCSCHMWT.PAS:948</code> — zentrale Parse-Routine <code>CheckMWTRecordNew</code>; <code>VCSCHMWT.PAS:3968-3977</code> — Blockende; <code>VCSCHMWT.PAS:4028</code> — Alias <code>BEGIN</code>→<code>MESSUNG</code> | ||
* <code>VERMCAD\VcEditorUtils.pas:1927- | * <code>VERMCAD\VcEditorUtils.pas:1927-2108</code> — zentrale Keyword-Tabelle aller Blockarten | ||
{{Hilfe:NachOben}} | {{Hilfe:NachOben}} | ||
[[Kategorie:MWT Syntax|Übersicht]] | [[Kategorie:MWT Syntax|Übersicht]] | ||
Version vom 18. September 2026, 10:39 Uhr
Die MWT-Datei (Messwertdatei) ist die vollständige Datengrundlage eines VermCad-Auftrags: eine einzige Textdatei, aus der alle abgeleiteten Informationen (berechnete Koordinaten, Flächen, Protokolle) reproduzierbar sind. Diese Seite beschreibt den Gesamtaufbau der Datei, die Codierungen der ersten Zeile und der Zeilen-Metadaten sowie die lexikalischen Grundregeln (Trennzeichen, Kommentare, Sonderzeichen), die für alle Blöcke und Makros gelten.
Syntaxregel
MWT-Datei ::= [ProjectID] {GlobaleOption}* {Block}*
Block ::= KEYWORD [Systemangabe] {',' HeaderInfo}* {Datensatz ';'}* END [';']
Datensatz ::= beliebige Token bis zum nächsten ';' (darf über mehrere Zeilen gehen)
KEYWORD ::= Blockname (z. B. AUFTRAG, VORGABEN, MESSUNG, FLAECHE, ...)
| Regelelement | Bedeutung |
|---|---|
ProjectID |
Unsichtbare Projektkennung am Anfang der ersten Zeile (siehe unten). Darf beim manuellen Erstellen weggelassen werden. |
GlobaleOption |
Compiler-Anweisung mit $-Präfix, nur am Dateianfang vor allen Blöcken erlaubt — siehe Globale Optionen.
|
Block |
Textblock, beginnt mit einem reservierten Schlüsselwort und endet mit END. Datenblöcke enthalten Punkte/Messwerte, Anweisungsblöcke (Makros) Berechnungen.
|
Datensatz |
Kleinste logische Einheit innerhalb eines Blocks; endet immer mit Semikolon ;. Der Zeilenumbruch ist nur ein Trennzeichen — ein Datensatz darf sich über mehrere Zeilen erstrecken.
|
END |
Blockende (wortgrenzengeprüft, Groß-/Kleinschreibung egal); ein Semikolon danach ist optional. |
Die Reihenfolge der Makro-Blöcke in der Datei ist für die Berechnung ohne Bedeutung: VermCad analysiert alle Abhängigkeiten selbständig und stellt intern die richtige Berechnungsreihenfolge her.
Erste Zeile: ProjectID
Die erste Zeile der Datei beginnt (vor dem eigentlichen Text) mit dem Steuerzeichen #$1D, gefolgt von einer 62 Zeichen langen Projektkennung. Sie wird im VermCad-Editor nicht angezeigt. Direkt nach der Kennung folgt der normale Text der ersten Zeile (in der Regel das erste Schlüsselwort).
| Position | Länge | Feld | Bedeutung |
|---|---|---|---|
| 1–8 | 8 | Datum | Datum der Ersterzeugung im Format yyyymmdd
|
| 9–14 | 6 | BüroID | Büro-Kennung, links mit 0 aufgefüllt
|
| 15–24 | 10 | Code | Zusatzcode (seit 15.10.2015); Zeichen 1 codiert u. a. verfügbare Begleitdateien (z. B. 1 = weder XML noch NAS, 2 = XML ohne NAS, …)
|
| 25–62 | 38 | GUID | Projekt-GUID inklusive geschweifter Klammern {…}
|
Beispiel (dekodiert): 201506260000002000000000{C86A825B-…}VORGABEN — Erzeugung 26.06.2015, BüroID 000000, Code 2000000000, GUID, danach beginnt der Text mit VORGABEN.
Alte Dateien besitzen eine 52 Zeichen lange Kennung ohne das Code-Feld; VermCad erkennt beide Varianten an der schließenden }. Beim manuellen Erzeugen einer MWT darf die ProjectID weggelassen werden — VermCad legt beim Speichern eine neue Kennung an.
Binäre Zeilencodierung (Änderungsdatum und Nutzer)
Nach jeder Textzeile speichert VermCad eine binäre Pseudo-Zeile mit Metadaten:
#$0E <4 Byte Owner (UserID, LONGINT)> <8 Byte Änderungszeitpunkt (TDateTime, Double)> CRLF
- Gesamtlänge der Binärdaten: 12 Bytes; Präfix ist das Steuerzeichen
#$0E. - Inhalt: die UserID des Programm-Nutzers, der die Zeile zuletzt geändert hat, und der Änderungszeitpunkt; Anzeige im Editor als
nnn dd.mm.yyyy hh:mm:ss. - Zusätzlich können Zeilen ein Sichtbarkeits-Präfix tragen:
#$1E(Zeile sichtbar) bzw.#$1F(Zeile unsichtbar), gespeichert vor der betreffenden Zeile. - Die Binärzeilen dürfen weggelassen werden (z. B. beim manuellen oder programmatischen Erzeugen einer MWT); VermCad ergänzt sie beim nächsten Speichern automatisch. In allen Beispielen dieser Dokumentation sind sie deshalb nicht dargestellt.
Lexikalische Regeln
- Groß-/Kleinschreibung: Es wird nicht zwischen Groß- und Kleinschreibung unterschieden (
MESSUNG=Messung=messung). - Trennzeichen: Zwischen einzelnen Informationen sind Leerzeichen, Tabulatoren und Zeilenumbrüche in beliebiger Anzahl erlaubt. Es kommt ausschließlich auf die richtige Reihenfolge der Daten an, nicht auf eine spaltenmäßige Formatierung.
- Datensatzende: Ein Datensatz endet mit
;oder — als Blockabschluss — mit dem SchlüsselwortEND. - Kommentare:
{ … }, an beliebiger Stelle statt eines Trennzeichens, auch mitten im Datensatz und über Zeilengrenzen hinweg. Kommentare sind schachtelbar. Eine schließende}ohne öffnende{ist ein Syntaxfehler. - Auskommentieren: Datenzeilen werden durch Einklammern mit
{ … }deaktiviert; VermCad selbst verwendet dabei die Form{* … ;*}, die die Originalzeile erhält.
{ Das ist ein gültiger Kommentar }
{ Dies ist { ebenfalls } erlaubt. }
{*xx 2 60001 096 x Y = 32644247.304 X = 5715070.585;*} { deaktivierte Datenzeile }
Sonderzeichen
| Zeichen | Bedeutung |
|---|---|
; |
Ende eines Datensatzes. Ein Datensatz darf über mehrere Zeilen gehen. |
END |
Blockende; optionales ; danach. (Kein Sonderzeichen, aber reserviertes Wort.)
|
, |
Leitet Header-Zusatzinfos eines Blocks/Makros ein und trennt sie (siehe Blockkopf-Parameter); trennt außerdem gleichartige Teil-Informationen innerhalb eines Datensatzes (z. B. Punkte einer Teilliste). |
$ |
Präfix der Compiler-Anweisungen am Dateianfang (siehe Globale Optionen). |
= |
Zuweisung Bezeichner = Wert (siehe Wertzuweisungen).
|
x |
Fehlzeichen/Platzhalter („nicht angegeben“), immer Kleinbuchstabe: fehlender NV als xx, fehlende Vermarkungsart, fehlende Flags, fehlende Punktnummer als xxxxx, fehlender Nummerierungsbezirk als xxxxxxxx.
|
# |
Suffix an einer Punktnummer = untergegangener Punkt; als Flag: Punkt gelöscht/untergegangen. In Berechnungsprotokollen zusätzlich: Kennzeichen einer nicht verwendeten Berechnung. |
_ |
Suffix „nur Lage“ an Flags und Optionen (z. B. A_, AT_, $EK_).
|
| |
Suffix „nur Höhe“ an Flags und Optionen (z. B. A|, AT|, $A|).
|
* |
Flag-Variante: B* = Neukoordinierung, die Vorgabe ersetzt (siehe Punktidentifikation und Flags).
|
' bzw. " |
String-Begrenzer für Texte, z. B. REM = '…', GEM = '…', KS-Namen. (Doppelte Anführungszeichen kommen in Altdateien vor.)
|
+ |
Fortsetzung mehrzeiliger Texte: GEM = '…' + '…'; außerdem Ein-Schalter bei Optionen ($NE+;).
|
. |
Dezimaltrennzeichen der Zahlen; trennt zudem „Doppelworte“. |
- |
Aus-Schalter bei Optionen ($NOT_Z-;, AT-); vorangestellt an einen Nummerierungsbezirk im Block NUMMERIERUNGSBEZIRKE = deaktivierter NB; Vorzeichen in Flächen-Referenzlisten; negativer Wert bei A= unterdrückt die Auswertung.
|
v / V |
Präfix vorläufige Punktnummer (Baden-Württemberg: V, alternativ S; alle anderen Bundesländer: v).
|
(y,x[,z]) |
Shift-Koordinaten im Blockkopf: die angegebenen Werte werden von allen Y/X/Z des Blocks abgezogen (siehe Blockkopf-Parameter). |
Beispiele
Minimale vollständige MWT (Bundesland-neutral)
$NE; { globale Option: nur fatale Fehler melden }
AUFTRAG
Nummer = 26-0001;
Lagestatus = 489;
END
VORGABEN LS 489
{ NV A NR VMA F }
xx 2 1 x SA Y = 32571196.130 X = 5466242.330;
xx 2 2 x SA Y = 32571246.130 X = 5466242.330;
END
MESSUNG , A = 2
xx 5 10001 x x hi = 1.550;
xx 2 1 x A Hz = 0.00000 V = 100.00000 SD = 50.000 hr = 1.300;
xx 2 2 x A Hz = 50.00000 V = 100.00000 SD = 70.711 hr = 1.300;
END
Hinweis: ProjectID und binäre Codierungszeilen sind weggelassen; VermCad ergänzt beide beim Speichern.
Datensatz über mehrere Zeilen (GNSS, Baden-Württemberg)
GNSS_MESSUNG
0390 1 662512503 x K Y = 32571196.13 X = 5466242.33 Z = 455.961
Time= 06:59:22 MD = 10 Ep = 10
s2D = 0.033 SV = 22 PDO = 1.3
HDO = 0.7 VDO = 1.1 REM = 'AH-IMU:2.00 Qual:Fix - HDRTK';
END
Verfügbarkeit und Besonderheiten
- Der Grundaufbau (Blöcke,
;,END, Kommentare, Sonderzeichen) gilt für alle Bundesländer. - Veraltete Blockform:
BEGIN [System = <name>]wird alsMESSUNGinterpretiert (Altformat aus den 1990er-Jahren, wird weiterhin gelesen). - Weitere Aliase alter Schreibweisen:
LISTE→PUNKTLISTE,NUMERIERUNGSBEZIRKE→NUMMERIERUNGSBEZIRKE,GPS_MESSUNG→GNSS_MESSUNG,GPS_NETZMESSUNG→GNSS_NETZMESSUNG,POLYGONPUNKTE→RECHTWINKELZUG,GRENZERMITTLUNG→GRENZPRUEFUNG. - Fehlerquelle: Compiler-Anweisungen (
$…) nach dem ersten Datenblock erzeugen den Fehler „Compiler-Anweisung nicht am Anfang“. - Fehlerquelle: eine schließende
}ohne zugehörige öffnende{bricht den Kommentar-Zähler und führt zu einem Syntaxfehler. - Die MWT-Syntax der einzelnen Blöcke ist teilweise bundeslandabhängig; Details stehen auf den jeweiligen Block-/Makroseiten.
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\EdText.pas:2612-2654— Datensatz-TokenizerNextAusdruck(bis;oderEND)VERMCAD\EdText.pas:401-507, 1670-1736— Kommentarbehandlung{ }, schachtelbar (CommentDeep)VERMCAD\EdText.pas:1380-1414— Owner/DateTime je Zeile (SetOwnerAndDateTime,TakeOwnerAndDateTimeBin)VERMCAD\Editor.pas:2612-2663— Lesen der ProjectID (alte/neue Länge);Editor.pas:4343-4349— Schreiben der Binärzeile#$0E+ 12 BytesVERMCAD\Editor.pas:2664-2666— Sichtbarkeits-Präfixe#$1E/#$1FVERMCAD\GlobalConsts.pas:901-957— Codierungs-Konstanten (OwnerDateTimeSize= 12,edODT= #$0E,edProjectID= #$1D,ProjectIDSize= 62)VERMCAD\GlobalConsts.pas:1441-1512, 2044-2051, 2757-2762— Sonderzeichen-Konstanten (VarPrefix,MisChar,GoDownChar,ExtYX_Char,ExtZ_Char,FlagVariationChar,VorlaufigeNR)VERMCAD\VCProjectBase.pas:1339-1455— Aufbau und Neuerzeugung der ProjectID (TProjectID)VERMCAD\VCSCHMWT.PAS:948— zentrale Parse-RoutineCheckMWTRecordNew;VCSCHMWT.PAS:3968-3977— Blockende;VCSCHMWT.PAS:4028— AliasBEGIN→MESSUNGVERMCAD\VcEditorUtils.pas:1927-2108— zentrale Keyword-Tabelle aller Blockarten