Zum Inhalt springen

CAD XML Syntax-Objekt VC_CADPunkt

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)

Der CAD-Punkt ist das Grundobjekt der CAD-Daten: Träger von Koordinaten, Punktqualität und (bei VC-Punkten) der Punktnummer. Delphi-Klasse ist T3DPoint (CAD\GLGeometrics.pas), gespeichert unter dem XML-Tag VC_CADPunkt innerhalb einer VCCADDaten-Sektion. Fast alle anderen Objekte (Linien, Texte, Symbole, Flächen) referenzieren Punkte über deren GUID.

Strukturregel

<VC_CADPunkt>
  <VermCadID> … </VermCadID>                     (siehe VermCadID-Block; bei VC-Punktnummer
                                                  zusätzlich VCPktID_NV + VCPktID_NR)
  [Basiselemente]                                (siehe Basiselemente; Layer ist Pflicht)
  [<Verankert>bool</Verankert>]
  [<PunktQualitaet>enum:TPointQualType</PunktQualitaet>]
  [<VCPktArtTransferActivated>bool</VCPktArtTransferActivated>]
  [<VCPktArtTransferForce>bool</VCPktArtTransferForce>]
  [<VCPktArtTransfer>enum:TAZ_Punktobjekt | leer</VCPktArtTransfer>]
  [<PktNrTextType>enum:TPktNrTextType</PktNrTextType>]
  [<VCPktSiblTransferedConnected>enum:TVCPktSiblTransferedConnected</VCPktSiblTransferedConnected>]
  [<VerwendungsStatus>enum:TPktBenutzPart</VerwendungsStatus>]
  <Position>
    <gml:Point>
      <gml:pos>zahl zahl [zahl]</gml:pos>        (X Y [Z]; ECHTE Koordinaten, keine Riss-Deltas)
    </gml:Point>
    [<OriginalCADPos>zahl zahl [zahl]</OriginalCADPos>]
  </Position>
  [<PointSymbolGUID GUID="guid"/>]
  [<WeitereSymbole>
     {<WeitereSymboleMember GUID="guid"/>}* </WeitereSymbole>]
  <RissKoordinaten> {<RissEintrag_ID>zahl zahl zahl</RissEintrag_ID>}* </RissKoordinaten>
  <RissPktNrTextType> {<RissEintrag_ID>enum:TPktNrTextType</RissEintrag_ID>}* </RissPktNrTextType>
</VC_CADPunkt>

Die Reihenfolge entspricht der Schreibreihenfolge in T3DPoint.DataToXMLLite. Die Container RissKoordinaten/RissPktNrTextType werden beim Speichern IMMER geschrieben — meist leer als <RissKoordinaten /> — dürfen beim Erzeugen aber auch fehlen. Geerbte Elemente: VermCadID-Block und Basiselemente; Werteformate (Float mit Dezimalpunkt, Bool = -1/0, gml:pos): Werteformate.

Elemente

Nur die eigenen Elemente von T3DPoint:

