Documentation Index

Fetch the complete documentation index at: https://kb.moveit.at/llms.txt

Use this file to discover all available pages before exploring further.

Systemfunktionen

Prev Next
This content is currently unavailable in English. You are viewing the default (German) version.

Allgemeine Systemfunktionen

EVAL

Format: sRet = EVAL(sVariablenname)

Zweck: Eruiert den den Inhalt einer Variablen oder eines Frageparameters falls es diesen namentlich gibt.

Diese Funktion kann ineinander geschachtelt werden. Mit ihr kann man auch Formeln auswerten.

Beispiel:

A = "B"

B = "C"

C = "D"

D = 1000

E = 11 : F = 89 : sSumme = "E+F"

Erg1 = EVAL(A) !Erg1 = "C"

Erg2 = EVAL(EVAL(EVAL(A))) !Erg2 = 1000

Erg3 = EVAL("A") !Erg3 = "B"

Erg4 = EVAL(sSumme) !Erg4 = 100

DEFINED

Format: DEFINED [ ( ] Variablename [ ) ]

Zweck: Legt fest, ob die Variable Variablename vorhanden (deklariert) ist.

Bemerkungen: Diese Funktion liefert TRUE oder FALSE abhängig davon ob Variablename existiert.

Beispiel:
IF DEFINED(a) THEN a = 10 ! Kein Laufzeitfehler wenn a nicht vorhanden

DELETE

Format: DELETE Variable

Zweck: Löscht die Variable aus der Variablenliste und gibt den Speicherplatz frei.

Bemerkungen: Dieser Befehl wird verwendet um Zwischenvariablen zu löschen, die für die weitere Verarbeitung uninteressant sind, jedoch das System nur unnötig belasten.

Beispiel:

a = 10:b = 20:c = 30:d = 40

DELETE a : DELETE b

a = c ! OK

d = b ! Fehler! (Variable b wurde gelöscht)

Zeichenkettenfunktionen

LEN

Format: v = LEN(sString)

Zweck: Ermittelt die Anzahl der Zeichen in sString

Bemerkung: sString ist ein Zeichenketten-Ausdruch. Nicht druckbare Zeichen werden auch berücksichtigt.

Beispiel:

sProg = "BASIC PROGRAMM"

1 = LEN(sProg + "123")

MESSAGE 1 !Ausgabe 17

LEFT$

Format: sRet = LEFT$(sString, n)

Zwecks: Übergibt die am weitesten links liegenden n Zeichen der Zeichenkette sString

Bemerkung: sString ist ein Zeichenketten-Ausdruck. n ist die Anzahl der Zeichen, die das Ergebnis enthalten soll.

Ist n größer als LEN (sString), wird sString übergeben. Ist n gleich 0 wird "" übergeben.

Beispiel:

sProg = "BASIC PROGRAMM"

sErg = LEFT$(sProg, 5)

MESSAGE sErg !Ausgabe "Basic"

RIGHT$

Format: sRet = RIGHT$(sString, n)

Zweck: Übergibt die am weitesten rechts liegenden n Zeichen der Zeichenkette sString.

Bemerkung: sRet ist ein Zeichenkette-Ausdruck, also ein String. n ist ein ganzahliger Ausdruck, der die Anzahl der Zeichen angibt,

die im Ergebnis stehen sollen. Ist n größer oder gleich LEN (sString), wird sString übergeben.

Ist n gleich 0 wird eine leere Zeichenkette "" übergeben.

Beispiel:

a = "BASIC PROGRAMM"

b = RIGHT$(a, 8)

MESSAGE b !Ausgabe "PROGRAMM"

MID$

Format: sRet = MID$(sString, n, m)

Zwecks: Übergibt die angeforderten Teil einer gegebenen Zeichenkette sString

Bemerkung: sString ist einer Zeichenketten-Ausdruck.

n ist ein numerischer Ausdruck im Bereich von 1 bis 255

m ist ein numerischer Ausdruck im Bereich von 1 bis 255

