MWT Syntax-Makro KREIS: Unterschied zwischen den Versionen
Claude (Diskussion | Beiträge) Alt-Klassik-Doku eingemischt: Mehrwert/Grafiken/Siehe-auch (Task MWT_Syntax) |
Claude (Diskussion | Beiträge) Entwicklerhinweise: Zeilennummern an den Code vom 18.09.2026 angeglichen |
||
| Zeile 113: | Zeile 113: | ||
'''Quellen im Code:''' | '''Quellen im Code:''' | ||
* VERMCAD\VcEditorUtils.pas: | * VERMCAD\VcEditorUtils.pas:2078 — Keyword-Zuordnung <code>ID[kKreis] := kwKreis</code> | ||
* VERMCAD\VCSCHMWT.PAS: | * VERMCAD\VCSCHMWT.PAS:5721-5723 — Ausnahme: erster Satz bereits Radius (<code>R =</code> als Satz 1) | ||
* VERMCAD\VCSCHMWT.PAS: | * VERMCAD\VCSCHMWT.PAS:5742, 5772 — Radiussatz an Position 2; Verschiebesätze an Position 5 und 8 | ||
* VERMCAD\VCSCHMWT.PAS: | * VERMCAD\VCSCHMWT.PAS:5785-5787 — Ausnahme: Komma an Position 3/6 ⇒ Tangenten-Liniendefinition statt Punkt-PBS | ||
* VERMCAD\VCSCHMWT.PAS: | * VERMCAD\VCSCHMWT.PAS:6215 — Punkt-PBS an den Positionen 3, 6, 9 | ||
* VERMCAD\VCDCHMWT.PAS: | * 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: | * VERMCAD\VCCALC.PAS:456-505 — <code>TKreis</code> (Berechnungsfälle, Berührungspunkte) | ||
{{Hilfe:NachOben}} | {{Hilfe:NachOben}} | ||
[[Kategorie: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:
-
Eine Tangente, ein Punkt = Mittelpunkt: Radius und Berührungspunkt werden berechnet
-
Eine Tangente, zwei Punkte (einer auf der Tangente): Kreis auf der Seite des außerhalb liegenden Punktes
-
Eine Tangente, zwei Punkte außerhalb: Mittelpunkt rechts der orientierten Geraden P1→P2
-
Zwei Tangenten, Zwangspunkt auf keiner Tangente: Berührungspunkt am weitesten rechts auf der ersten Tangente
-
Zwei Tangenten, Zwangspunkt auf einer Tangente: Kreis in Richtung der anderen Tangente
-
Zwei Tangenten, nur Radius: Kreis im Sektor der beiden Tangenten in Richtung ihres Schnittpunktes
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)