Zum Inhalt springen

CAD XML Syntax-Objekt VC_CADCircleLine und VC_CADEllipseLine

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)

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_CADCircleLine nur Sachsen (4 Exemplare); VC_CADEllipseLine Sachsen 445, Thüringen 2, BW 0.
  • Legacy-Alias Radius1 (nur Lesen, nur Ellipse): T2DEllipseLine war früher direkt von T2DLine abgeleitet und hatte einen eigenen ersten Radius unter dem Tag Radius1; alte Projekte werden über diesen WORKAROUND weiterhin korrekt gelesen. Geschrieben wird der erste Radius heute immer als Radius.
  • Radius, EllipseAnzeigetyp, Radius2 und WinkelR1 werden ohne Default-Vergleich immer geschrieben — beim Erzeugen ebenfalls immer angeben.
  • WinkelR1 ist ein Winkel im Bogenmaß (Radiant), kein Gon-/Grad-Wert.
  • In den Beispielprojekten kommt EllipseAnzeigetyp ausschließlich mit cevtBoth vor.

Quellen im Code

  • CAD\GLGeometrics.pas:2291, 2394 — Klassendeklarationen T2DCircleLine (erbt von T2DLine), T2DEllipseLine
  • CAD\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 — Enum TCADEllipseViewType



[Nach oben]