Beispiel:

! 1 3 5 7 9

a = "ANOTHER BASIC PROGRAMM"

b = MID$(a, 9, 5)

MESSAGE b !Ausgabe "BASIC"

INSTR

Format: sRet = INSTR(n, sX, sY)

Zweck: Übergibt die Position des ersten Auftretens von sY in sX, beginnend mit Position n.

Bemerkung: n muss ein gültiger numerischer Ausdruck sein. Wird n nicht angegeben, so wird n auf 1 gesetzt.

Wird die Zeichenkette nicht gefunden, wird als Ergebnis Null zurückgegeben.

Wird die Zeichenkette gefunden, wird die Position zurückgegeben.

Beispiel:

a = "12 08 17 45 33 21 09 03 17"

p = INSTR(1, a, "09")

s = "09 an Stelle" + STR$(p) + "gefunden!" !s = 09 an Stelle 19 gefunden!

STRING$

Format: sRet = STRING$(n, m)

sRet = STRING$(n, sX)

Zweck: Übergibt eine zeichenkette der Länge n, deren Zeichen alle aus dem ASCII-Code m oder dem ersten Zeichen von sX bestehen.

Bemerkung: n und m liegen im Bereich 0 bis 255

UCASE$

Format: sRet = UCASE$(sX)

Zweck: Wandelt die Zeichenkette sX in Großbuchstaben um und retourniert diese auf sRet.

Bemerkung: sX ist ein alphanumerischer Ausdruck (String).

Beispiel:

sTitel = "der Titel"

MESSAGE UCASE$(sTitel) !liefert "DER TITEL"

LCASE$

Format: sRet = LCASE$(sX)

Zweck: Wandelt die Zeichenkette sX in Kleinbuchstaben um und retourniert diese auf sRet

Bemerkungen: sX ist ein alphanumerischer Ausdruck (String)

Beispiel:

sTitel = "Der Titel"

MESSAGE LCASE$(sTitel) !Ausgab: der Titel

DATE$

Format: sDate = DATE$

Zweck: Ermittelt das aktuelle Datum und retourniert dieses auf dem String sDate

Bemerkung: Eine Zeichenkette aus zehn Zeichen im Format TT:MM:JJJJ wird zurückgegeben

Beispiel:

sDate = DATE$ !Datum übernehmen

MESSAGE "Heute ist der " + sDate !Ausgabe "Heute ist der 25:04:1994"

TIME$

Format: sTimeStamp = TIME$

Zweck: Ruft die laufende Zeit ab und retourniert diese auf dem String sTimeStamp

Bemerkung: Die laufende Zeit wird als String in der Form HH:MM:SS retourniert, wobei HH die Stunde (00 bis 23),

MM die Minute (00 bis 59) und SS die Sekunde (00 bis 59) darstellen.

Beispiel:

sZeit = TIME$

MESSAGE "aktuelle Zeit: " + sZeit ! Ausgabe "aktuelle Zeit: 12:12:12"

Konvertierungsfunktionen

CNVRT$

Format: sRet = CNVRT$(sFormat, n)

Zweck: Wandelt den numerischen Wert n in einen alphanumerischen Wert um und benutzt dabei die Formatanweisung spezifiziert in sFormat

Bemerkung: n muss ein numerischer Ausdruck, eine numerische Konstante oder eine numerische Variable sein.

Parameter sFormat muss eine Konvertierungsangabe sein.

Beispiel:

Prozensatz = 444 / 1111 * 100

sText = CNVRT$("##,##", Prozensatz) !sText = "39,96"

STR$

Format: sRet = STR$(n)

Zweck: Wandelt den numerischen Wert n in einen String um.

Bemerkungen: n ist ein numerischer Ausdruck. Ist n positiv, enthält die mit STR$ übergebene Zeichenkette eine führende

Leerstelle (die Leerstelle ist für das Plusvorzeichen reserviert). die Funktion VAL ist die Gegenfunktion von

