CAD XML Syntax-Versionierung und Kompatibilität: Unterschied zwischen den Versionen
Erscheinungsbild
Hahn (Diskussion | Beiträge) CAD-XML-Syntax-Dokumentation (automatischer Import) |
Claude (Diskussion | Beiträge) Rechtschreibung: Links auf umbenannte Seiten umgestellt |
||
| (Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
| Zeile 37: | Zeile 37: | ||
| <code>Erzeugt</code>, <code>LetzteAenderung</code>, <code>NutzerID</code> || entfallen (werden nicht mehr geschrieben) || VermCadID-Block || [[CAD XML Syntax-VermCadID und GUID-Referenzen|VermCadID und GUID-Referenzen]] | | <code>Erzeugt</code>, <code>LetzteAenderung</code>, <code>NutzerID</code> || entfallen (werden nicht mehr geschrieben) || VermCadID-Block || [[CAD XML Syntax-VermCadID und GUID-Referenzen|VermCadID und GUID-Referenzen]] | ||
|- | |- | ||
| <code>MaxUsedGMLID</code> || <code>MaxUsedAlkisID</code> || Projekt-Metadaten || [[CAD XML Syntax- | | <code>MaxUsedGMLID</code> || <code>MaxUsedAlkisID</code> || Projekt-Metadaten || [[CAD XML Syntax-Übersicht|Übersicht]] | ||
|- | |- | ||
| <code>xn_SymbolNummer</code> (alte Integer-Symbolnummer) || <code>SymbolID</code> (GUID) || Punktsymbol || [[CAD XML Syntax-Objekt VC CADPunktsymbol|Objekt VC_CADPunktsymbol]] | | <code>xn_SymbolNummer</code> (alte Integer-Symbolnummer) || <code>SymbolID</code> (GUID) || Punktsymbol || [[CAD XML Syntax-Objekt VC CADPunktsymbol|Objekt VC_CADPunktsymbol]] | ||
Aktuelle Version vom 22. September 2026, 10:57 Uhr
Die XML-Projektdatei trägt zwei Versionsangaben: die Dateiformat-Version ObjectFileVersion und die Programmversion ObjectFileVCVersion. Beide steuern beim Laden Kompatibilitätsprüfungen und Migrationen. Diese Seite beschreibt die Versionslogik und listet alle Legacy-Aliase (alte Tag-Namen, die nur noch gelesen werden) mit Verweis auf die jeweilige Detailseite.
Strukturregel
<ObjectFileVersion>ganzzahl</ObjectFileVersion> (aktuell: 10) <ObjectFileVCVersion>text</ObjectFileVCVersion> (Programmversion, z. B. 5.0.57) [<ObjectFileVCVersionWas45orOlder>bool</...>] (nur wenn True)
| Regelelement | Bedeutung |
|---|---|
ObjectFileVersion |
Version des Dateiformats. Beim Schreiben wird immer der aktuelle Wert VermcadObjectFileVersion = 10 geschrieben. Beim Lesen steuert der Wert die Migrationsroutine UpdateObjectFileVersion (läuft vor und nach dem Referenzen-Update); Dateien mit ObjectFileVersion < 10 werden automatisch angepasst (u. a. Behandlung des Gelöscht-Dummy-Layers durch GLGeometricsUpdateSkript).
|
ObjectFileVCVersion |
VermCad-Programmversion, mit der die Datei gespeichert wurde. Beim Lesen liefert CheckObjectFileVCVersion ein TFileVersionCheck: fvcEqual, fvcOlder, fvcNewer.
|
ObjectFileVCVersionWas45orOlder |
Merker, dass das Projekt ursprünglich mit Version 4.5 oder älter erzeugt wurde (Workaround für den Text-Versatz alter Projekte); wird nur geschrieben, wenn True, und beim Lesen zusätzlich aus fvcOlder abgeleitet (ProjectVCVersionWas45orOlder).
|
Versionsprüfung beim Laden
fvcNewer— Datei stammt von einer neueren VermCad-Version: das Laden wird ABGEBROCHEN. Eine ältere Programmversion öffnet keine neueren Projektdateien. Ein Erzeuger sollte deshalb nie eine höhereObjectFileVCVersioneintragen als die Zielinstallation.fvcOlder— Datei stammt von einer älteren Version: die alte Versionsnummer wird gemerkt (XMLOlderVCVersion) und für die Sicherung der alten Datei (Backup-Umbenennung vor dem Überschreiben) sowie für Migrationsentscheidungen verwendet (z. B. die Umsetzung vonVC_CADVCBerechnungListKindin die neuen Kind-Felder).fvcEqual— gleiche Version: normales Laden.- Beim erneuten Speichern eines alten Projekts kann die ALTE
ObjectFileVCVersionbeibehalten werden (NoXMLVCVersionLock), damit das Projekt für die Ursprungs-Version lesbar bleibt. ObjectFileVCVersionsollte in der Datei VOR denVCCADDaten-Sektionen stehen, damit Abbruch-/Migrationsentscheidungen greifen, bevor Objekte gelesen werden.- Die drei Referenz-Beispielprojekte dieser Doku tragen
ObjectFileVersion 9und die Programmversionen 5.0.0 (BW), 5.0.35 (THR), 5.0.57 (Sachsen).
Legacy-Aliase (werden nur noch gelesen)
Fehlende Elemente bedeuten in dieser Syntax immer „Defaultwert" (Lesemechanik); Legacy-Tags dürfen von einem Erzeuger nie geschrieben werden, ein Reparierer darf sie unverändert stehen lassen — der Reader versteht beide Formen.
| Legacy-Tag | aktueller Tag / Nachfolger | Kontext | Detailseite |
|---|---|---|---|
ALKIS_GMLID |
AlkisID |
Objekt-Basisdaten | VermCadID und GUID-Referenzen |
Erzeugt, LetzteAenderung, NutzerID |
entfallen (werden nicht mehr geschrieben) | VermCadID-Block | VermCadID und GUID-Referenzen |
MaxUsedGMLID |
MaxUsedAlkisID |
Projekt-Metadaten | Übersicht |
xn_SymbolNummer (alte Integer-Symbolnummer) |
SymbolID (GUID) |
Punktsymbol | Objekt VC_CADPunktsymbol |
AlkisInitialBogenMitte |
BogenMittePoint |
Bogen | Objekt VC_CADArcLine |
AlkisInitialBogenMitteCoords |
BogenMittePointCoords |
Bogen | Objekt VC_CADArcLine |
Radius1 |
Radius |
Ellipse | Objekt VC_CADCircleLine/EllipseLine |
kr_Unknown/kr_ClockWise/kr_CounterClockWise (Enum-Werte) |
usEgal/usImUhrzeigersinn/usGegenUhrzeigersinn (Kruemmung) |
Klothoide | Objekt VC_CADKlotoide |
Text_Referenzpunkt |
Text_Referenzobjekt |
Text | Objekt VC_CADText |
Text_UnterDurchstrichfarbe (setzte beide Farben) |
Text_Unterstrichfarbe + Text_Durchstrichfarbe |
Text | Objekt VC_CADText |
RissViewScale (Float, bis 03/2025) |
RissViewMeasureScale (Int) |
Rissdaten | Sektion Rissdaten und Auswahlen |
RissViewMoveX/RissViewMoveY (bis 05/2017) |
RissViewMinX/MaxX/MinY/MaxY |
Rissdaten | Sektion Rissdaten und Auswahlen |
HBild_Scale (eine Skalierung) |
HBild_ScaleWidth + HBild_ScaleHeight |
Hintergrundbild | Objekt VC_Hintergrundbild |
Plotrahmen_TextOben/Unten/Links/Rechts/Allgemein |
Plotrahmen_Texte-Container |
Plotrahmen | Objekt VC_Plotrahmen |
VC_CADVCBerechnungListKind (Int, bis 28.01.2026) |
VC_CADVCBerechnungListKindBaseType + VC_CADVCBerechnungListKindType |
Berechnung/Messung | Objekt VC_CADVCBerechnung/VCMessung |
| negative Stil-Werte (−1 „vom Layer" u. ä.) | PROPERTY_VALUE_*-Markerwerte (2147483642…2147483645) |
Basiselemente | Basiselemente |
VCPktID_WasMisNV |
wird nicht mehr geschrieben, aber gelesen | VermCadID-Block | VermCadID und GUID-Referenzen |
Verfügbarkeit und Besonderheiten
- Die Versionslogik gilt in allen Bundesland-Versionen gleich.
- Struktur-Evolution der Berechnungslisten über die Versionen: 5.0.0 ohne Kind-Felder → 5.0.35
VC_CADVCBerechnungListKindals Zahl → 5.0.57ListKindBaseType/ListKindTypeals Enum-Strings (Details auf der Berechnungs-Seite). - Enum-Namen (GetEnumName-Strings) sind Teil des Dateiformats und dürfen laut Quellcode-Kommentar nie geändert werden — sie sind über alle Versionen stabil.
- Alte „von Layer"-Kodierungen (negative Werte) werden beim Einlesen über WORKAROUND-Blöcke in die aktuellen Markerwerte umgesetzt; System-Konfig-IDs (≤ −101) bleiben dabei erhalten.
Quellen im Code
- CAD\GLConsts.pas:163 —
VermcadObjectFileVersion = 10 - VERMCAD\VcParser_XmlLite_VC.pas:386-393 — ProjektID-Prüfung (DoStop)
- VERMCAD\VcParser_XmlLite_VC.pas:461-465 —
fvcNewer→ Abbruch des Ladens - VERMCAD\GlobalTypes.pas:883 —
TFileVersionCheck(fvcEqual,fvcOlder,fvcNewer) - VERMCAD\VcProject.pas:20686-20689 —
NoXMLVCVersionLock(alte Version beim Speichern beibehalten) - CAD\GLGeometrics.pas:86191, 86323 —
UpdateObjectFileVersion(Migrationen vor/nach Referenz-Update) - CAD\GLGeometrics.pas:96748, 96817, 96964, 96933-96937 — Legacy-Reader-Registrierungen (ALKIS_GMLID, AlkisInitialBogenMitte*, Plotrahmen_Text*)
- CAD\GLVCCalcMessBase.pas:2897-2918 — Migration
VC_CADVCBerechnungListKind→ KindBaseType/KindType