Zum Inhalt springen

MWT Syntax-Makro KREISGERADESCHNITT: Unterschied zwischen den Versionen

Aus VermCAD Hilfe Wiki
MWT-Syntax-Referenz: regelbasierte Seite aus Task MWT_Syntax (Quellen: Compiler-Code + Bestands-MWTs)
 
MWT-Syntax-Referenz: regelbasierte Seite aus Task MWT_Syntax (Quellen: Compiler-Code + Bestands-MWTs)
Markierung: Zurückgesetzt
Zeile 64: Zeile 64:
* Es wird immer der '''Austrittspunkt''' berechnet — soll der Eintrittspunkt bestimmt werden, ist die Gerade umgekehrt zu orientieren (Punkte tauschen).
* Es wird immer der '''Austrittspunkt''' berechnet — soll der Eintrittspunkt bestimmt werden, ist die Gerade umgekehrt zu orientieren (Punkte tauschen).
* Der Schnittpunkt erhält eine Bedingungskoordinate.
* Der Schnittpunkt erhält eine Bedingungskoordinate.
* '''Fehlerquelle „Kein Schnitt. Radius zu klein.“:''' Ein Schnittpunkt existiert nur, wenn der Abstand der (ggf. per <code>P</code>/<code>V</code>/<code>S =</code> verschobenen) Geraden vom Kreismittelpunkt '''kleiner''' als der Radius ist. Ist der Abstand größer als der Radius, verfehlt die Gerade den Kreis und der Compiler bricht mit dieser Meldung ab (Basistext „Kein Schnitt“, Fehler 106). Auch der exakte Tangentenfall (Abstand = Radius) liefert rechnerisch keinen Schnittpunkt, da die Prüfung <code>R² − d² > 0</code> strikt ist. Abhilfe: Kreisdefinition (Radius/Mittelpunkt) und Geradendefinition bzw. Verschiebesatz kontrollieren.
* Alt-Dokumentation: [[MWT-Blöcke mit Anweisungen (Makros)-Das Makro KREISGERADESCHNITT|Das Makro KREISGERADESCHNITT]].
* Alt-Dokumentation: [[MWT-Blöcke mit Anweisungen (Makros)-Das Makro KREISGERADESCHNITT|Das Makro KREISGERADESCHNITT]].


Zeile 73: Zeile 74:
* VERMCAD\VCDCHMWT.PAS:2775-2783 — Satzzuordnung: 1 = Kreis, 2 = Radius, 3 = Gerade, 4 = Verschiebung, 5 = Schnittpunkt
* VERMCAD\VCDCHMWT.PAS:2775-2783 — Satzzuordnung: 1 = Kreis, 2 = Radius, 3 = Gerade, 4 = Verschiebung, 5 = Schnittpunkt
* VERMCAD\VCCALC.PAS:7862-7874 — <code>TSchnitt.SetRadius</code> / <code>InsertSchnittpunkt</code>
* VERMCAD\VCCALC.PAS:7862-7874 — <code>TSchnitt.SetRadius</code> / <code>InsertSchnittpunkt</code>
* VERMCAD\ANALYTIC.PAS:919-936 — <code>KreisGeradeSchnitt</code>: Ergebnis nur bei <code>R² − d² &gt; 0</code> (d = Abstand Gerade–Mittelpunkt), sonst Fehlwert
* VERMCAD\VCCALC.PAS:8331-8345 — <code>TKreisGeradeSchnitt.CalculateItem</code>: bei Fehlwert <code>CalcStatus := caNotIntersection</code>
* VERMCAD\VCCALCBA.PAS:2488, VcCompileErrorMessages.pas:146 — Statustext „Kein Schnitt“ (Fehler 106)


{{Hilfe:NachOben}}
{{Hilfe:NachOben}}
[[Kategorie:MWT Syntax]]
[[Kategorie:MWT Syntax]]

Version vom 17. Juli 2026, 18:40 Uhr

Das Rechenmakro KREISGERADESCHNITT berechnet den Schnittpunkt eines Kreises mit einer Geraden. Ermittelt wird der Austrittspunkt der Geraden — derjenige Schnittpunkt, der sich vom Lotfußpunkt des Kreismittelpunktes aus in positiver Richtung der Geraden befindet. Der Schnittpunkt erhält die berechnete Koordinate als Bedingungskoordinate.

Syntaxregel

KREISGERADESCHNITT [, KOORDINATENSYSTEM <n> | , LS <n>] [, <Kopf-Parameter>]*
  <Kreis-Punkte> ;                                   (Satz 1: 1-3 Punkte der Kreisdefinition)
  [ R = <w> ; ]                                      (Satz 2, wahlweise: Radius)
  <Gerade> ;                                         (Satz 3: Geradendefinition OHNE Maße)
  [ {P <NV> <NR> | V <NV> <NR> | S = <w>} {, ...} ; ]  (Satz 4, wahlweise: Verschiebung der Geraden)
  <PBS-Schnittpunkt> ;                               (Satz 5: Punktidentifikation des Schnittpunktes)
