CAD XML Syntax-Objekt VC_CADCircleLine und VC_CADEllipseLine
Vollkreis und Ellipse als Linienobjekte. Delphi-Klassen sind T2DCircleLine (XML-Tag VC_CADCircleLine) und die davon abgeleitete T2DEllipseLine (XML-Tag VC_CADEllipseLine), beide in CAD\GLGeometrics.pas. Beide erben direkt von der abstrakten T2DLine — sie haben keinen Start-/Endpunkt, sondern einen referenzierten Mittelpunkt.
VC_CADCircleLine (Kreis)
Strukturregel
<VC_CADCircleLine> <VermCadID> … </VermCadID> (siehe VermCadID-Block; CADObjektArt=cadLinie) [Basiselemente] (siehe Basiselemente; Layer ist Pflicht) [<RichtungInvertiert>bool</RichtungInvertiert>] (T2DLine, siehe VC_CADSimpleLine) [<VerbundIdentischerLinien>bool</VerbundIdentischerLinien>] (T2DLine) <Mittelpunkt GUID="guid"/> (Pflicht) <Radius>zahl</Radius> (wird immer geschrieben) </VC_CADCircleLine>
Die Elemente Startpunkt/Endpunkt/LaengeGemessen/Verlaengerung… der Klasse T2DStartEndPunktLine kommen hier NICHT vor (andere Vererbungslinie). Geerbte Elemente: VermCadID-Block, Basiselemente, die beiden T2DLine-Elemente auf VC_CADSimpleLine; Werteformate: Werteformate.
Elemente
| Element | Typ/Format | Pflicht | Default | Bedeutung |
|---|---|---|---|---|
Mittelpunkt |
GUID-Attribut-Element | ja | — | Referenz auf den Kreismittelpunkt (VC_CADPunkt) |
Radius |
Float | ja (wird immer geschrieben) | — | Kreisradius in Metern |
VC_CADEllipseLine (Ellipse)
Strukturregel
<VC_CADEllipseLine> <VermCadID> … </VermCadID> (siehe VermCadID-Block; CADObjektArt=cadLinie) [Basiselemente] [<RichtungInvertiert>bool</RichtungInvertiert>] [<VerbundIdentischerLinien>bool</VerbundIdentischerLinien>] <Mittelpunkt GUID="guid"/> (geerbt von T2DCircleLine — Pflicht) <Radius>zahl</Radius> (geerbt — erster Radius „Radius1") <EllipseAnzeigetyp>enum:TCADEllipseViewType</EllipseAnzeigetyp> (wird immer geschrieben) <Radius2>zahl</Radius2> (wird immer geschrieben) <WinkelR1>zahl</WinkelR1> (wird immer geschrieben) </VC_CADEllipseLine>
Elemente
Zusätzlich zu den geerbten Kreis-Elementen:
| Element | Typ/Format | Pflicht | Default | Bedeutung |
|---|---|---|---|---|
EllipseAnzeigetyp |
enum:TCADEllipseViewType | ja (wird immer geschrieben) | — | Darstellungsart der Ellipse |
Radius2 |
Float | ja (wird immer geschrieben) | — | zweiter Halbachsen-Radius |
WinkelR1 |
Float | ja (wird immer geschrieben) | — | Winkel der Radius1-Achse (Radiant) |
Der erste Radius wird im geerbten Element Radius gespeichert; beim LESEN wird zusätzlich das Legacy-Tag Radius1 akzeptiert (siehe Besonderheiten).
Enum TCADEllipseViewType (alle Werte)
| Wert | Bedeutung |
|---|---|
cevtEllipse |
nur die Ellipse zeichnen |
cevtAxis |
nur die Achsen zeichnen |
cevtBoth |
Ellipse und Achsen zeichnen (real einziger beobachteter Wert) |
Referenzen
| Referenz | Ziel | Pflicht | Verhalten bei fehlendem Ziel |
|---|---|---|---|
Mittelpunkt |
VC_CADPunkt | ja | harte Referenz: fehlt die GUID oder ist das Ziel nach dem LastTry des Referenzen-Updates nicht auffindbar, wird das Objekt mit Logeintrag „Objekt wird nicht eingelesen" zerstört (gilt für Kreis UND Ellipse) |
Minimalform
Kreis:
<VC_CADCircleLine>
<VermCadID>
<GUID>{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}</GUID>
<ObjektArt>oaCAD</ObjektArt>
<CADObjektArt>cadLinie</CADObjektArt>
</VermCadID>
<Layer>-102</Layer>
<Mittelpunkt GUID="{XXXX…}" />
<Radius>5.0</Radius>
</VC_CADCircleLine>
Ellipse zusätzlich mit EllipseAnzeigetyp, Radius2 und WinkelR1 vor dem schließenden Tag. Die Mittelpunkt-GUID muss auf einen existierenden VC_CADPunkt zeigen — sonst wird das Objekt nach dem LastTry zerstört.
Beispiele
Echtes Beispiel Kreis (Sachsen)
<VC_CADCircleLine>
<VermCadID>
<GUID>{3988174E-…}</GUID>
<ObjektArt>oaCAD</ObjektArt>
<CADObjektArt>cadLinie</CADObjektArt>
</VermCadID>
<Farbe>2147483644</Farbe>
<Alpha>2147483644</Alpha>
<VCBerLayerID>-5703</VCBerLayerID>
<Layer>-5703</Layer>
<LayerErben>-1</LayerErben>
<Linienstaerke>2147483644</Linienstaerke>
<Liniensymbol>2147483644</Liniensymbol>
<Linienmuster>2147483644</Linienmuster>
<LineCloseType>2147483644</LineCloseType>
<Mittelpunkt GUID="{B1A6B6F4-…}" />
<Radius>6.99942951886962</Radius>
</VC_CADCircleLine>
Echtes Beispiel Ellipse (Sachsen)
<VC_CADEllipseLine>
<VermCadID>
<GUID>{B2B147DB-…}</GUID>
<ObjektArt>oaCAD</ObjektArt>
<CADObjektArt>cadLinie</CADObjektArt>
</VermCadID>
<Sichtbar>0</Sichtbar>
<Farbe>2147483644</Farbe>
<Alpha>2147483644</Alpha>
<VCBerLayerID>-6200</VCBerLayerID>
<Layer>-6200</Layer>
<Linienstaerke>2147483644</Linienstaerke>
<Liniensymbol>2147483644</Liniensymbol>
<Linienmuster>2147483644</Linienmuster>
<LineCloseType>2147483644</LineCloseType>
<Mittelpunkt GUID="{0900FCF6-…}" />
<Radius>0.76489509741409</Radius>
<EllipseAnzeigetyp>cevtBoth</EllipseAnzeigetyp>
<Radius2>0.493921285145275</Radius2>
<WinkelR1>1.2172768749572</WinkelR1>
</VC_CADEllipseLine>
Die Thüringen-Variante ist identisch, nur ohne Sichtbar/VCBerLayerID.
Verfügbarkeit und Besonderheiten
- Beide Klassen sind in allen Bundesland-Versionen verfügbar (Factory-Einträge ohne IFDEF). Belegt in den Beispielprojekten:
VC_CADCircleLinenur Sachsen (4 Exemplare);VC_CADEllipseLineSachsen 445, Thüringen 2, BW 0. - Legacy-Alias
Radius1(nur Lesen, nur Ellipse):T2DEllipseLinewar früher direkt vonT2DLineabgeleitet und hatte einen eigenen ersten Radius unter dem TagRadius1; alte Projekte werden über diesen WORKAROUND weiterhin korrekt gelesen. Geschrieben wird der erste Radius heute immer alsRadius. Radius,EllipseAnzeigetyp,Radius2undWinkelR1werden ohne Default-Vergleich immer geschrieben — beim Erzeugen ebenfalls immer angeben.WinkelR1ist ein Winkel im Bogenmaß (Radiant), kein Gon-/Grad-Wert.- In den Beispielprojekten kommt
EllipseAnzeigetypausschließlich mitcevtBothvor.
Quellen im Code
CAD\GLGeometrics.pas:2291, 2394— KlassendeklarationenT2DCircleLine(erbt vonT2DLine),T2DEllipseLineCAD\GLGeometrics.pas:44310-44352—T2DCircleLine.DataToXMLLite(Mittelpunkt, Radius immer)CAD\GLGeometrics.pas:44286-44308—T2DCircleLine.InternalCreateFromXML(Radius)CAD\GLGeometrics.pas:45831-45880—T2DCircleLine.SetReferencesAndUpdate(Mittelpunkt-Pflicht, „Objekt wird nicht eingelesen")CAD\GLGeometrics.pas:46179-46216—T2DEllipseLine.DataToXMLLite(EllipseAnzeigetyp, Radius2, WinkelR1 immer)CAD\GLGeometrics.pas:46144-46176—T2DEllipseLine.InternalCreateFromXML(inkl. Radius1-WORKAROUND, Zeilen 46160-46162)CAD\GLTypes.pas:1010— EnumTCADEllipseViewType