CAD XML Syntax-Objekt VC_CADVCPNRText und Varianten
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
PktNrTextTypeam referenzierten Punkt (bzw. rissabhängig dessenRissPktNrTextType), 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_CADVCPNRTextund 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_CADVCPNRTextin BW/Sachsen/THR belegt;VC_CADVCPNRParInGeradeText(254×) undVC_CADVCPNRParVMAKuerzelText(219×) nur in BW belegt;VC_CADVCPNRParVMAKuerzelOriginalTextin 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-TagsIsOriginal:=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_CADTextals 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.InternalCreateFromXMLCAD\GLGeometrics.pas:55139-55150—AfterConstruction(Default-TextPROPERTY_TEXT_FROMTEXTSTIL)CAD\GLGeometrics.pas:2989-3081— KlassendeklarationenT2DVCPNRTextBase,T2DVCPNRText,T2DVCPNRParameterText(+ Varianten, BW-IFDEF)CAD\GLGeometrics.pas:83800-83832— Factory-Funktionen (Original-Varianten setzenIsOriginal:=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 gespeichertCAD\GLConsts.pas:245, 458—TEXT_PLACEHOLDER_PUNKTNUMMER($PNR$),PROPERTY_TEXT_FROMTEXTSTIL(#TEXTVONTEXTSTIL)VERMCAD\GlobalConsts.pasca. 4372-5004 — Tag-Konstanten (xn_CADVCPNRText,xn_CADVCPNRParameter*,xn_SpecialOutputText,xn_IsAdditionalVCPNRText)