CAD XML Syntax-Objekt VC_CADArcLine
Der Kreisbogen zwischen einem Start- und einem Endpunkt. Delphi-Klasse ist T2DArcLine (CAD\GLGeometrics.pas), abgeleitet von T2DStartEndPunktLine, gespeichert unter dem XML-Tag VC_CADArcLine. Die Bogengeometrie wird über das Verhältnis RatioDistRad und das Flag Spiegeln definiert; der Bogenmittenpunkt ist ein eigenes Objekt VC_CADBMPunkt, auf das per GUID referenziert wird.
Strukturregel
<VC_CADArcLine>
<VermCadID> … </VermCadID> (siehe VermCadID-Block; CADObjektArt=cadLinie)
[Basiselemente] (siehe Basiselemente; Layer ist Pflicht;
darunter ggf. AlkisInitialDataErrors)
[geerbte Linien-Elemente] (siehe VC_CADSimpleLine)
<Startpunkt GUID="guid"/> (Pflicht)
<Endpunkt GUID="guid"/> (Pflicht)
<RatioDistRad>zahl</RatioDistRad> (wird immer geschrieben)
[<BogenMittePoint GUID="guid"/>]
[<BogenMittePointCoords>zahl zahl</BogenMittePointCoords>]
[<BogenZwischenPunkt GUID="guid"/>]
<Spiegeln>bool</Spiegeln> (wird immer geschrieben)
[<AlkisInitialBMCoords>zahl zahl</AlkisInitialBMCoords>]
[<AlkisInitialSPCoords>zahl zahl</AlkisInitialSPCoords>]
[<AlkisInitialEPCoords>zahl zahl</AlkisInitialEPCoords>]
[<AlkisInitialMPCoords>zahl zahl</AlkisInitialMPCoords>]
</VC_CADArcLine>
Geerbte Elemente: VermCadID-Block, Basiselemente und die Linien-Elemente der Zwischenklassen auf VC_CADSimpleLine; Koordinaten-Strings („X Y" mit Dezimalpunkt): Werteformate.
Elemente
Nur die eigenen Elemente von T2DArcLine:
| Element | Typ/Format | Pflicht | Default | Bedeutung |
|---|---|---|---|---|
RatioDistRad |
Float | ja (wird immer geschrieben, kein Init-Check) | — | Verhältnis Abstand(Startpunkt, Endpunkt) zu Radius; definiert die Bogenkrümmung. Beim Setzen im Programm auf den Bereich [−2, +2] begrenzt (Bogendurchmesser darf nicht kleiner als der Punktabstand sein); das Vorzeichen entspricht dem Radius-Vorzeichen (Bogenseite) |
BogenMittePoint |
GUID-Attribut-Element | nein (empfohlen) | — | Referenz auf den Bogenmittenpunkt VC_CADBMPunkt |
BogenMittePointCoords |
Pos-String 2D (X Y) |
nein | Init-Punkt (nicht geschrieben) | Koordinaten der Bogenmitte (redundant zum BM-Punkt gespeichert) |
BogenZwischenPunkt |
GUID-Attribut-Element | nein | — | Zwischenpunkt auf dem Bogen (Referenz auf einen VC_CADPunkt) |
Spiegeln |
bool | ja (wird immer geschrieben) | False | Bogen gespiegelt (Seite des Bogens relativ zur Sehne) |
AlkisInitialBMCoords |
Pos-String 2D | nein | Init-Punkt | initiale ALKIS-Koordinaten der Bogenmitte (seit 03/2021, korrekte Fassung; kein write-Schalter — wird geschrieben, sobald belegt) |
AlkisInitialSPCoords |
Pos-String 2D | nein | Init-Punkt | initiale ALKIS-Koordinaten des Startpunkts |
AlkisInitialEPCoords |
Pos-String 2D | nein | Init-Punkt | initiale ALKIS-Koordinaten des Endpunkts |
AlkisInitialMPCoords |
Pos-String 2D | nein | Init-Punkt | initiale ALKIS-Koordinaten des Kreismittelpunkts |
Referenzen
| Referenz | Ziel | Pflicht | Verhalten bei fehlendem Ziel |
|---|---|---|---|
Startpunkt / Endpunkt |
VC_CADPunkt | ja | harte Referenz: Objekt wird nach dem LastTry zerstört („Objekt wird nicht eingelesen", siehe VC_CADSimpleLine) |
BogenMittePoint |
VC_CADBMPunkt | nein | weiche Referenz (seit 08.01.2025): beim LastTry wird der Bogen auch ohne gefundenen Bogenmittenpunkt eingelesen (nur Warnung im Log). Zeigt die GUID auf einen normalen VC_CADPunkt statt eines BM-Punkts, wird dieser beim Referenzen-Update automatisch in einen VC_CADBMPunkt umgewandelt (Migration alter Beta-Dateien)
|
BogenZwischenPunkt |
VC_CADPunkt | nein | weiche Referenz: fehlendes Ziel wird nur geloggt, der Bogen bleibt bestehen („Objekt wird dennoch eingelesen") |
Zusammenspiel mit VC_CADBMPunkt: Die Zuordnung Bogen ↔ Bogenmittenpunkt wird ausschließlich HIER (am Bogen) gespeichert; beim Auflösen setzt der Bogen am BM-Punkt dessen ParentArcLine.
Minimalform
<VC_CADArcLine>
<VermCadID>
<GUID>{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}</GUID>
<ObjektArt>oaCAD</ObjektArt>
<CADObjektArt>cadLinie</CADObjektArt>
</VermCadID>
<Layer>-102</Layer>
<Startpunkt GUID="{XXXX…}" />
<Endpunkt GUID="{XXXX…}" />
<RatioDistRad>1.0</RatioDistRad>
<Spiegeln>0</Spiegeln>
</VC_CADArcLine>
Ohne BogenMittePoint/BogenMittePointCoords ist der Bogen ladbar; sinnvoll ist mindestens BogenMittePointCoords oder die Referenz auf einen VC_CADBMPunkt.
Beispiele
Echtes Beispiel (BW) — ALKIS-Bogen mit BM-Punkt-Referenz und AlkisInitial-Feldern
<VC_CADArcLine>
<VermCadID>
<GUID>{7EF4E8B8-…}</GUID>
<ObjektArt>oaAlkisCADRepr</ObjektArt>
<CADObjektArt>cadLinie</CADObjektArt>
</VermCadID>
<Layer>-100890</Layer>
<LayerErben>-1</LayerErben>
<AlkisInitialDataErrors>
<AlkisInitialDataError ErrorType="aideBogenMitte">
<Diff>0 -0.001</Diff>
</AlkisInitialDataError>
</AlkisInitialDataErrors>
<Startpunkt GUID="{93B4DE7D-…}" />
<Endpunkt GUID="{4C33136D-…}" />
<RatioDistRad>-1.11830822656901</RatioDistRad>
<BogenMittePoint GUID="{2CC14BB5-…}" />
<BogenMittePointCoords>32518700.95 5308973.874</BogenMittePointCoords>
<BogenZwischenPunkt GUID="{2CC14BB5-…}" />
<Spiegeln>0</Spiegeln>
<AlkisInitialBMCoords>32518700.95 5308973.874</AlkisInitialBMCoords>
<AlkisInitialSPCoords>32518702.12 5308969.35</AlkisInitialSPCoords>
<AlkisInitialEPCoords>32518702.51 5308978.28</AlkisInitialEPCoords>
<AlkisInitialMPCoords>32518708.9353029 5308973.52587143</AlkisInitialMPCoords>
</VC_CADArcLine>
AlkisInitialDataErrors ist ein Basiselement; der einzige in den Beispielprojekten beobachtete ErrorType ist aideBogenMitte. Die Minimalform in den Bestandsdaten kommt ohne den Fehlerblock und ohne BogenMittePoint-Referenz aus (dann nur BogenMittePointCoords + BogenZwischenPunkt).
Verfügbarkeit und Besonderheiten
- Verfügbar in allen Bundesland-Versionen (Factory-Eintrag ohne IFDEF).
- Belegt in den Beispielprojekten: BW 282, Sachsen 583, Thüringen 0 Exemplare.
- Legacy-Aliase (werden nur gelesen, nie geschrieben):
AlkisInitialBogenMitte→ gleiche Reader-ID wieBogenMittePoint;AlkisInitialBogenMitteCoords→ gleiche Reader-ID wieBogenMittePointCoords(alte, falsch benannte Fassung dieser Felder). - Die
AlkisInitial*Coords-Felder werden nur bei aus ALKIS stammenden Bögen belegt (Vergleichsbasis für die FehlerprüfungAlkisInitialDataErrors). - Das Tag
EllipseAnzeigetypist historisch bedingt auch im Kontext des ArcLine registriert; der aktuelle Lesecode vonT2DArcLinewertet es nicht aus (es wird still ignoriert). RatioDistRadundSpiegelnwerden ohne Default-Vergleich immer geschrieben — beim Erzeugen ebenfalls immer angeben.
Quellen im Code
CAD\GLGeometrics.pas:2058-2216— KlassendeklarationT2DArcLine(FRatioDistRad= „Verhaeltnis zw. Abstand(SP, EP) und Radius")CAD\GLGeometrics.pas:39654-39776—DataToXMLLite(Schreibreihenfolge, RatioDistRad/Spiegeln immer)CAD\GLGeometrics.pas:39583-39621—InternalCreateFromXML(einfache Werte)CAD\GLGeometrics.pas:39552-39581—InternalCreateComplexStructsFromXML(BogenMittePoint-/BogenZwischenPunkt-GUID)CAD\GLGeometrics.pas:42833-42930—SetReferencesAndUpdate(weiche BM-Referenz, LastTry-Verhalten, T3DPoint→T3DBMPoint-Migration)CAD\GLGeometrics.pas:42614-42649—CalcRatioDistRad/Setter (Begrenzung auf [−2, +2])VERMCAD\GlobalConsts.pasca. 4372-5004 — Tag-Konstanten inkl. Legacy-Aliase (Reader-RegistrierungGLGeometrics.pas:96817, 96964)