STR$. Die Funktion wird benutzt, wenn numerische Werte in Zeichenketten eingebunden werden sollen.

Beispiel:

hyp = SQRT (5 ^ 2 + 7 ^ 2)

sText = "Ergebnis: " + STR$(ROUND (hyp,3)) !sText = "Ergebnis = 8.602"

VAL

Format:nErg = VAL(sZahl)

Zweck: Versucht den String sZahl als num. Wert zu interpretieren und gibt diesen auf nErg zurück

Bemerkungen: sZahl ist ein Zeichenketten-Ausdruck. Die Funktion VAL entfernt Leerstellen, Tabulatoren und Zeilenvor-schubzeichen

aus der Zeichenkette des Arguments, um das Ergebnis bestimmen zu können.

Beispiel:

sZahl = "123.34" : nErg = VAL(sZahl) !v="123.34"

sZahl = "a123.34" : nErg = VAL(sZahl) !v="0"

CHR$

Format: Zeichen = CHR$(nAsciiC) !Ascii-Zeichen ermitteln

CHR$ (65) entspricht "A"

ASC

Format: nAsciiC = ASC(Zeichen) !Ascii-Code ermitteln

ASC ("?") entspricht 63

DEG

Format: erg = DEG(Zahl) !Wandelt Radianten in Grad um

DEG (PI/4) entspricht 45° Grad

RAD

Format: erg = RAD(Zahl) !Wandelt Grade in Radianten um

RAD (90) entspricht 3.14159... (PI)

Mathematische Funktionen

ABS

Format: erg = ABS(Zahl) !Liefert den Absolutbetrag von Zahl (Betragsfunktion!)

erg = ABS(-10.5) !erg = 10.5

SGN

Format: erg = SGN(x) !Liefert das Vorzeichen des Ausdruckes x (Signumfunktion)

erg = SGN(5-10) !erg = -1 da x<0; liefert 0 bei x=0 und 1 falls x > 0

MAX

Format: v = MAX ( x, y [ , z ... ] )

Zweck: Übergibt den Maximalwert der angegebenen Variablen

Beispiel:

DIMBr(4)

Br(01)= 120:Br(02) = 140: Br(03)= 112: Br(04) = 170

m = MAX(Br(1), Br(2), Br(3), Br(4))

s = "Der höchste Wert ist "+ STR$(m) !s="Der höchste Wert ist 140"

MIN

Format: v = MIN( x, y [ , z ... ] )

Zweck: Übergibt den Minimalwert der angegebenen Variablen.

Beispiel:

Breite = 1400: Hoehe = 2800

myMin = MIN(Breite,Hoehe) !myMin = 1400

SQR

Format: erg = SQR(Zahl) !Quadrat des Wertes

erg = SQR(8) !8² = 8*8 = 64

SQRT

Format: erg = SQRT(Zahl) !Quadratwurzel berechnen

erg = (64) ^(1/3) !Dritte Wurzel -> liefert 4

^

Format: erg = (16) ^ 2 ! = 256, Hochoperator -> bitte Basis immer in Klammer setzen

EXP

Format: erg = EXP( x )!Errechnet die Exponentialfunktion von x, wenn x=1 -> exp(x) = E

LN

Format:erg = LN(Zahl) !liefert den Logarithmus naturalis von zahl

LOG

Format:erg = LOG (Zahl) !liefert den Logarithmus zur Basis 10

PI

Die Kreiszahl PI = 3,14159…

E

Die Eulersche Zahl E = 2,71828…

INT

Format:erg = INT (2.7) !Liefert den ganzzahligen Wert -> hier die 2

ROUND

Format:erg = ROUND (2.7 [,n]) !Rundet kaufmännisch auf, in diesem Fall 3 !n steht für die Anzahl der Nachkommstellen

MOD

Format:erg = 14 MOD 5 !Eruiere ganzzahligen Rest -> hier 4!

Winkelfunktionen

Alle Winkelfunktionen benötigen im Argument den Winkel in Radianten

