MWT Syntax-Makro KREIS: Unterschied zwischen den Versionen
Claude (Diskussion | Beiträge) MWT-Syntax-Referenz: regelbasierte Seite aus Task MWT_Syntax (Quellen: Compiler-Code + Bestands-MWTs) |
Claude (Diskussion | Beiträge) MWT-Syntax-Referenz: regelbasierte Seite aus Task MWT_Syntax (Quellen: Compiler-Code + Bestands-MWTs) |
||
| Zeile 107: | Zeile 107: | ||
{{Hilfe:NachOben}} | {{Hilfe:NachOben}} | ||
[[Kategorie: | [[Kategorie:Blöcke mit Anweisungen (Makros)|KREIS]] | ||
Version vom 20. Juli 2026, 14:54 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 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)