Zum Inhalt springen

CAD XML Syntax-Objekt VC_CADVCPNRText und Varianten

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)

Punktnummerntexte sind spezialisierte Textobjekte, die die Punktnummer (bzw. Punktparameter) eines referenzierten VC_CADPunkt darstellen. Basisklasse ist T2DVCPNRText (CAD\GLGeometrics.pas), Wurzeltag VC_CADVCPNRText; daneben existieren sechs Parameter-Varianten-Tags für VMA-Kürzel-, InGerade- und AufKreisbogen-Texte (je „normal“ und „Original“). Alle erben die komplette Serialisierung von VC_CADText — auch hier steht der Textinhalt im inneren Element <VC_CADText>…</VC_CADText>.

Tag-Übersicht (Tag → Klasse → Verfügbarkeit)

XML-Wurzeltag Delphi-Klasse IsOriginal Verfügbarkeit (Code/IFDEF)
VC_CADVCPNRText T2DVCPNRText — alle Bundesländer
VC_CADVCPNRParVMAKuerzelText T2DVCPNRParameterVMAKuerzelText False alle Bundesländer
VC_CADVCPNRParVMAKuerzelOriginalText T2DVCPNRParameterVMAKuerzelText True alle Bundesländer
VC_CADVCPNRParInGeradeText T2DVCPNRParameterInGeradeText False nur BW ({$IFDEF BW})
VC_CADVCPNRParInGeradeOriginalText T2DVCPNRParameterInGeradeText True nur BW
VC_CADVCPNRParAufKreisbogenText T2DVCPNRParameterAufKreisbogenText False nur BW
VC_CADVCPNRParAufKreisbogenOriginalText T2DVCPNRParameterAufKreisbogenText True nur BW

Wichtig: Die „Original“-Varianten sind KEINE eigenen Klassen, sondern dieselbe Klasse mit gesetztem Flag IsOriginal=True. Die Factory-Funktionen der Original-Tags setzen beim Lesen das Flag; beim Schreiben wählt der Manager anhand von IsOriginal den Original- oder Normal-Tag (GLGeometrics.pas:79993-80026). Die Variante steckt also allein im Wurzeltag, nicht in einem XML-Element.

Klassenhierarchie: T2DText → T2DVCPNRTextBase → T2DVCPNRText (Punktnummerntext) bzw. T2DVCPNRTextBase → T2DVCPNRParameterText → die drei Parameter-Klassen. In Nicht-BW-Versionen sind die InGerade-/AufKreisbogen-Tags nicht registriert — solche Elemente würden dort als unbekannte Objekt-Tags komplett ignoriert.

Strukturregel

<VC_CADVCPNRText>                                (bzw. einer der 6 Varianten-Tags)
  <VermCadID> … </VermCadID>                     (siehe VermCadID-Block; CADObjektArt = cadText,
                                                  ObjektArt typisch oaVC)
  [Basiselemente]                                (siehe Basiselemente; Layer ist Pflicht)
  [alle Text-Elemente von VC_CADText]            (siehe Objektseite VC_CADText;
                                                  Textinhalt im inneren <VC_CADText>-Element)
  <Text_RissDaten> … </Text_RissDaten>
  [<PktNrText_SpecialOutputText>text</PktNrText_SpecialOutputText>]   (NUR VC_CADVCPNRText; mehrzeilig möglich)
  [<IsAdditionalVCPNRText>bool</IsAdditionalVCPNRText>]               (NUR VC_CADVCPNRText)
</VC_CADVCPNRText>

Elemente

Nur die eigenen Elemente gegenüber VC_CADText. Die beiden Zusatzelemente gehören zur Klasse T2DVCPNRText — die Parameter-Varianten haben KEINE eigenen XML-Elemente (sie erben von T2DVCPNRTextBase, nicht von T2DVCPNRText, und serialisieren exakt wie ein VC_CADText).

Element Typ/Format Pflicht Default Bedeutung
PktNrText_SpecialOutputText text — mehrzeiliger Textknoten möglich (Zeilenumbrüche stehen roh im Element) nein ' Sondertext, der statt der Punktnummer ausgegeben wird (bei PktNrTextType=TT_SPECIAL am Referenzpunkt); nur geschrieben, wenn der Textinhalt und der Sondertext nicht leer sind
IsAdditionalVCPNRText bool (-1/0) nein False Kennzeichnung als zusätzlicher (zweiter) Punktnummerntext eines Punkts; nur geschrieben, wenn True

