Zum Inhalt springen

KREIS

Aus VermCAD Hilfe Wiki

Das Rechenmakro KREIS berechnet einen Kreis aus Zwangspunkten, Radius und bis zu zwei Tangenten. Berechnet werden können der Kreismittelpunkt und die Berührungspunkte an den Tangenten; ein zusätzlich angegebener Radius dient bei eindeutig definiertem Kreis als Kontrolle (Vergleich mit dem errechneten Radius).

Syntaxregel

KREIS [, KOORDINATENSYSTEM <n> | , LS <n>] [, <Kopf-Parameter>]*
  [ <NV> <NR> { , <NV> <NR> }* ; ]     (Satz 1: 1-3 Zwangspunkte des Kreises)
  [ R = <w> ; ]                        (Satz 2: Radius)
  [ <PBS-Mittelpunkt> ; ]              (Satz 3: Punktidentifikation Kreismittelpunkt)
  [ <Tangente1> ;                      (Satz 4: Liniendefinition Tangente 1)
    [ Verschiebesatz ; ]               (Satz 5: P/V/S-Verschiebung Tangente 1)
    [ <PBS-Beruehrungspunkt1> ; ]      (Satz 6: Berührungspunkt an Tangente 1)
    [ <Tangente2> ;                    (Satz 7: Liniendefinition Tangente 2)
      [ Verschiebesatz ; ]             (Satz 8: P/V/S-Verschiebung Tangente 2)
      [ <PBS-Beruehrungspunkt2> ; ]    (Satz 9: Berührungspunkt an Tangente 2)
    ]
  ]
END
Regelelement Bedeutung
Satz 1 + R = Kreisdefinition nach Bogen- und Liniendefinition: drei Punkte, zwei Punkte + Radius oder Mittelpunkt + Radius. Zusätzlich erlaubt das KREIS-Makro als einzige Variante auch nur einen Radius ohne Punkt (dann muss der Block direkt mit R = w; beginnen; der Kreis wird über zwei Tangenten festgelegt).
<Tangente1/2> Liniendefinition (2 oder mehr Punkte, kommagetrennt) nach Bogen- und Liniendefinition; je Tangente wahlweise ein Verschiebesatz P/V/S.
<PBS-…> vollständige Punktidentifikation für den berechneten Kreismittelpunkt bzw. den Berührungspunkt der jeweiligen Tangente (jeweils wahlweise).

Parameter

Allgemeine Kopf-Parameter (NR =, DATUM =, ZEIT =, PNR =, KN =, REM =, NE, DEA) siehe Blockkopf-Parameter. Makrospezifisch:

Parameter Syntax Pflicht Bedeutung Bundesland
KOORDINATENSYSTEM / LS , KOORDINATENSYSTEM <n> bzw. , LS <n> nein Berechnung in anderem Koordinatensystem/Lagestatus alle
ZP , ZP = <w> nein zulässige Punktabweichung alle
NETZ , NETZ nein berechnete Punkte fürs Netz bereitstellen alle

Datenzeilen

Die Sätze sind positionsgebunden; der Compiler erkennt die Sonderfälle automatisch:

  • Beginnt der Block direkt mit R = w;, wird Satz 1 (Zwangspunkte) übersprungen ("Radius und kein Punkt" — nur mit zwei Tangenten sinnvoll).
  • Enthält der Satz an Position 3 bzw. 6 ein Komma, wird er nicht als Mittelpunkts- bzw. Berührungspunkt-PBS, sondern bereits als Tangenten-Liniendefinition interpretiert (Mittelpunkt-/Berührungspunkt-PBS sind wahlweise).
  • Die Fallunterscheidungen der Berechnung:
    • Keine Tangente: Standarddefinition eines Kreisbogens (bis 3 Punkte + Radius).
    • Eine Tangente: ein Punkt = Mittelpunkt (berechnet werden Radius und Berührungspunkt); zwei Punkte, davon einer auf der Tangente = Kreis auf der Seite des außerhalb liegenden Punktes; zwei Punkte außerhalb = Kreis durch beide Punkte, Mittelpunkt rechts der orientierten Geraden P1→P2.
    • Zwei Tangenten: ein Zwangspunkt oder ein Radius legt den Kreis fest.
      • Nur mit Radius (kein Punkt): der Kreis wird in den Sektor gelegt, den die beiden orientierten Tangenten in Richtung ihres Schnittpunktes einschließen.
      • Mit einem Zwangspunkt, der auf keiner der Tangenten liegt: man bildet den Lotfußpunkt des Punktes auf die erste Tangente und die orientierte Gerade von diesem Lotfußpunkt zum Zwangspunkt; berechnet wird der Kreis, dessen Berührungspunkt auf der ersten Tangente am weitesten rechts liegt.
      • Mit einem Zwangspunkt, der auf einer der beiden Tangenten liegt: der Kreis wird in Richtung der anderen Tangente ermittelt.
  • Ist der Kreis bereits eindeutig definiert und zusätzlich ein Radius angegeben, erfolgt ein Vergleich mit dem berechneten Radius (Kontrolle).