Element Typ/Format Pflicht Default Bedeutung
Verankert bool nein False Punkt ist verankert (nicht verschiebbar)
PunktQualitaet enum:TPointQualType praktisch ja pqConst (Init) Punktqualität; da der Init-Wert die Konstruktionsphase bezeichnet, steht das Element an praktisch jedem realen Punkt
VCPktArtTransferActivated bool nein False Punktart-Transfer aktiv
VCPktArtTransferForce bool nein False Punktart-Transfer erzwingen
VCPktArtTransfer Enum-Name aus TAZ_Punktobjekt ODER leer nein cVCPktArtTransferNone (nicht geschrieben) Ziel-Punktart des Transfers. Sonderfall: „Inherited" wird als leeres Element <VCPktArtTransfer /> gespeichert; beim Lesen wird der Name über GetAlkisObjektByName aufgelöst, leer/unbekannt → Inherited. Wertebereich = ALKIS-Punktobjekt-Typen (Teilbereich ZAX_Grenzpunkt … ZSD_Erhebungspunkt der Enum TAZ_AlkisObjekte, Alkis\AlkisTypes.pas:467)
PktNrTextType enum:TPktNrTextType nein TT_INHERITED Art des Punktnummern-Texts; beim Schreiben wird TT_NVNR → TT_NR gewandelt, wenn die Bundesland-Version keine NV/GV-Nummern nutzt (USE_NV_OR_GV aus)
VCPktSiblTransferedConnected enum:TVCPktSiblTransferedConnected nein vcpstc_None Zwillings-Übertragungsstatus
VerwendungsStatus enum:TPktBenutzPart nein pb_None Verwendungsstatus des VC-Punkts; nur geschrieben, wenn der Punkt eine VCPktID hat und der Status ≠ pb_None ist (Feld seit 09/2023 am CAD-Punkt)
Position Container ja — enthält gml:Point/gml:pos; ohne gültige Position bleiben die Koordinaten Fehlwert und der Punkt wird beim nächsten Speichern verworfen
gml:pos X Y [Z] (Floats, leerzeichengetrennt) ja — echte Koordinaten (FCoords, keine Riss-Deltas); Z nur, wenn kein Fehlwert; Fehlwert-Koordinaten werden als Fehlwert-Zahl geschrieben
OriginalCADPos X Y [Z] nein — ursprüngliche CAD-Position vor dem Punktart-Transfer; steht INNERHALB von Position (nach </gml:Point>); nur wenn Transfer aktiv und Original ≠ aktuelle 2D-Koordinate
PointSymbolGUID GUID-Attribut-Element nein — Referenz auf das Haupt-VC_CADPunktsymbol des Punkts
WeitereSymbole Container mit <WeitereSymboleMember GUID="{…}"/> (0..n) nein leer weitere Punktsymbol-Objekte desselben Punkts
RissKoordinaten Container, je Riss <RissEintrag_ID>dX dY dZ</RissEintrag_ID> nein (wird aber immer geschrieben) leer rissabhängige Koordinaten-Deltas zur Standardposition; Eintrag nur, wenn mind. ein Delta ≠ 0/Fehlwert
RissPktNrTextType Container, je Riss <RissEintrag_ID>enum:TPktNrTextType</RissEintrag_ID> nein (wird aber immer geschrieben) leer rissabhängiger PNR-Text-Typ; Eintrag nur ≠ TT_UNDEFINED

Die Punktnummer selbst (VCPktID_NV/VCPktID_NR) steht im VermCadID-Block; eine gültige VC-Punktnummer verlangt NV ≠ UND NR ≠ .

Enum TPointQualType (alle Werte)

Wert Bedeutung
pqExtern externes Objekt: VermCad-Punkt, ALKIS-Punkt, Messgerät
pqCAD als Punkt gezeichnetes CAD-Objekt
pqHelp Nicht-Punkte (z. B. Linienenden, ALKIS-Repräsentanten)
pqOnlyFang reine Fangpunkte
pqConst Konstruktionsphase (Init-Wert — wird nicht geschrieben)
pqTemp temporär

Enum TPktNrTextType (alle Werte)

TT_NONE, TT_NR, TT_NVNR, TT_SPECIAL, TT_INHERITED, TT_UNDEFINED.

Enum TVCPktSiblTransferedConnected (alle Werte)

vcpstc_None, vcpstc_AutoToNP, vcpstc_ToGoDown, vcpstc_ToNotGoDown.

Enum TPktBenutzPart (alle Werte)

pb_None, pb_SollUnused, pb_SollUsed, pb_ChangedKoord, pb_Changed, pb_New, pb_Deleted, pb_DeletedZwilling.

Referenzen

Referenz Ziel Pflicht Verhalten bei fehlendem Ziel
PointSymbolGUID VC_CADPunktsymbol nein weiche Referenz: fehlendes Ziel wird nur geloggt/ignoriert, der Punkt bleibt bestehen
WeitereSymboleMember VC_CADPunktsymbol (0..n) nein weiche Referenz, wie oben