Besonderheiten des Textinhalts:

  • Default-Textinhalt neuer PNR-Texte ist der Platzhalter #TEXTVONTEXTSTIL (PROPERTY_TEXT_FROMTEXTSTIL; seit 06/2025 — vorher $PNR$). In den Bestandsdaten ist <VC_CADText>#TEXTVONTEXTSTIL</VC_CADText> der Regelfall.
  • Der Platzhalter $PNR$ (TEXT_PLACEHOLDER_PUNKTNUMMER) wird bei der Darstellung durch die Punktnummer (bzw. NV+NR oder den SpecialOutputText) des Referenzpunkts ersetzt — er kann auch in Kombination stehen (z. B. Meine NR: $PNR$).
  • Welche Nummer dargestellt wird, steuert PktNrTextType am referenzierten Punkt (bzw. rissabhängig dessen RissPktNrTextType), nicht am Text.

Referenzen

Wie bei VC_CADText: Text_Referenzobjekt zeigt auf den zugehörigen VC_CADPunkt und ist praktisch Pflicht (ohne Referenzpunkt kann kein Punktnummern-/Parametertext dargestellt werden; fehlt das Ziel endgültig, wird der Text beim Referenzen-Update zerstört).

Minimalform

<VC_CADVCPNRText>
  <VermCadID>
    <GUID>{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}</GUID>
    <ObjektArt>oaVC</ObjektArt>
    <CADObjektArt>cadText</CADObjektArt>
  </VermCadID>
  <Layer>-235</Layer>
  <Text_Referenzobjekt GUID="{XXXX…}" />
  <VC_CADText>#TEXTVONTEXTSTIL</VC_CADText>
  <Text_RissDaten />
</VC_CADVCPNRText>

Für die Varianten denselben Aufbau mit dem jeweiligen Wurzeltag verwenden.

Beispiele

Beispiel (Baden-Württemberg) — Standardform (alle BW-Exemplare identisch aufgebaut)

<VC_CADVCPNRText>
  <VermCadID>
    <GUID>{E09395D3-…}</GUID>
    <ObjektArt>oaVC</ObjektArt>
    <CADObjektArt>cadText</CADObjektArt>
  </VermCadID>
  <Layer>-235</Layer>
  <LayerErben>-1</LayerErben>
  <Text_Referenzobjekt GUID="{1CB09C10-…}" />
  <VC_CADText>#TEXTVONTEXTSTIL</VC_CADText>
  <Text_RissDaten />
</VC_CADVCPNRText>

Beispiel (Sachsen) — RefPkt-Verschiebung, gefüllte Text_RissDaten und mehrzeiliger SpecialOutputText

<VC_CADVCPNRText>
  <VermCadID>
    <GUID>{E8AFB7D5-…}</GUID>
    <ObjektArt>oaVC</ObjektArt>
    <CADObjektArt>cadText</CADObjektArt>
  </VermCadID>
  <Layer>787</Layer>
  <LayerErben>-1</LayerErben>
  <Text_Referenzobjekt GUID="{798B27AC-…}" />
  <Text_RefPktMoveX>-6.79097226588056</Text_RefPktMoveX>
  <Text_RefPktMoveY>2.55763887800276</Text_RefPktMoveY>
  <VC_CADText>#TEXTVONTEXTSTIL</VC_CADText>
  <Text_RissDaten>
    <RissEintrag_0>
      <Text_RissRefPktMove>-6.13705911999569 2.45703685283661 0</Text_RissRefPktMove>
    </RissEintrag_0>
    <RissEintrag_1>
      <Text_RissRefPktMove>-6.13705911999569 2.45703685283661 0</Text_RissRefPktMove>
    </RissEintrag_1>
  </Text_RissDaten>
  <PktNrText_SpecialOutputText>189
DES:[1800]
GST:[2100]
ENT:[4267R0702]</PktNrText_SpecialOutputText>
</VC_CADVCPNRText>

Der Wert von PktNrText_SpecialOutputText ist hier ein mehrzeiliger Textknoten — die Zeilenumbrüche gehören zum Wert. Details zu Text_RissDaten: Rissdaten an Objekten.

Beispiel (Baden-Württemberg) — Parameter-Variante InGerade

<VC_CADVCPNRParInGeradeText>
  <VermCadID>
    <GUID>{1BAA940B-…}</GUID>
    <ObjektArt>oaVC</ObjektArt>
    <CADObjektArt>cadText</CADObjektArt>
  </VermCadID>
  <Layer>-1007</Layer>
  <Text_Referenzobjekt GUID="{37EE340E-…}" />
  <VC_CADText>#TEXTVONTEXTSTIL</VC_CADText>
  <Text_RissDaten />