SIN

Format:erg = SIN (n) !message sin(90 * PI / 180) liefert 1

COS

Format: erg = COS (n)

TAN

Format:erg = TAN (n)

ASIN

Format: winkelInRad = ASIN (n) !Arcus Sinus

ACOS

Format:winkelInRad = ACOS (n) !Arcus Cosinus

ATN

Format:winkelInRad = ATN (n) !Arcus Tangens

2D-Gradfunktionen

SPLIT

Format: StreckenzugListe = SPLIT(Profil, Gerade)

Zweck: Ein Profil kann z.b. in zwei Teile geschnitten werden. Die Variable Gerade spezifiziert die Strecke, wie z.b. gerade = SEGMENT([100,0],[100,100]).

Kann das Profil geteilt werden so enthält StreckenzugListe zwei Teile die wiederum vom Typ Liste sind.

Andere Beispiele:

EXTRUDE

Format: Profil = EXTRUDE(ProfilAlt, lstAbstaende)

Profil = EXTRUDE(ProfilAlt, nAbstand)

Zweck: Ein Profil kann vergrößert bzw. verkleinert werden. Dies kann über verschiedene Abstände oder überall gleich mit einem Abstand realisiert werden.

(lstAbstaende.NUM muß gleich ProfilAlt.NUM sein!)

Beispiel:

Profil mit 4 Streckenzügen und 2 Bögen vor und nach negativem EXTRUDE!

S1 = SEGMENT(P1, P2)

S2 = SEGMENT(P2, P3)

K3 = ARCFROMSTRINGH(P3,P4,100)

lstP={S1,S2,K3,S4,K5,S6}

lstA={-10,-5,-5,-5,-5,-5}

lstN=EXTRUDE(lstP, lstA}

DISTANCE

Format: Vd = DISTANCE(V, AB)

Zweck: Ermittelt den geringsten Abstand zwischen einem Punkt und einer Geraden.

Beispiel:

A = [3,0]

B = [7,4]

AB = SEGMENT(A,B)

P = POINT(3,4)

d = DISTANCE(P, AB) !von P aus mit [-2,2] auf AB

P_AB = SEGMENT(P, P+d) !Vektoraddition

MESSAGE P_AB.MOD !Wurzel aus 8 = 2.828...

INTERSECTION

Format: lstPunkte = INTERSECTION(gerade1/bogen, gerade2/bogen)

lstPunkte = INTERSECTION(gerade1/bogen, gerade2/bogen, UNRESTRICTED)

Zweck: Ermittelt die Schnittpunkte zwischen einer/einem Geraden/Kreisbogen und einer/einem anderen Geraden/Kreisbogen.

Das Ergebnis kann eine leere Liste sein, oder Liste mit einem oder zwei Schnittpunkten (Kreisbogen mit Gerade).

Die Option UNRESTRICTED verlängert beide Geraden ins Unendliche – somit wird garantiert wenn die Geraden nicht parallel sind, das immer ein Schnittpunkt gefunden wird.

Beispiel:

g1 = SEGMENT([0,0],[1,1])

g2 = SEGMENT([1,0],[0,1])

lstP = INTERSECTION(g1, g2) !lstP = {[0.5,0.5]}

ADJUST

Format: ErgPolyline = ADJUST( Liste )

Zweck: Die Funktion ADJUST erstellt eine Polyline aus einer Liste geometrischer Objekte.

Bemerkungen: ErgPolyline ist eine Polyline, die von ADJUST erstellt wird.

Liste ist eine Liste geometrischer Objekte, zB: Strecken und Kreisbögen, die keinen geschlossenen Verlauf bilden.

Falls Liste bereits eine Polyline ist, passiert nichts weiter: Die Polyline wird unverändert in ErgPolyline zurückgegeben.

Beispiel:

S1 = SEGMENT([1,2],[6,2]) ! 1. OBJEKT: STRECKE