Die folgenden Skizzen veranschaulichen die Konstruktionsfälle mit Tangenten:

Beispiele

Beispiel (Sachsen, echt — drei Punkte, Mittelpunkt als Hilfspunkt)

KREIS, NR = 23,

  DATUM = 15.11.2018,
  ZEIT = 10:56:38,
  PNR = 2,
  REM = 'Hilfspunkt Radius'

  xx          BA,
  xx          bm,
  xx          BE;

  xx  x   R6000a  x  H  ;      { berechneter Kreismittelpunkt (Hilfspunkt) }
END

Die binären Codierungszeilen ergänzt VermCad automatisch.

Beispiel (allgemein, aus der Alt-Dokumentation — zwei Tangenten und Radius)

KREIS, NR = 4
  R = 12.540;                 { Radius, kein Zwangspunkt }
  xx  x    711  x;            { Kreismittelpunkt         }

  xx     3017,
  xx     3012; S = 7.50;      { Tangente 1, um 7.50 m nach rechts verschoben }
  xx  x    712  x;            { Berührungspunkt 1        }

  xx     3024,
  xx     3021;                { Tangente 2               }
  xx  x    713  x;            { Berührungspunkt 2        }
END

Verfügbarkeit und Besonderheiten

  • Verfügbar in allen Bundesland-Versionen; in echten Projekten v. a. in Sachsen und Baden-Württemberg beobachtet.
  • Der Radiussatz wird nur als solcher erkannt, wenn er mit R = beginnt (sonst Deutung als Nummerierungsverbund).
  • Verschiebesätze der Tangenten (P/V/S =) sind nur an den Satzpositionen 5 und 8 zulässig.
  • Für einen einzelnen Bogen mit Neupunkten darauf siehe BOGENPUNKTE bzw. BOGENELEMENTE.

Siehe auch

Entwicklerhinweise

Diese Angaben richten sich an Entwickler bzw. eine KI mit Zugriff auf den VermCad-Quellcode; für die reine Nutzung der MWT-Syntax sind sie nicht nötig. Unit-Namen und besonders Zeilennummern können sich durch die laufende Weiterentwicklung verschieben - sie dienen als Einstieg, nicht als exakte Fundstelle.

Quellen im Code:

  • VERMCAD\VcEditorUtils.pas:2078 — Keyword-Zuordnung ID[kKreis] := kwKreis
  • VERMCAD\VCSCHMWT.PAS:5721-5723 — Ausnahme: erster Satz bereits Radius (R = als Satz 1)
  • VERMCAD\VCSCHMWT.PAS:5742, 5772 — Radiussatz an Position 2; Verschiebesätze an Position 5 und 8
  • VERMCAD\VCSCHMWT.PAS:5785-5787 — Ausnahme: Komma an Position 3/6 ⇒ Tangenten-Liniendefinition statt Punkt-PBS
  • VERMCAD\VCSCHMWT.PAS:6215 — Punkt-PBS an den Positionen 3, 6, 9
  • VERMCAD\VCDCHMWT.PAS:2719-2731 — Satzzuordnung 1-9 (InsertCircle, SetRadius, InsertMittelpunkt, InsertCurve, SetTangenteExt, InsertTangentenpunkt)
  • VERMCAD\VCCALC.PAS:456-505 — TKreis (Berechnungsfälle, Berührungspunkte)



[Nach oben]