CAD XML Syntax-Objekt VC_CADBMPunkt
Der Bogenmittenpunkt markiert die Mitte eines Kreisbogens auf dem Bogen. Delphi-Klasse ist T3DBMPoint (CAD\GLGeometrics.pas), gespeichert unter dem XML-Tag VC_CADBMPunkt. Die Klasse erbt vollständig von T3DPoint — Struktur und Elemente sind identisch zu VC_CADPunkt, ergänzt um zwei eigene Bool-Felder.
Strukturregel
<VC_CADBMPunkt>
<VermCadID> … </VermCadID> (siehe VermCadID-Block)
[Basiselemente] (siehe Basiselemente; Layer ist Pflicht)
… alle Elemente von VC_CADPunkt … (PunktQualitaet, Position/gml:pos,
PointSymbolGUID, RissKoordinaten, …)
[<ImmerAufBogen>bool</ImmerAufBogen>] (nur geschrieben, wenn False!)
[<IstEntstandenDurchBearbeitung>bool</IstEntstandenDurchBearbeitung>]
</VC_CADBMPunkt>
Die beiden eigenen Elemente stehen NACH allen geerbten Punkt-Elementen (das inherited-Schreiben läuft zuerst). CADObjektArt ist wie beim normalen Punkt cadPunkt — die Unterscheidung liegt allein im Wurzeltag.
Elemente
Nur die eigenen Elemente von T3DBMPoint (alles andere: VC_CADPunkt):
| Element | Typ/Format | Pflicht | Default | Bedeutung |
|---|---|---|---|---|
ImmerAufBogen |
bool | nein | True | Bogenmittenpunkt bleibt beim Verschieben immer auf dem Bogen. Achtung: Da der Default True ist, wird das Element nur geschrieben, wenn der Wert False ist (<ImmerAufBogen>0</ImmerAufBogen>); ein fehlendes Element bedeutet True.
|
IstEntstandenDurchBearbeitung |
bool | nein | False | Kennzeichen „durch Bearbeitung entstanden" (nur geschrieben, wenn True) |
Referenzen
Der BM-Punkt selbst trägt keine Referenz auf seinen Bogen. Die Zuordnung läuft umgekehrt: Das Bogen-Objekt VC_CADArcLine referenziert den BM-Punkt über sein Element <BogenMittePoint GUID="{…}"/> (und meist zusätzlich BogenZwischenPunkt). Beim Erzeugen gehört zu jedem VC_CADBMPunkt also ein VC_CADArcLine, dessen BogenMittePoint-GUID auf ihn zeigt. Die weichen Symbol-Referenzen (PointSymbolGUID, WeitereSymbole) verhalten sich wie beim VC_CADPunkt.
Minimalform
<VC_CADBMPunkt>
<VermCadID>
<GUID>{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}</GUID>
<ObjektArt>oaCAD</ObjektArt>
<CADObjektArt>cadPunkt</CADObjektArt>
</VermCadID>
<Layer>-102</Layer>
<PunktQualitaet>pqHelp</PunktQualitaet>
<Position>
<gml:Point>
<gml:pos>545123.456 5721456.789</gml:pos>
</gml:Point>
</Position>
</VC_CADBMPunkt>
Beispiele
Beispiel (Baden-Württemberg) — typischer ALKIS-Bogenmittenpunkt
Alle 175 BM-Punkte der BW-Beispieldatei haben exakt diese Form (17 Zeilen, keine eigenen Elemente, da beide Defaults gelten):
<VC_CADBMPunkt>
<VermCadID>
<GUID>{26A2B7A6-…}</GUID>
<ObjektArt>oaAlkisCADRepr</ObjektArt>
<CADObjektArt>cadPunkt</CADObjektArt>
</VermCadID>
<Layer>-100890</Layer>
<PunktQualitaet>pqHelp</PunktQualitaet>
<Position>
<gml:Point>
<gml:pos>32518902.215 5308847.597</gml:pos>
</gml:Point>
</Position>
<PointSymbolGUID GUID="{F4A81545-…}" />
<RissKoordinaten />
<RissPktNrTextType />
</VC_CADBMPunkt>
Der zugehörige Bogen referenziert diesen Punkt: <BogenMittePoint GUID="{26A2B7A6-…}"/> im VC_CADArcLine.
Verfügbarkeit und Besonderheiten
- Verfügbar in allen Bundesland-Versionen; kommt nur in Projekten mit Kreisbögen vor (BW/Sachsen-Beispieldateien: ja, THR-Beispieldatei: keiner).
- Umgekehrte Default-Logik bei
ImmerAufBogen(Init True → nur False wird geschrieben) — in den drei Beispielprojekten kommt keines der beiden eigenen Elemente vor. - PostProcessing, UTM-Y-Korrektur, Fehlwert-Filter beim Speichern: identisch zu VC_CADPunkt.
Quellen im Code
CAD\GLGeometrics.pas:30319-30350—T3DBMPoint.DataToXMLLiteCAD\GLGeometrics.pas:30241-30265—T3DBMPoint.InternalCreateFromXMLCAD\GLConsts.pas—INIT_T3DBMPOINT_IMMERAUFBOGEN = True,INIT_T3DBMPOINT_ISTENTSTANDENDURCHBEARBEITUNG = FalseVERMCAD\GlobalConsts.pas:4566-4567— Tag-Konstantenxn_ImmerAufBogen,xn_IstEntstandenDurchBearbeitungCAD\GLGeometrics.pas:96996-97034— Factory-RegistrierungVC_CADBMPunkt→ T3DBMPoint