S2 = SEGMENT([7,2],[8.5,9.5]) ! 2. OBJEKT: STRECKE

K3 = ARC([6,7],[8,7],PI/3) ! 3. OBJEKT: KREISBOGEN

S4 = SEGMENT([6,9],[4,9]) ! 4. OBJEKT: STRECKE

S5 = ARC([4,7],[4,9],PI) ! 5. OBJEKT: KREISBOGEN

S6 = SEGMENT([2,7],[3,2]) ! 6. OBJEKT: STRECKE

LST = {S1, S2, K3, S4, K5, S6} ! LISTE IST NICHT ZUSAMMENHÄNGEND

PL = ADJUST(LST) ! VERBINDEN DER LISTE

INSIDE

Format: bRet = INSIDE(Punkt, lstProfil)

Zweck: Die Funktion INSIDE prüft, ob ein Punkt innerhalb oder außerhalb von lstProfil liegt

Bemerkungen: bRet hat den Wert 1 wenn der Punkt innerhalb oder auf der Polyline lstProfil liegt, sonst 0!

Punkt vom Typ VECTOR wird überprüft.

lstProfil ist eine geschlossene Polyline (beliebige Strecken und Kreisbögen).

Beispiel:

!Polyline zusammenstellen

S1 = SEGMENT([2,1], [13.5,0.5])

K2 = ARC([13.5,5.5], [13.5,0.5], -PI/2)

K3 = ARC([10,2.5], [8.5,5.5], PI/2)

K4 = ARC([9.5,3.5], [7,1], -PI/2)

K5 = ARC([7,3], [7,6], PI/2)

K6 = ARC([2,3], [4,3], -PI/2)

!Sicherstellen, daß die Polyline geschlossen ist

PL = ADJUST ({S1, K2, K3, K4, K5, K6})

!Einige beliebige Punkte definieren

V1 = [5,2]: V2 = [11,5] :V3 = [8,5]

!SP wird als Schnittpunkt erzeugt

V4 = [5.97,3.5]

S2 = SEGMENT([3,4],[5,4])

SP = INTERSECT(S2, K5) !SP ist eine Liste

!Die einzelnen Punkte prüfen

Erg1 = INSIDE(V1, PL) !V1 liegt innerhalb, Erg1 = 1

Erg2 = INSIDE(V2, PL) !V2 liegt außerhalb, Erg1 = 0

Erg3 = INSIDE(V3, PL) !V3 liegt innerhalb, Erg1 = 1

!SP[1] liegt genau auf PL, Erg1 = 1

Erg4 = INSIDE(SP[1], PL) !Wert von SP[1]= [4.17157, 4]

!Ein Punkt ganz knapp neben SP[1] liegt außerhalb, Erg1 = 0

Erg5 = INSIDE([4.17157, 4.0001], PL)

ROTATE

Format: ergObj = ROTATE(obj, drehwinkel)

Zweck: Dreht ein Objekt um einen bestimmten Winkel. Das Zentrum ist [0,0]

Bemerkungen: obj kann ein Objekt vom Typ VECTOR, SEGMENT, ARC oder Polyline (Profil) sein drehwinkel ist ein Winkel im Bogenmaß.

Bei einem DrehWinkel von 2 * PI (360 °) wird das Objekt ergObj wieder auf das Objekt obj abgebildet

Beispiel:

A = [3,1]

B = [2,5]

AB = SEGMENT(A, B)

AB2 = ROTATE(AB, PI/2) !AB2 hat die Punkte [-1,3] und [-5,2]

!tan alpha = H / B

p1 = [3,4] : p2 = [4, 3]

p3 = ROTATE(p1, -(ATN(4/3)-ATN(3/4)))

SCALE

Format: erg = SCALE(obj, faktor)

Zweck: Skaliert einen Vektor oder einen Streckenzug um einen Faktor

Beispiel:

seg1 = SEGMENT([0,0],[3,4]) !seg1.mod = 5

seg2 = SCALE(seg1, 2) !seg2.mod = 10