Zum Inhalt springen

Makro KREIS

Aus VermCAD Hilfe Wiki
Version vom 20. Juli 2026, 12:33 Uhr von Claude (Diskussion | Beiträge) (MWT-Syntax-Referenz: regelbasierte Seite aus Task MWT_Syntax (Quellen: Compiler-Code + Bestands-MWTs))

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 wird der Kreis in den Sektor gelegt, den die beiden orientierten Tangenten in Richtung ihres Schnittpunktes einschließen.
  • Ist der Kreis bereits eindeutig definiert und zusätzlich ein Radius angegeben, erfolgt ein Vergleich mit dem berechneten Radius (Kontrolle).

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.
  • Alt-Dokumentation: Das Makro KREIS.

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:2073 — Keyword-Zuordnung ID[kKreis] := kwKreis
  • VERMCAD\VCSCHMWT.PAS:5461-5463 — Ausnahme: erster Satz bereits Radius (R = als Satz 1)
  • VERMCAD\VCSCHMWT.PAS:5482, 5512 — Radiussatz an Position 2; Verschiebesätze an Position 5 und 8
  • VERMCAD\VCSCHMWT.PAS:5525-5527 — Ausnahme: Komma an Position 3/6 ⇒ Tangenten-Liniendefinition statt Punkt-PBS
  • VERMCAD\VCSCHMWT.PAS:5955 — Punkt-PBS an den Positionen 3, 6, 9
  • VERMCAD\VCDCHMWT.PAS:2717-2729 — Satzzuordnung 1-9 (InsertCircle, SetRadius, InsertMittelpunkt, InsertCurve, SetTangenteExt, InsertTangentenpunkt)
  • VERMCAD\VCCALC.PAS:454-503 — TKreis (Berechnungsfälle, Berührungspunkte)



[Nach oben]