Zum Inhalt springen

CAD XML Syntax-Objekt VC_CADVCBerechnung und VC_CADVCMessung

Aus VermCAD Hilfe Wiki
Version vom 20. Juli 2026, 13:50 Uhr von Hahn (Diskussion | Beiträge) (CAD-XML-Syntax-Dokumentation (automatischer Import))
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

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):

  1. MakroIDNr holt die TVCMakroID vom IDServer mit dem zuvor gelesenen Typ — steht der Typ noch nicht, entsteht die falsche Makro-Verknüpfung.
  2. MakroIDName setzt den Namen an der bereits erzeugten MakroID.
  3. Der Setter von VC_CADVCBerCalcKind erzeugt das CalcMessViewObjekt (Settings-Träger).
  4. VC_CADVCBerechnungSettings vor CalcKind → 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): Active und TextLayerID.
  • Ausnahme vom Bool-Format: Active wird über RTTI als String True/False geschrieben — 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, ElementeLinienObjLayerID u. a.; bei ca_GNSSMess nur Active + 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.
  • ObjektArt ist beim Berechnungs-/Messungs-Objekt selbst oaVC; die von Berechnungen erzeugten Member-Objekte tragen häufig oaVCBer. CADObjektArt ist cadKompo.
  • Legacy-Migration VC_CADVCBerechnungListKind: Die alte Zahl wird beim Lesen für ca_VkTransformation und ca_Punktidentitaet in KindBaseType/KindType umgesetzt. 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 internen Kind-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.
  • MakroIDNr ohne 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 — Enum T3DVCBerechnungsItemListContainerKindBaseType
  • CAD\GLCalcViewManager.pas:262-448 — TCalcViewBaseObjekt (published Active/TextLayerID) und CalcKind-spezifische TCalcView…-Klassen
  • VERMCAD\GlobalTypes.pas:397-441 — Enum TCalcKind (43 Werte)
  • VERMCAD\VCObjID.pas:11 — Enum TMakroType
  • VERMCAD\GlobalConsts.pas — Tag-Konstanten xn_CADVCCM* (write_xn_CADVCCMListKind=False seit 28.01.2026)



[Nach oben]