Zum Inhalt springen

CAD XML Syntax-Objekt VC_CADKlotoideLine und VC_CAD_Klothoide

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)

Klotoiden (Übergangsbögen mit linear veränderlicher Krümmung, z. B. aus Trassierungsdaten) gibt es in VermCad in ZWEI Klassen: die ältere T2DKlotoideLine (XML-Tag VC_CADKlotoideLine) und die seit 07/2017 neue T2DKlothoide (XML-Tag VC_CAD_Klothoide — Achtung: Unterstrich nach „CAD" und Schreibweise mit „th"). Beide erben von T2DStartEndPunktLine (CAD\GLGeometrics.pas) und brauchen damit Start- und Endpunkt-Referenzen; sie unterscheiden sich in der Parametrisierung der Kurve.

Strukturregel

<VC_CADKlotoideLine>                             (ältere Klasse)
  <VermCadID> … </VermCadID>                     (siehe VermCadID-Block; CADObjektArt=cadLinie)
  [Basiselemente]                                (siehe Basiselemente; Layer ist Pflicht)
  [geerbte Linien-Elemente]                      (siehe VC_CADSimpleLine)
  <Startpunkt GUID="guid"/>                      (Pflicht)
  <Endpunkt GUID="guid"/>                        (Pflicht)
  [<CuE_CurveLen>zahl</CuE_CurveLen>]
  [<CuE_A>zahl</CuE_A>]
  [<CuE_D>ganzzahl</CuE_D>]
  [<CuE_Klotoidenwinkel>zahl</CuE_Klotoidenwinkel>]
  [<CuE_KR>ganzzahl</CuE_KR>]
</VC_CADKlotoideLine>

<VC_CAD_Klothoide>                               (neue Klasse, seit 07/2017)
  <VermCadID> … </VermCadID>
  [Basiselemente]
  [geerbte Linien-Elemente]
  <Startpunkt GUID="guid"/>                      (Pflicht)
  <Endpunkt GUID="guid"/>                        (Pflicht)
  [<CurveLen>zahl</CurveLen>]
  [<StartLen>zahl</StartLen>]
  [<KlotParameter>zahl</KlotParameter>]
  [<KlotWinkel>zahl</KlotWinkel>]
  [<KlotCentre>zahl zahl</KlotCentre>]
  [<Kruemmung>enum:TUmlaufSinn</Kruemmung>]
</VC_CAD_Klothoide>

Geerbte Elemente: VermCadID-Block, Basiselemente und die Linien-Elemente der Zwischenklassen auf VC_CADSimpleLine; Werteformate: Werteformate.

Elemente

VC_CADKlotoideLine (T2DKlotoideLine)

Element Typ/Format Pflicht Default (Init) Bedeutung
CuE_CurveLen Float nein Fehlwert (nicht geschrieben) Bogenlänge der Klotoide
CuE_A Float nein Fehlwert Klotoidenparameter A
CuE_D Integer (geschrieben über die Float-Routine; ganzzahlige Werte ergeben normale Ganzzahl-Strings) nein 1 D-Wert; beim Lesen mit TryStrToInt — nur ganzzahlige Strings werden übernommen
CuE_Klotoidenwinkel Float nein Fehlwert Klotoidenwinkel
CuE_KR Integer nein 1 Krümmungsrichtung (Integer-kodiert); Lesen mit TryStrToInt

VC_CAD_Klothoide (T2DKlothoide)

Element Typ/Format Pflicht Default (Init) Bedeutung
CurveLen Float nein Fehlwert (nicht geschrieben) Bogenlänge
StartLen Float nein Fehlwert Startlänge (Bogenlänge vom Klotoidenursprung bis zum Startpunkt)
KlotParameter Float nein Fehlwert Klotoidenparameter A
KlotWinkel Float nein Fehlwert Winkel
KlotCentre Pos-String 2D (X Y) nein Init-Punkt (nicht geschrieben) Zentrum/Ursprung der Klotoide als Koordinate
Kruemmung enum:TUmlaufSinn nein usEgal (nicht geschrieben) Krümmungsrichtung als Enum

Enum TUmlaufSinn (alle Werte)

usEgal, usImUhrzeigersinn, usGegenUhrzeigersinn (VERMCAD\GlobalTypes.pas:885).

Unterschiede der beiden Klassen

  • VC_CADKlotoideLine parametrisiert die Kurve rein über Zahlenwerte (A, D, Winkel, KR als Integer) ohne Zentrumskoordinate.
  • VC_CAD_Klothoide modelliert zusätzlich die Startlänge (StartLen — die Kurve kann mitten in der Klotoide beginnen), das explizite Zentrum KlotCentre und die Krümmungsrichtung als sprechenden Enum-Wert statt Integer.
  • Beide Klassen existieren parallel; die neue Klasse ersetzt die alte nicht beim Laden (kein Migrationsmechanismus zwischen den Tags).

Referenzen

Für beide Klassen gilt: Startpunkt- und Endpunkt-GUID sind Pflicht (Referenzen auf VC_CADPunkt); fehlt eine GUID oder ist das Ziel nach dem LastTry des Referenzen-Updates nicht auffindbar, wird das Objekt mit Logeintrag „Objekt wird nicht eingelesen" zerstört (Details auf VC_CADSimpleLine).

