Zum Inhalt springen

MWT Syntax-Makro KREIS: Unterschied zwischen den Versionen

Aus VermCAD Hilfe Wiki
MWT-Syntax-Referenz: regelbasierte Seite aus Task MWT_Syntax (Quellen: Compiler-Code + Bestands-MWTs)
Entwicklerhinweise: Zeilennummern an den Code vom 18.09.2026 angeglichen
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{DISPLAYTITLE:Makro KREIS}}
{{DISPLAYTITLE:KREIS}}
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).
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).


Zeile 49: Zeile 49:
** '''Keine Tangente''': Standarddefinition eines Kreisbogens (bis 3 Punkte + Radius).
** '''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.
** '''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.
** '''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).
* 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:
<gallery widths="220" heights="170">
File:MWT Makros KREIS Tangente EinPunkt.PNG|Eine Tangente, ein Punkt = Mittelpunkt: Radius und Berührungspunkt werden berechnet
File:MWT Makros KREIS Tangente ZweiPunkte.PNG|Eine Tangente, zwei Punkte (einer auf der Tangente): Kreis auf der Seite des außerhalb liegenden Punktes
File:MWT Makros KREIS Tangente ZweiPunkteAusserhalb.PNG|Eine Tangente, zwei Punkte außerhalb: Mittelpunkt rechts der orientierten Geraden P1→P2
File:MWT Makros KREIS ZweiTangenten EinPunktAufKeinerTangente.PNG|Zwei Tangenten, Zwangspunkt auf keiner Tangente: Berührungspunkt am weitesten rechts auf der ersten Tangente
File:MWT Makros KREIS ZweiTangenten EinPunktAufEinerTangente.PNG|Zwei Tangenten, Zwangspunkt auf einer Tangente: Kreis in Richtung der anderen Tangente
File:MWT Makros KREIS Radius.PNG|Zwei Tangenten, nur Radius: Kreis im Sektor der beiden Tangenten in Richtung ihres Schnittpunktes
</gallery>


== Beispiele ==
== Beispiele ==
Zeile 92: Zeile 105:
* Verschiebesätze der Tangenten (<code>P</code>/<code>V</code>/<code>S =</code>) sind nur an den Satzpositionen 5 und 8 zulässig.
* Verschiebesätze der Tangenten (<code>P</code>/<code>V</code>/<code>S =</code>) sind nur an den Satzpositionen 5 und 8 zulässig.
* Für einen einzelnen Bogen mit Neupunkten darauf siehe [[MWT Syntax-Makro BOGENPUNKTE|BOGENPUNKTE]] bzw. [[MWT Syntax-Makro BOGENELEMENTE|BOGENELEMENTE]].
* Für einen einzelnen Bogen mit Neupunkten darauf siehe [[MWT Syntax-Makro BOGENPUNKTE|BOGENPUNKTE]] bzw. [[MWT Syntax-Makro BOGENELEMENTE|BOGENELEMENTE]].
* Alt-Dokumentation: [[MWT-Blöcke mit Anweisungen (Makros)-Das Makro KREIS|Das Makro KREIS]].
 
== Siehe auch ==
* [[Rechnen Menü-Das Dialogfenster Kreis|Das Dialogfenster Kreis]]


== Entwicklerhinweise ==
== Entwicklerhinweise ==
Zeile 98: Zeile 113:


'''Quellen im Code:'''
'''Quellen im Code:'''
* VERMCAD\VcEditorUtils.pas:2073 — Keyword-Zuordnung <code>ID[kKreis] := kwKreis</code>
* VERMCAD\VcEditorUtils.pas:2078 — Keyword-Zuordnung <code>ID[kKreis] := kwKreis</code>
* VERMCAD\VCSCHMWT.PAS:5461-5463 — Ausnahme: erster Satz bereits Radius (<code>R =</code> als Satz 1)
* VERMCAD\VCSCHMWT.PAS:5721-5723 — Ausnahme: erster Satz bereits Radius (<code>R =</code> als Satz 1)
* VERMCAD\VCSCHMWT.PAS:5482, 5512 — Radiussatz an Position 2; Verschiebesätze an Position 5 und 8
* VERMCAD\VCSCHMWT.PAS:5742, 5772 — 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:5785-5787 — Ausnahme: Komma an Position 3/6 ⇒ Tangenten-Liniendefinition statt Punkt-PBS
* VERMCAD\VCSCHMWT.PAS:5955 — Punkt-PBS an den Positionen 3, 6, 9
* VERMCAD\VCSCHMWT.PAS:6215 — Punkt-PBS an den Positionen 3, 6, 9
* VERMCAD\VCDCHMWT.PAS:2717-2729 — Satzzuordnung 1-9 (<code>InsertCircle</code>, <code>SetRadius</code>, <code>InsertMittelpunkt</code>, <code>InsertCurve</code>, <code>SetTangenteExt</code>, <code>InsertTangentenpunkt</code>)
* VERMCAD\VCDCHMWT.PAS:2719-2731 — Satzzuordnung 1-9 (<code>InsertCircle</code>, <code>SetRadius</code>, <code>InsertMittelpunkt</code>, <code>InsertCurve</code>, <code>SetTangenteExt</code>, <code>InsertTangentenpunkt</code>)
* VERMCAD\VCCALC.PAS:454-503 — <code>TKreis</code> (Berechnungsfälle, Berührungspunkte)
* VERMCAD\VCCALC.PAS:456-505 — <code>TKreis</code> (Berechnungsfälle, Berührungspunkte)


{{Hilfe:NachOben}}
{{Hilfe:NachOben}}
[[Kategorie:MWT Syntax|Makro KREIS]]
[[Kategorie:Blöcke mit Anweisungen (Makros)|KREIS]]

Aktuelle Version vom 18. September 2026, 10:38 Uhr

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]