Zum Inhalt springen

CAD XML Syntax-Versionierung und Kompatibilität: Unterschied zwischen den Versionen

Aus VermCAD Hilfe Wiki
CAD-XML-Syntax-Dokumentation (automatischer Import)
 
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-Uebersicht|Übersicht]]
| <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öhere ObjectFileVCVersion eintragen 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 von VC_CADVCBerechnungListKind in die neuen Kind-Felder).
  • fvcEqual — gleiche Version: normales Laden.
  • Beim erneuten Speichern eines alten Projekts kann die ALTE ObjectFileVCVersion beibehalten werden (NoXMLVCVersionLock), damit das Projekt für die Ursprungs-Version lesbar bleibt.
  • ObjectFileVCVersion sollte in der Datei VOR den VCCADDaten-Sektionen stehen, damit Abbruch-/Migrationsentscheidungen greifen, bevor Objekte gelesen werden.
  • Die drei Referenz-Beispielprojekte dieser Doku tragen ObjectFileVersion 9 und 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_CADVCBerechnungListKind als Zahl → 5.0.57 ListKindBaseType/ListKindType als 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



[Nach oben]