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
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
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-Blöcke mit Anweisungen (Makros)|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]