Minimalform

<VC_CADKlotoideLine>
  <VermCadID>
    <GUID>{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}</GUID>
    <ObjektArt>oaCAD</ObjektArt>
    <CADObjektArt>cadLinie</CADObjektArt>
  </VermCadID>
  <Layer>-102</Layer>
  <Startpunkt GUID="{XXXX…}" />
  <Endpunkt GUID="{XXXX…}" />
</VC_CADKlotoideLine>

Gleiches Muster für VC_CAD_Klothoide. Ohne die Kurvenparameter ist das Objekt zwar ladbar, aber geometrisch unbestimmt — beim Erzeugen sollten die Parameter der jeweiligen Klasse mitgegeben werden.

Beispiele

In keinem der drei Beispielprojekte (BW, Sachsen, Thüringen) kommt eines der beiden Tags vor. Die folgenden Beispiele sind daher konstruiert (nach den Schreibregeln des Codes, nicht aus Bestandsdaten):

Konstruiertes Beispiel VC_CADKlotoideLine

<VC_CADKlotoideLine>
  <VermCadID>
    <GUID>{11111111-…}</GUID>
    <ObjektArt>oaCAD</ObjektArt>
    <CADObjektArt>cadLinie</CADObjektArt>
  </VermCadID>
  <Layer>-102</Layer>
  <Startpunkt GUID="{22222222-…}" />
  <Endpunkt GUID="{33333333-…}" />
  <CuE_CurveLen>85.43</CuE_CurveLen>
  <CuE_A>120</CuE_A>
  <CuE_D>2</CuE_D>
  <CuE_Klotoidenwinkel>0.2966</CuE_Klotoidenwinkel>
  <CuE_KR>-1</CuE_KR>
</VC_CADKlotoideLine>

Konstruiertes Beispiel VC_CAD_Klothoide

<VC_CAD_Klothoide>
  <VermCadID>
    <GUID>{44444444-…}</GUID>
    <ObjektArt>oaCAD</ObjektArt>
    <CADObjektArt>cadLinie</CADObjektArt>
  </VermCadID>
  <Layer>-102</Layer>
  <Startpunkt GUID="{55555555-…}" />
  <Endpunkt GUID="{66666666-…}" />
  <CurveLen>85.43</CurveLen>
  <StartLen>12.5</StartLen>
  <KlotParameter>120</KlotParameter>
  <KlotWinkel>0.2966</KlotWinkel>
  <KlotCentre>545100.25 5721350.8</KlotCentre>
  <Kruemmung>usImUhrzeigersinn</Kruemmung>
</VC_CAD_Klothoide>

Verfügbarkeit und Besonderheiten

  • Beide Klassen sind in allen Bundesland-Versionen verfügbar (Factory-Einträge ohne IFDEF), aber in den drei Beispielprojekten nicht belegt — Klotoiden sind ein Sonderfall (Trassierung/LandXML-Import).
  • Legacy-Migration Kruemmung (nur VC_CAD_Klothoide): sehr alte Dateien enthalten die Werte kr_Unknown/kr_ClockWise/kr_CounterClockWise (alte Enum TKruemmungsRichtung); sie werden beim Lesen auf usEgal/usImUhrzeigersinn/usGegenUhrzeigersinn migriert (Konsolidierung 03/2018).
  • Die Tag-Konstanten StartRadius/EndRadius existieren in GlobalConsts.pas, haben aber keine Reader-ID und werden nicht geschrieben — ungenutzt, beim Erzeugen nicht verwenden.
  • CuE_D/CuE_KR werden über die Float-Schreibroutine ausgegeben, aber mit TryStrToInt gelesen — beim Erzeugen nur ganzzahlige Werte schreiben (Dezimalstrings würden beim Lesen stillschweigend verworfen).
  • Die genaue fachliche Semantik von CuE_D und CuE_KR (Kodierung der Krümmungsrichtung) ist im Code nicht kommentiert — konservativ die vom Programm geschriebenen Werte übernehmen.

Quellen im Code

  • CAD\GLGeometrics.pas:2218-2251 — Klassendeklaration T2DKlotoideLine
  • CAD\GLGeometrics.pas:2253-2289 — Klassendeklaration T2DKlothoide („(CP) 25.07.2017 - neue Klothoiden-Klasse")
  • CAD\GLGeometrics.pas:43131-43181 — T2DKlotoideLine.DataToXMLLite; Lesen 43093-43128 (TryStrToInt für CuE_D/CuE_KR)
  • CAD\GLGeometrics.pas:43631-43690 — T2DKlothoide.DataToXMLLite; Lesen 43583-43628 (inkl. kr_*-Migration 43609-43619)
  • CAD\GLGeometrics.pas:96996-97034 — Factory-Registrierung beider Wurzeltags
  • VERMCAD\GlobalTypes.pas:885 — Enum TUmlaufSinn
  • CAD\GLConsts.pas:513-583 — Init-Werte (INIT_T2DKLOTOIDELINE_*, INIT_T2DKLOTHOIDE_*)
  • VERMCAD\GlobalConsts.pas:4634-4635 — ungenutzte Konstanten StartRadius/EndRadius



[Nach oben]