CAD XML Syntax-Objekt VC_CADVCBerechnung und VC_CADVCMessung
Berechnung und Messung sind die CAD-Repräsentanten der VermCad-Rechenmakros und Messblöcke: Sie bündeln alle zu einem Makro gehörenden Darstellungs-Objekte (Punkte, Linien, Maßtexte …) als Kompo und verknüpfen sie über die Makro-ID mit der Berechnung/Messung im Projekt. Delphi-Klassen sind T3DVCBerechnung (CAD\GLVCBerechnung.pas, XML-Tag VC_CADVCBerechnung) und T3DVCMessung (CAD\GLVCMessung.pas, XML-Tag VC_CADVCMessung). Die komplette XML-Serialisierung liegt in der gemeinsamen Basisklasse T3DVCCalcMess (CAD\GLVCCalcMessBase.pas), die von T3DKompo (VC_CADKompo) erbt — beide Objekte sind also Kompos mit Zusatzdaten. Die Element-Namen tragen aus historischen Gründen für beide Objekte das Präfix VC_CADVCBerechnung…/VC_CADVCBer….
Strukturregel
<VC_CADVCBerechnung> | <VC_CADVCMessung>
<VermCadID> … </VermCadID> (siehe VermCadID-Block; CADObjektArt=cadKompo)
[Basiselemente] (siehe Basiselemente; Layer ist Pflicht,
typisch negativer System-Layer)
<MemberGroup> (geerbt von Kompo: alle zugehörigen CAD-Objekte)
{<Member GUID="guid"/>}*
</MemberGroup>
### REIHENFOLGE DER FOLGENDEN 5 ELEMENTE IST ZWINGEND ###
<MakroIDType>enum:TMakroType</MakroIDType> (1. — Makrotyp)
<MakroIDNr>ganzzahl</MakroIDNr> (2. — Makronummer)
<MakroIDName>text | leer</MakroIDName> (3. — Makroname, darf leer sein)
<VC_CADVCBerCalcKind>enum:TCalcKind</VC_CADVCBerCalcKind> (4. — Berechnungsart)
<CalcItemActive>bool</CalcItemActive>
[<VC_CADVCBerechnungSettings> (5. — NACH CalcKind!)
{<PropertyName>wert</PropertyName>}* (RTTI: Elementname = Delphi-Property-Name)
</VC_CADVCBerechnungSettings>]
{<VC_CADVCBerechnungList> (0..n Ergebnis-/Untergliederungslisten;
<VC_CADVCBerechnungListName>text</VC_CADVCBerechnungListName> KEINE eigenen Objekte!)
<VC_CADVCBerechnungListNR>ganzzahl</VC_CADVCBerechnungListNR>
[<VC_CADVCBerechnungListKindBaseType>enum</VC_CADVCBerechnungListKindBaseType>]
[<VC_CADVCBerechnungListKindType>text</VC_CADVCBerechnungListKindType>]
[<VC_CADVCBerechnungListCounterNr>ganzzahl</VC_CADVCBerechnungListCounterNr>]
[<VC_CADVCBerechnungListKindName>text</VC_CADVCBerechnungListKindName>]
[<VC_CADVCBerechnungListDeactivated>bool</VC_CADVCBerechnungListDeactivated>]
[<VC_CADVCBerechnungListSysID>ganzzahl</VC_CADVCBerechnungListSysID>]
[<MemberGroup>
{<Member GUID="guid" [RefGUID="guid"] [Counter="ganzzahl"]/>}*
</MemberGroup>]
</VC_CADVCBerechnungList>}*
</VC_CADVCBerechnung> | </VC_CADVCMessung>
Geerbte Elemente: VermCadID-Block, Basiselemente und die MemberGroup von Kompo; Werteformate: Werteformate.
Zwingende Element-Reihenfolge
Der Leser wertet die fünf Kernelemente in Dokumentreihenfolge aus — ein Erzeuger MUSS schreiben:
MakroIDType → MakroIDNr → MakroIDName → VC_CADVCBerCalcKind → VC_CADVCBerechnungSettings
Gründe (im Code mehrfach als „### ACHTUNG ###" dokumentiert):
MakroIDNrholt dieTVCMakroIDvom IDServer mit dem zuvor gelesenen Typ — steht der Typ noch nicht, entsteht die falsche Makro-Verknüpfung.MakroIDNamesetzt den Namen an der bereits erzeugten MakroID.- Der Setter von
VC_CADVCBerCalcKinderzeugt dasCalcMessViewObjekt(Settings-Träger). VC_CADVCBerechnungSettingsvorCalcKind→ das Settings-Objekt existiert noch nicht; der Leser loggt „Einstellungen … konnten nicht korrekt eingelesen werden" und verwirft die Settings.
Elemente
Nur die eigenen Elemente von T3DVCCalcMess (zusätzlich zu Kompo/Basis):
| Element | Typ/Format | Pflicht | Default | Bedeutung |
|---|---|---|---|---|
MakroIDType |
enum:TMakroType | praktisch ja (geschrieben, wenn MakroID existiert) | — | Makrotyp: mt_Calc (Berechnung), mt_Mess (Tachymeter-Messung), mt_NetzMess, mt_GNSSMess
|
MakroIDNr |
ganzzahl | praktisch ja | — | Makronummer; eindeutig je Makrotyp (und KS) — verknüpft das CAD-Objekt mit der Berechnung/Messung im IDServer des Projekts |
MakroIDName |
text | praktisch ja (darf leer sein: <MakroIDName />) |
Makroname; bei Messungen z. B. der Standpunktname | |
VC_CADVCBerCalcKind |
enum:TCalcKind | ja (wird immer geschrieben) | — | Berechnungs-/Messungsart, siehe Enum-Tabelle unten; der Setter erzeugt das Settings-Objekt |
CalcItemActive |
bool (-1/0) | nein (wird immer geschrieben) | — | Berechnungs-Item aktiv |
VC_CADVCBerechnungSettings |
Container | nein | — | Darstellungs-Einstellungen, RTTI-basiert (siehe unten) |
VC_CADVCBerechnungList |
Container, 0..n | nein | — | Untergliederung in Einzel-Listen (z. B. je Messblock, je Transformations-System); keine eigenständigen CAD-Objekte — kein VermCadID, keine GUID |
Enum TCalcKind (alle 43 Werte, in Deklarationsreihenfolge)
Quelle: VERMCAD\GlobalTypes.pas:397-441. Geschrieben wird immer der GetEnumName-String:
| Wert | Bedeutung |
|---|---|
ca_Entfernung |
Entfernungsberechnung |
ca_KoordinatenVergleich |
Koordinatenvergleich |
ca_Fassade |
Fassade (neu ab Version 5.0) |
ca_LinienElement |
Linienelement |
ca_KleinPunkt |
Kleinpunktberechnung |
ca_MessLinie |
Messungslinie |
ca_PolygonPunkt |
Polygonpunkt |
ca_BogenElement |
Bogenelement |
ca_BogenPunkt |
Bogenpunkt |
ca_AusgleichGeraden |
Ausgleichsgerade |
ca_Kreis |
Kreisberechnung |
ca_Klotoide |
Klotoide |
ca_LotFussPunkt |
Lotfußpunkt |
ca_RichtungFussPunkt |
Richtungsfußpunkt |
ca_GeradenSchnitt |
Geradenschnitt |
ca_KreisGeradeSchnitt |
Schnitt Kreis–Gerade |
ca_BogenSchnitt |
Bogenschnitt |
ca_MultiBogenSchnitt |
Mehrfach-Bogenschnitt |
ca_VorwaertsSchnitt |
Vorwärtsschnitt |
ca_Flaeche |
Flächenberechnung |
ca_Winkel |
Winkelberechnung |
ca_PolarElement |
Polarelement |
ca_PolarPunkt |
Polarpunkt |
ca_Mittelwert |
Mittelwertbildung |
ca_Transformation |
Transformation |
ca_KsTransformation |
Koordinatensystem-Transformation |
ca_MaschenweiseTransformation |
maschenweise Transformation (neu ab Version 5.0) |
ca_MaschenweiseKsTransformation |
maschenweise KS-Transformation (neu ab Version 5.0) |
ca_Grenzpruefung |
Grenzprüfung |
ca_Punktidentitaet |
Punktidentitätsnachweis |
ca_PolygonZug |
Polygonzug |
ca_NetzAusgleichYX |
Netzausgleichung Lage (Y/X) |
ca_NetzAusgleichZ |
Netzausgleichung Höhe (Z) |
ca_Nivellement |
Nivellement |
ca_VkTransformation |
VK-Transformation |
ca_GebaeudeUmringAusgleichung |
Gebäudeumring-Ausgleichung |
ca_Ebenheit |
Ebenheitsprüfung |
ca_Trasse |
Trasse |
ca_EinfluchtenGerade |
Einfluchten in Gerade (neu 07/2026) |
ca_EinfluchtenBogen |
Einfluchten in Bogen (neu 07/2026) |
ca_GNSSMess |
GNSS-Messung (typisch bei VC_CADVCMessung)
|
ca_TachyMess |
Tachymeter-Messung (typisch bei VC_CADVCMessung)
|
ca_Calculations |
Sammelliste aller Berechnungen (außer Netz) |
Real belegt in den Beispielprojekten: ca_AusgleichGeraden, ca_Entfernung, ca_GNSSMess, ca_GeradenSchnitt, ca_KleinPunkt, ca_KreisGeradeSchnitt, ca_LinienElement, ca_LotFussPunkt, ca_MessLinie, ca_TachyMess, ca_VkTransformation.
Settings-Container (RTTI-Prinzip)
VC_CADVCBerechnungSettings wird per RTTI geschrieben: Alle PUBLISHED Properties des jeweiligen TCalcView…Objekt (Klassen je CalcKind in CAD\GLCalcViewManager.pas) der Typen Integer, Enum und String werden als Kindelemente <PropertyName>Wert</PropertyName> ausgegeben — Elementname = exakter Delphi-Property-Name. Gelesen wird spiegelbildlich über CalcMessViewObjekt.ReadFromXML; die konkreten Element-Namen variieren daher je nach CalcKind und Programmversion und sind hier nicht abschließend aufzählbar.
Regeln für Erzeuger/Reparierer:
- Immer vorhanden (Basisklasse
TCalcViewBaseObjekt):ActiveundTextLayerID. - Ausnahme vom Bool-Format:
Activewird über RTTI als StringTrue/Falsegeschrieben — nicht als -1/0 wie alle anderen Bool-Elemente! - Alle weiteren Properties sind fast durchweg Layer-IDs (Integer, -1 = nicht gesetzt), z. B. bei
ca_MessLinie:NachweisLayerID,BemerkungLayerID,BaseLinienObjLayerID,AnfangsmassLayerID,ZwischenmassLayerID,EndmassLayerID,PunkteLinienObjLayerID,ElementeLinienObjLayerIDu. a.; beica_GNSSMessnurActive+TextLayerID. - Unbekannte/überzählige Kindelemente sind unkritisch (werden ignoriert); minimal genügt
<Active>True</Active>+<TextLayerID>-1</TextLayerID>. - Der Container darf ganz fehlen; er wird nur geschrieben/gelesen, wenn ein CalcMessViewObjekt existiert (d. h. CalcKind wurde vorher gesetzt).
Kindelemente von VC_CADVCBerechnungList
Ein VC_CADVCBerechnungList-Block (Klasse T3DVCBerechnungsItemListContainer) ist reine Untergliederung — kein CAD-Objekt.
| Kind-Element | Typ/Format | Pflicht | Default | Bedeutung |
|---|---|---|---|---|
VC_CADVCBerechnungListName |
text | ja | — | Listenname; der Block wird beim Lesen NUR übernommen, wenn Name UND NR gesetzt sind |
VC_CADVCBerechnungListNR |
ganzzahl ≥ 0 | ja | — | Listen-/Makronummer |
VC_CADVCBerechnungListKind |
ganzzahl | nein — Legacy (wird seit 28.01.2026 nicht mehr geschrieben) | -1 | alte numerische Kind-Kodierung; wird beim Lesen in KindBaseType/KindType migriert (siehe Besonderheiten) |
VC_CADVCBerechnungListKindBaseType |
enum | nein | kbt_None (nicht geschrieben) |
Basistyp des Listen-Kinds: kbt_None, kbt_VkTransformation, kbt_Punktidentitaet, kbt_MaschenTrafo
|
VC_CADVCBerechnungListKindType |
text (Enum-Name) | nein | konkreter Kind-Typ als Enum-Name der Zieltypen, z. B. vaYX/vaUnknown (TVAObservationKind) oder ein TPIdKind-Name
| |
VC_CADVCBerechnungListCounterNr |
ganzzahl ≥ 0 | nein | 0 | laufende Nummer |
VC_CADVCBerechnungListKindName |
text | nein | Anzeigename des Kinds (z. B. Systemname einer VK-Transformation) | |
VC_CADVCBerechnungListDeactivated |
bool | nein (nur geschrieben, wenn True) | False | Liste deaktiviert |
VC_CADVCBerechnungListSysID |
ganzzahl > 0 | nein | 0 | Unter-System-ID |
MemberGroup |
Container | nein | — | Listen-Mitglieder; hier tragen die Member-Elemente die Daten als Attribute: GUID (CAD-Objekt), optional RefGUID (Quell-Referenzpunkt), optional Counter (Zähler ≥ 0)
|
Referenzen
| Referenz | Ziel | Pflicht | Verhalten bei fehlendem Ziel |
|---|---|---|---|
MemberGroup/Member (äußere, geerbt) |
beliebige CAD-Objekte des Makros (Punkte, Linien, Texte …) | ja (≥ 1) | wie beim Kompo: nicht auflösbare Referenzen führen nach dem „LastTry" zur Zerstörung des Objekts; anders als beim reinen Kompo genügt hier bereits 1 Member |
Member@GUID (in Listen-MemberGroup) |
dieselben CAD-Objekte wie in der äußeren MemberGroup | praktisch ja | fehlt das Attribut, wird die GUID als Workaround aus der Kompo-Kinderliste positionsbasiert rekonstruiert; ungültige Werte → Logeintrag, Eintrag übersprungen (weiche Referenz) |
Member@RefGUID |
Quell-Referenzobjekt des Members — bei Messungen der gemessene Original-Punkt, dessen Darstellungs-Objekt der Member ist | nein | weiche Referenz (nur Verzahnungs-Info) |
Verzahnung Berechnung ↔ Messung: Über RefGUID zeigt ein Listen-Member (z. B. der von einer GNSS-Messung erzeugte CAD-Punkt) auf sein Quellobjekt. So bleibt nachvollziehbar, welches Messungs-Objekt welches Zielobjekt erzeugt hat; Paare mit gleichem Counter gehören zusammen (z. B. Punkt + Punktnummerntext derselben Messung Nr. n).
Minimalform
<VC_CADVCBerechnung>
<VermCadID>
<GUID>{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}</GUID>
<ObjektArt>oaVC</ObjektArt>
<CADObjektArt>cadKompo</CADObjektArt>
</VermCadID>
<Layer>-5200</Layer>
<MemberGroup>
<Member GUID="{XXXX…}"/>
</MemberGroup>
<MakroIDType>mt_Calc</MakroIDType>
<MakroIDNr>1</MakroIDNr>
<MakroIDName>1</MakroIDName>
<VC_CADVCBerCalcKind>ca_KleinPunkt</VC_CADVCBerCalcKind>
<CalcItemActive>-1</CalcItemActive>
<VC_CADVCBerechnungSettings>
<Active>True</Active>
<TextLayerID>-1</TextLayerID>
</VC_CADVCBerechnungSettings>
</VC_CADVCBerechnung>
Für VC_CADVCMessung identisch mit MakroIDType mt_Mess/mt_GNSSMess/mt_NetzMess und passendem CalcKind (ca_TachyMess/ca_GNSSMess). Die 5-Elemente-Reihenfolge ist zwingend; die MakroIDNr sollte zu einer existierenden Berechnung/Messung des Projekts passen.
Beispiele
Beispiel VC_CADVCBerechnung (Baden-Württemberg 5.0.0, echt, gekürzt — MessLinie mit Settings und Ergebnisliste)
<VC_CADVCBerechnung>
<VermCadID>
<GUID>{2D8D9A8D-…}</GUID>
<ObjektArt>oaVC</ObjektArt>
<CADObjektArt>cadKompo</CADObjektArt>
</VermCadID>
<Layer>-5200</Layer>
<MemberGroup>
<Member GUID="{EC2B0EAF-…}" />
<Member GUID="{F4914B8E-…}" />
… (im Original 15 Member) …
</MemberGroup>
<MakroIDType>mt_Calc</MakroIDType>
<MakroIDNr>7</MakroIDNr>
<MakroIDName>7</MakroIDName>
<VC_CADVCBerCalcKind>ca_MessLinie</VC_CADVCBerCalcKind>
<CalcItemActive>-1</CalcItemActive>
<VC_CADVCBerechnungSettings>
<NachweisLayerID>-5201</NachweisLayerID>
<BemerkungLayerID>-5202</BemerkungLayerID>
<BaseLinienObjLayerID>-5205</BaseLinienObjLayerID>
<AnfangsmassLayerID>-5203</AnfangsmassLayerID>
<ZwischenmassLayerID>-5206</ZwischenmassLayerID>
<EndmassLayerID>-5207</EndmassLayerID>
<PunkteLinienObjLayerID>-5209</PunkteLinienObjLayerID>
<ElementeLinienObjLayerID>-5212</ElementeLinienObjLayerID>
… (weitere Layer-IDs gekürzt) …
<Active>True</Active>
<TextLayerID>-1</TextLayerID>
</VC_CADVCBerechnungSettings>
<VC_CADVCBerechnungList>
<VC_CADVCBerechnungListName>7</VC_CADVCBerechnungListName>
<VC_CADVCBerechnungListNR>7</VC_CADVCBerechnungListNR>
<VC_CADVCBerechnungListCounterNr>0</VC_CADVCBerechnungListCounterNr>
<MemberGroup>
<Member GUID="{F4914B8E-…}" Counter="1" />
<Member GUID="{23E14A92-…}" RefGUID="{5E840B97-…}" Counter="1" />
<Member GUID="{FA2BB7DC-…}" Counter="2" />
… (im Original 15 Member) …
</MemberGroup>
</VC_CADVCBerechnungList>
</VC_CADVCBerechnung>
Beispiel VC_CADVCMessung (echt, gekürzt — GNSS-Messung mit RefGUID-Verzahnung)
<VC_CADVCMessung>
<VermCadID>
<GUID>{7457ECCD-…}</GUID>
<ObjektArt>oaVC</ObjektArt>
<CADObjektArt>cadKompo</CADObjektArt>
</VermCadID>
<Layer>-3002</Layer>
<MemberGroup>
<Member GUID="{03C581E4-…}" />
<Member GUID="{0A236819-…}" />
… (im Original 14 Member) …
</MemberGroup>
<MakroIDType>mt_Mess</MakroIDType>
<MakroIDNr>5</MakroIDNr>
<MakroIDName />
<VC_CADVCBerCalcKind>ca_GNSSMess</VC_CADVCBerCalcKind>
<CalcItemActive>-1</CalcItemActive>
<VC_CADVCBerechnungSettings>
<Active>True</Active>
<TextLayerID>554</TextLayerID>
</VC_CADVCBerechnungSettings>
<VC_CADVCBerechnungList>
<VC_CADVCBerechnungListName>Block 8 GNSS - Messung LS 489</VC_CADVCBerechnungListName>
<VC_CADVCBerechnungListNR>5</VC_CADVCBerechnungListNR>
<VC_CADVCBerechnungListCounterNr>0</VC_CADVCBerechnungListCounterNr>
<MemberGroup>
<Member GUID="{03C581E4-…}" RefGUID="{64104C29-…}" Counter="1" />
<Member GUID="{0A236819-…}" Counter="1" />
<Member GUID="{1C4F8839-…}" RefGUID="{A14432B9-…}" Counter="2" />
<Member GUID="{4E7730EC-…}" Counter="2" />
… (weitere Paare gekürzt) …
</MemberGroup>
</VC_CADVCBerechnungList>
</VC_CADVCMessung>
Je gemessenem Punkt entstehen hier zwei Member mit gleichem Counter: der CAD-Punkt (mit RefGUID auf den Quellpunkt) und sein Punktnummerntext.
Die drei real belegten Versions-Schemata der Listenstruktur
Die VC_CADVCBerechnungList-Struktur hat sich über die Programmversionen entwickelt; alle drei Formen werden gelesen:
| Schema | belegt in | Kind-Felder |
|---|---|---|
| 5.0.0 (BW) | BW-Beispielprojekt | nur ListName/ListNR/ListCounterNr + MemberGroup — keine Kind-Typ-Felder
|
| 5.0.35 (THR) | THR-Beispielprojekt | zusätzlich VC_CADVCBerechnungListKind als Zahl (Legacy) + ListKindName, ggf. ListSysID
|
| 5.0.57 (Sachsen) | Sachsen-Beispielprojekt | ListKindBaseType/ListKindType als Enum-Strings (aktuelles Schreibformat) + ListKindName/ListSysID
|
THR 5.0.35 (echt — ListKind noch als Zahl):
<VC_CADVCBerechnungList>
<VC_CADVCBerechnungListName>1</VC_CADVCBerechnungListName>
<VC_CADVCBerechnungListNR>1</VC_CADVCBerechnungListNR>
<VC_CADVCBerechnungListKind>11</VC_CADVCBerechnungListKind>
<VC_CADVCBerechnungListCounterNr>0</VC_CADVCBerechnungListCounterNr>
<VC_CADVCBerechnungListKindName>1</VC_CADVCBerechnungListKindName>
<MemberGroup>
<Member GUID="{C0406EBC-…}" Counter="1" />
… (gekürzt) …
</MemberGroup>
</VC_CADVCBerechnungList>
Sachsen 5.0.57 (echt — Enum-Strings; das zugehörige VK-Transformations-Objekt umfasst im Original 17.499 Zeilen mit 447 Listen-Blöcken):
<VC_CADVCBerechnungList>
<VC_CADVCBerechnungListName>1</VC_CADVCBerechnungListName>
<VC_CADVCBerechnungListNR>1</VC_CADVCBerechnungListNR>
<VC_CADVCBerechnungListKindBaseType>kbt_VkTransformation</VC_CADVCBerechnungListKindBaseType>
<VC_CADVCBerechnungListKindType>vaYX</VC_CADVCBerechnungListKindType>
<VC_CADVCBerechnungListCounterNr>0</VC_CADVCBerechnungListCounterNr>
<VC_CADVCBerechnungListKindName>D4244-DT5-L1</VC_CADVCBerechnungListKindName>
<VC_CADVCBerechnungListSysID>35</VC_CADVCBerechnungListSysID>
<MemberGroup>
<Member GUID="{21920A80-…}" RefGUID="{2E8AA095-…}" Counter="2" />
<Member GUID="{94994B3F-…}" Counter="1" />
… (gekürzt) …
</MemberGroup>
</VC_CADVCBerechnungList>
Verfügbarkeit und Besonderheiten
- Verfügbar in allen Bundesland-Versionen; Bestandsbelege in allen drei Beispielprojekten.
ObjektArtist beim Berechnungs-/Messungs-Objekt selbstoaVC; die von Berechnungen erzeugten Member-Objekte tragen häufigoaVCBer.CADObjektArtistcadKompo.- Legacy-Migration
VC_CADVCBerechnungListKind: Die alte Zahl wird beim Lesen fürca_VkTransformationundca_PunktidentitaetinKindBaseType/KindTypeumgesetzt. Bei VK-Transformationen aus älteren Dateiversionen (fvcOlder) wird dabei der TVAObservationKind-Ordinalwert um +1 verschoben (Enum-Erweiterung); neuere Dateien 1:1. Für andere CalcKinds bleibt die Zahl nur im internenKind-Feld erhalten. - Die Elementnamen im
VC_CADVCBerechnungSettings-Container sind versions- und CalcKind-abhängig (RTTI) — beim Reparieren fremde/unbekannte Property-Namen nicht „korrigieren", sie sind harmlos. MakroIDNrohne passende Berechnung/Messung im Projekt: Das CAD-Objekt lädt trotzdem (die MakroID wird über den IDServer angelegt), verweist dann aber ins Leere — verwaiste Darstellungs-Kompo.- Schreibreihenfolge im Manager: Berechnungen/Messungen werden mit den Kompos geschrieben.
- Layer sind typischerweise negative System-Layer der Berechnungs-/Messungsdarstellung (z. B. -3xxx, -45xx, -5xxx, -6xxx).
Quellen im Code
CAD\GLVCCalcMessBase.pas:2988-3085—T3DVCCalcMess.DataToXMLLite(Schreibreihenfolge mit „### ACHTUNG ###", RTTI-Settings 3040-3049)CAD\GLVCCalcMessBase.pas:2935-2985—InternalCreateFromXML(MakroIDType/Nr/Name, CalcKind-Setter, CalcItemActive)CAD\GLVCCalcMessBase.pas:2681-2933—InternalCreateComplexStructsFromXML(Settings-Lesen, Listen-Blöcke, Name+NR-Pflicht 2873, Kind-Migration 2897-2918, GUID-Workaround 2760-2765)CAD\GLVCCalcMessBase.pas:568-652—T3DVCBerechnungsItemListContainer.DataToXMLLite(Kind-Elemente + Schreibbedingungen)CAD\GLVCCalcMessBase.pas:445-483—T3DVCCalcMessItem.DataToXMLLite(Member-Attribute GUID/RefGUID/Counter)CAD\GLVCCalcMessBase.pas:44-49— EnumT3DVCBerechnungsItemListContainerKindBaseTypeCAD\GLCalcViewManager.pas:262-448—TCalcViewBaseObjekt(publishedActive/TextLayerID) und CalcKind-spezifischeTCalcView…-KlassenVERMCAD\GlobalTypes.pas:397-441— EnumTCalcKind(43 Werte)VERMCAD\VCObjID.pas:11— EnumTMakroTypeVERMCAD\GlobalConsts.pas— Tag-Konstantenxn_CADVCCM*(write_xn_CADVCCMListKind=False seit 28.01.2026)