</VC_CADVCPNRParInGeradeText>

VC_CADVCPNRParVMAKuerzelText (Layer −1006) und VC_CADVCPNRParVMAKuerzelOriginalText (Layer −1009) sind in den Bestandsdaten strukturell identisch aufgebaut — nur der Wurzeltag (und der System-Layer) unterscheidet sich.

Konstruiertes Beispiel — AufKreisbogen-Original-Variante (nur BW; kein Bestandsbeispiel vorhanden)

<VC_CADVCPNRParAufKreisbogenOriginalText>
  <VermCadID>
    <GUID>{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}</GUID>
    <ObjektArt>oaVC</ObjektArt>
    <CADObjektArt>cadText</CADObjektArt>
  </VermCadID>
  <Layer>-1010</Layer>
  <Text_Referenzobjekt GUID="{XXXX…}" />
  <VC_CADText>#TEXTVONTEXTSTIL</VC_CADText>
  <Text_RissDaten />
</VC_CADVCPNRParAufKreisbogenOriginalText>

(Nach den Regeln konstruiert — in den drei untersuchten Beispielprojekten kommen die AufKreisbogen-Tags nicht vor; Layer-ID beispielhaft.)

Verfügbarkeit und Besonderheiten

  • Code-Verfügbarkeit: VC_CADVCPNRText und beide VMAKuerzel-Tags in allen Bundesland-Versionen; die vier InGerade-/AufKreisbogen-Tags nur in BW ({$IFDEF BW} in Factory und Klassendeklaration).
  • Belege aus den Beispielprojekten (getrennt von der Code-Verfügbarkeit): VC_CADVCPNRText in BW/Sachsen/THR belegt; VC_CADVCPNRParInGeradeText (254×) und VC_CADVCPNRParVMAKuerzelText (219×) nur in BW belegt; VC_CADVCPNRParVMAKuerzelOriginalText in BW (1×) und Sachsen (86×); die beiden AufKreisbogen-Tags und die InGerade-Original-Variante sind in keinem der drei Projekte belegt.
  • Speicher-Weiche: Beim Speichern entscheidet der Klassentyp plus IsOriginal über den Wurzeltag; beim Lesen setzt der Factory-Eintrag des Original-Tags IsOriginal:=True.
  • PNR-Texte entstehen normalerweise automatisch (ObjektArt oaVC) und liegen auf System-Layern (negativ, z. B. −235, −1006, −1007, −1009) oder erben den Layer des Punkts (LayerErben).
  • Es gelten alle Besonderheiten von VC_CADText (doppelter Tag VC_CADText als Inhaltselement, leere Texte werden nicht gespeichert, Legacy-Aliase).

Quellen im Code

  • CAD\GLGeometrics.pas:55198-55233 — T2DVCPNRText.DataToXMLLite (SpecialOutputText, IsAdditionalVCPNRText)
  • CAD\GLGeometrics.pas:55161-55185 — T2DVCPNRText.InternalCreateFromXML
  • CAD\GLGeometrics.pas:55139-55150 — AfterConstruction (Default-Text PROPERTY_TEXT_FROMTEXTSTIL)
  • CAD\GLGeometrics.pas:2989-3081 — Klassendeklarationen T2DVCPNRTextBase, T2DVCPNRText, T2DVCPNRParameterText (+ Varianten, BW-IFDEF)
  • CAD\GLGeometrics.pas:83800-83832 — Factory-Funktionen (Original-Varianten setzen IsOriginal:=True)
  • CAD\GLGeometrics.pas:97023-97031 — Factory-Registrierung der 7 Tags (BW-IFDEF)
  • CAD\GLGeometrics.pas:79982-80026 — Speicher-Weiche Tag je Klasse/IsOriginal; leere Texte werden nicht gespeichert
  • CAD\GLConsts.pas:245, 458 — TEXT_PLACEHOLDER_PUNKTNUMMER ($PNR$), PROPERTY_TEXT_FROMTEXTSTIL (#TEXTVONTEXTSTIL)
  • VERMCAD\GlobalConsts.pas ca. 4372-5004 — Tag-Konstanten (xn_CADVCPNRText, xn_CADVCPNRParameter*, xn_SpecialOutputText, xn_IsAdditionalVCPNRText)



[Nach oben]