Umgekehrt ist der Punkt selbst Ziel harter Referenzen (Startpunkt/Endpunkt von Linien, Member von Kompos, Text_Referenzobjekt …) — fehlt der Punkt, wird das referenzierende Objekt beim Referenzen-Update zerstört (siehe VermCadID-Block).

Minimalform

<VC_CADPunkt>
  <VermCadID>
    <GUID>{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}</GUID>
    <ObjektArt>oaCAD</ObjektArt>
    <CADObjektArt>cadPunkt</CADObjektArt>
  </VermCadID>
  <Layer>-102</Layer>
  <PunktQualitaet>pqCAD</PunktQualitaet>
  <Position>
    <gml:Point>
      <gml:pos>545123.456 5721456.789</gml:pos>
    </gml:Point>
  </Position>
</VC_CADPunkt>

VermCadID mit GUID, Layer und eine gültige Position sind das Minimum fürs korrekte Laden; Punkte mit Fehlwert-Koordinaten werden beim nächsten Speichern verworfen (siehe Lesemechanik).

Beispiele

Minimalfall (Baden-Württemberg, häufigster Fall — ALKIS-Repräsentant)

<VC_CADPunkt>
  <VermCadID>
    <GUID>{AEFE2E5B-…}</GUID>
    <ObjektArt>oaAlkisCADRepr</ObjektArt>
    <CADObjektArt>cadPunkt</CADObjektArt>
  </VermCadID>
  <Layer>-100780</Layer>
  <PunktQualitaet>pqHelp</PunktQualitaet>
  <Position>
    <gml:Point>
      <gml:pos>32519146.78 5308557.85</gml:pos>
    </gml:Point>
  </Position>
  <PointSymbolGUID GUID="{9AB3B261-…}" />
  <RissKoordinaten />
  <RissPktNrTextType />
</VC_CADPunkt>

Beispiel (Sachsen) — VC-Punkt mit Punktnummer, VerwendungsStatus und WeitereSymbole

<VC_CADPunkt>
  <VermCadID>
    <GUID>{6083B9B4-…}</GUID>
    <ObjektArt>oaVC</ObjektArt>
    <CADObjektArt>cadPunkt</CADObjektArt>
    <VCPktID_NV>10</VCPktID_NV>
    <VCPktID_NR>56</VCPktID_NR>
  </VermCadID>
  <Layer>804</Layer>
  <UseLayerAusSymboldefinition>-1</UseLayerAusSymboldefinition>
  <PunktQualitaet>pqExtern</PunktQualitaet>
  <VerwendungsStatus>pb_SollUnused</VerwendungsStatus>
  <Position>
    <gml:Point>
      <gml:pos>3331817.374 5682842.57</gml:pos>
    </gml:Point>
  </Position>
  <PointSymbolGUID GUID="{4263AD83-…}" />
  <WeitereSymbole>
    <WeitereSymboleMember GUID="{27D026D3-…}" />
  </WeitereSymbole>
  <RissKoordinaten />
  <RissPktNrTextType />
</VC_CADPunkt>

Beispiel (Sachsen) — gefüllte RissKoordinaten (Deltas je Riss)

<VC_CADPunkt>
  <VermCadID>
    <GUID>{A45C4265-…}</GUID>
    <ObjektArt>oaAlkisCADRepr</ObjektArt>
    <CADObjektArt>cadPunkt</CADObjektArt>
  </VermCadID>
  <Layer>-100850</Layer>
  <PunktQualitaet>pqHelp</PunktQualitaet>
  <Position>
    <gml:Point>
      <gml:pos>3332413.7 5683111.729</gml:pos>
    </gml:Point>
  </Position>
  <PointSymbolGUID GUID="{49A895D7-…}" />
  <RissKoordinaten>
    <RissEintrag_0>-0.000279225409030914 0.000412030145525932 0</RissEintrag_0>
  </RissKoordinaten>
  <RissPktNrTextType />
</VC_CADPunkt>

Details zur RissEintrag-Struktur: Rissdaten an Objekten.

Beispiel (Thüringen) — ALKIS-Repräsentant mit AlkisID und leerem VCPktArtTransfer