END
Regelelement Bedeutung
<Kreis-Punkte> + R = Kreisbogendefinition nach Bogen- und Liniendefinition: drei Punkte, zwei Punkte + Radius oder Mittelpunkt + Radius. Der Radius steht als eigener Satz R = w;.
<Gerade> Geradendefinition (zwei oder mehr kommagetrennte Punkte); Anlege-/Endmaße sind nicht erlaubt.
P / V / S wahlweiser Verschiebesatz der Geraden: P NV NR Parallele durch Punkt, V NV NR Senkrechte durch Punkt, S = w seitliche Verschiebung (positiv = rechts).
<PBS-Schnittpunkt> Punktidentifikation des Schnittpunktes (Austrittspunkt).

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 Ergebnis fürs Netz bereitstellen alle

Datenzeilen

  • Satz 1: Punkte der Kreisdefinition, kommagetrennt (NV NR). Bei nur einem Punkt ist dieser der Mittelpunkt (dann Radius Pflicht).
  • Satz 2 (wahlweise): R = w; — Radius; negativer Radius = Bogen entgegen dem Uhrzeigersinn. Ist der Kreis durch drei Punkte bereits bestimmt, dient ein zusätzlicher Radius dem Vergleich (Überbestimmung).
  • Satz 3: Geradendefinition, ohne Maße; die Orientierung (1. → 2. Punkt) legt die positive Richtung und damit den Austrittspunkt fest.
  • Satz 4 (wahlweise): Verschiebesatz P/V/S = für die Gerade.
  • Satz 5: Punktidentifikation des Schnittpunktes; VMA und Flags wahlweise.

Beispiele

Beispiel (allgemein, aus der Alt-Dokumentation)

KREISGERADESCHNITT, NR = 1
  xx     3008; R = 10.14;       { Definition des Kreises: Mittelpunkt + Radius }

  xx     3001,
  xx     3000;  P  xx  3023;    { Definition der Gerade (ohne Maße), parallel durch Punkt 3023 }

  xx  x  3062  x;               { Schnittpunkt }

END

Die binären Codierungszeilen ergänzt VermCad automatisch.

Verfügbarkeit und Besonderheiten

  • Verfügbar in allen Bundesland-Versionen; in echten Projekten v. a. in Sachsen, Baden-Württemberg, Thüringen, Sachsen-Anhalt, Brandenburg und Berlin beobachtet.
  • Es wird immer der Austrittspunkt berechnet — soll der Eintrittspunkt bestimmt werden, ist die Gerade umgekehrt zu orientieren (Punkte tauschen).
  • Der Schnittpunkt erhält eine Bedingungskoordinate.
  • Fehlerquelle „Kein Schnitt. Radius zu klein.“: Ein Schnittpunkt existiert nur, wenn der Abstand der (ggf. per P/V/S = verschobenen) Geraden vom Kreismittelpunkt kleiner als der Radius ist. Ist der Abstand größer als der Radius, verfehlt die Gerade den Kreis und der Compiler bricht mit dieser Meldung ab (Basistext „Kein Schnitt“, Fehler 106). Auch der exakte Tangentenfall (Abstand = Radius) liefert rechnerisch keinen Schnittpunkt, da die Prüfung R² − d² > 0 strikt ist. Abhilfe: Kreisdefinition (Radius/Mittelpunkt) und Geradendefinition bzw. Verschiebesatz kontrollieren.
  • Alt-Dokumentation: Das Makro KREISGERADESCHNITT.

Quellen im Code

  • VERMCAD\VcEditorUtils.pas:2078 — Keyword-Zuordnung ID[kKreisGeradeSchnitt] := kwKreisGeradeSchnitt
  • VERMCAD\VCSCHMWT.PAS:5486 — Radius-Satz nur als Satz 2 (RadiusInput)
  • VERMCAD\VCSCHMWT.PAS:5510 — Verschiebesatz der Geraden nur als Satz 4 (LineExtInput)
  • VERMCAD\VCSCHMWT.PAS:5957-5960 — ab Satz 5 Punktidentifikation des Schnittpunktes
  • VERMCAD\VCDCHMWT.PAS:2775-2783 — Satzzuordnung: 1 = Kreis, 2 = Radius, 3 = Gerade, 4 = Verschiebung, 5 = Schnittpunkt
  • VERMCAD\VCCALC.PAS:7862-7874 — TSchnitt.SetRadius / InsertSchnittpunkt
  • VERMCAD\ANALYTIC.PAS:919-936 — KreisGeradeSchnitt: Ergebnis nur bei R² − d² > 0 (d = Abstand Gerade–Mittelpunkt), sonst Fehlwert
  • VERMCAD\VCCALC.PAS:8331-8345 — TKreisGeradeSchnitt.CalculateItem: bei Fehlwert CalcStatus := caNotIntersection
  • VERMCAD\VCCALCBA.PAS:2488, VcCompileErrorMessages.pas:146 — Statustext „Kein Schnitt“ (Fehler 106)



[Nach oben]