<VC_CADPunkt>
  <VermCadID>
    <GUID>{XXXXXXXX-…}</GUID>
    <ObjektArt>oaAlkisCADRepr</ObjektArt>
    <CADObjektArt>cadPunkt</CADObjektArt>
  </VermCadID>
  <AlkisID>DETHL53P0000GTXJ</AlkisID>
  <Layer>-100360</Layer>
  <PunktQualitaet>pqExtern</PunktQualitaet>
  <VCPktArtTransfer />
  <Position>
    <gml:Point>
      <gml:pos>2581116.89 5624174.596</gml:pos>
    </gml:Point>
  </Position>
  <PointSymbolGUID GUID="{80A4225D-…}" />
  <RissKoordinaten />
  <RissPktNrTextType />
</VC_CADPunkt>

Verfügbarkeit und Besonderheiten

  • Verfügbar in allen Bundesland-Versionen.
  • PostProcessing: Nach dem Einlesen des Objekts läuft CheckPktQuality(True) und repariert inkonsistente Kombinationen aus Punktqualität und ObjektArt (es gab z. B. Punkte mit gültiger VCPktID, die pqHelp/oaCAD waren). Dieselbe Prüfung läuft auch vor jedem Speichern.
  • UTM-Y-Korrektur: Beim Lesen von gml:pos/OriginalCADPos alter Projekte greift ggf. VKS489YKorrektur (Erkennung UTM-Hochwerte, setzt ggf. Lagestatus 489). Ein leerer pos-String lässt die Koordinaten unverändert.
  • Migrations-Weiche: Unbekannte Reader-IDs und Komplexstrukturen werden an das PointSymbol weitergereicht — in sehr alten Projekten lagen die Symboldaten (SymbolID, Drehwinkel …) direkt am Punkt; solche Tags werden also beim Lesen des Punkts akzeptiert.
  • VCPktID_KSID wird von CAD-Punkten nicht mehr geschrieben; fehlt sie, gilt die KSID des Projekts. In lokalen Systemen kann VCPktID_NV ein beliebiger String sein (z. B. xx) und Koordinaten können klein oder negativ sein.
  • VerwendungsStatus wird erst seit 09/2023 am CAD-Punkt gespeichert — ältere Dateien enthalten es nie.
  • Punkte ohne gültige X/Y-Koordinaten werden beim Speichern übersprungen (Fehlwert-Filter im Manager).

Quellen im Code

  • CAD\GLGeometrics.pas:26063-26262 — T3DPoint.DataToXMLLite (Schreibreihenfolge, Bedingungen)
  • CAD\GLGeometrics.pas:26496-26618 — InternalCreateFromXML (einfache Werte, UTM-Korrektur, Migrations-Weiche)
  • CAD\GLGeometrics.pas:26406-26494 — InternalCreateComplexStructsFromXML (Position, PointSymbolGUID, WeitereSymbole, Rissdaten)
  • CAD\GLGeometrics.pas:26396-26404 — PostProcessing CheckPktQuality(True)
  • CAD\GLGeometrics.pas:26620-26636 — SetVCPktIDFromXML (NV/NR-Pflicht der Punktnummer)
  • CAD\GLGeometrics.pas:21178-21278 — T3DPointRissValueList.DataToXMLLite (RissKoordinaten/RissPktNrTextType)
  • CAD\GLTypes.pas:952-957 — TPointQualType; GLTypes.pas:58, 60-64 — TPktNrTextType, TVCPktSiblTransferedConnected
  • VERMCAD\GlobalTypes.pas:809 — TPktBenutzPart; Alkis\AlkisTypes.pas:467 — TAZ_Punktobjekt
  • CAD\GLConsts.pas:513-583 — Init-Werte (INIT_T3DPOINT_*); VERMCAD\GlobalConsts.pas ca. 4372-5004 — Tag-Konstanten
  • CAD\GLGeometrics.pas:79669-79670 — Fehlwert-Punkte werden nicht gespeichert



[Nach oben]