Constraint-editor

Syntaxis van constraintexpressies

De syntaxis van constraintexpressies is een subset van de syntaxis van LN Tools. Constraintexpressies kunt u opbouwen met de volgende basisinstructies:

Rekenkundige operatoren:

  • * (vermenigvuldigen)
  • / (delen)
  • + (optellen)
  • - (aftrekken)
  • \ (rest na delen)
  • & (alfanumerieke arrays koppelen)

Logische operators:

  • of
  • en
  • niet

Relationele operators:

  • = (gelijk aan)
  • > (groter dan)
  • >= (groter is dan of gelijk is aan)
  • <> (ongelijk aan)
  • < (kleiner dan)
  • <= (kleiner dan of gelijk aan)

Domeinexpressies

A is {a1,a2,a3-a4,..} betekent: (A=a1 or A=a2 or A >= a3 and A <= a4 enzovoort).

De syntaxis van de domeinexpressie is een verkorte notatie voor logische expressies met betrekking tot het domein van een variabele.

Prioriteit in expressies

Rekenkundige operators hebben een hogere prioriteit dan relationele operators.

Relationele operators hebben een hogere prioriteit dan logische operators.

De prioriteitsvolgorde voor rekenkundige operators: * / \ + -

De prioriteitsvolgorde voor logische operators: NOT, AND, OR

Met ronde haakjes ('()') kunt u een bepaalde prioriteitsvolgorde voor rekenkundige en logische operators afdwingen.

Voorbeeld

3 + 4 * 5 = 23

(3 + 4) * 5 = 35

Booleaanse expressies

Booleaanse expressies hebben als waarde 'waar' of 'niet waar' (1 of 0). In constraints kunt u dit mechanisme toepassen, vooral in conditionele expressies.

Voorbeeld

'if not e then' betekent:

Als e = niet waar dan

of Als e = 0 dan'

If-then-else constructies

In constraints kunt u gebruikmaken van uitgebreide if-then-else constructies. Ook geneste constructies zijn toegestaan.

Een if-then-else constructie moet u ALTIJD afsluiten met een endif-statement. Het else-statement is niet verplicht. If-, else- en endif-statements staan altijd op een nieuwe regel. (Conditionele) expressies mag u over meerdere regels verspreiden. Een validatie-constraint mag u zonder if-then-else statements definiëren; deze constraint moet dan beginnen met 'c:'

Met het '|'-teken kunt u een constraint voorzien van commentaar. Tijdens de configuratieprocedure kunt u berichten genereren met behulp van de variabele "message" (maximaal 80x25 regels tekst).

Voorbeeld

If expressie1

then expressie2

else expressie3

endif

Constraintvariabelen

In constraintexpressies kunt u zowel globale als lokale variabelen gebruiken. Globale variabelen zijn productkenmerken en door uzelf gedefinieerde constraintvariabelen die als 'globaal' zijn gedeclareerd. De lokale variabelen zijn variabelen die in de Productconfigurator zijn voorgedefinieerd, zoals invoer, weergave, lengte, breedte enz. Globale variabelen behouden hun waarde gedurende het gehele configuratieproces, tenzij de waarde gewijzigd wordt.

Een constraintvariabele kan de volgende typedeclaraties hebben:

  • string (alfanumeriek) (bijvoorbeeld string machine global)
  • long (gehele getallen) (bijvoorbeeld long i)
  • double (gebroken getallen)(bijvoorbeeld double j)

De door u zelf gedefinieerde constraintvariabelen moet u altijd bovenaan de constraint declareren. Alle lokale variabelen worden vóór uitvoer van de constraint geïnitialiseerd: alfanumerieke variabelen worden leeg gemaakt, en numerieke variabelen krijgen de waarde nul. De globale variabelen 'input' en 'valideren' worden geïnitialiseerd met de waarde 'true'.

Constraintvariabelen gebruiken

Productkenmerken moeten in constraintexpressies worden voorzien van vierkante haken openen en sluiten ([......]). De overige variabelen kunnen direct in expressies worden gebruikt. Alfanumerieke variabelen (string-arrays) mogen worden geïndexeerd volgens de notatie: (startpositie[;lengte]).

Voorbeeld

[kleur] = "rood"

valideren = waar

Bij waarden van variabelen wordt onderscheid gemaakt tussen alfanumerieke en numerieke waarden. Alfanumerieke waarden moeten worden voorzien van aanhalingstekens ("...."). Numerieke waarden kunt u rechtstreeks invoeren. Het decimaalteken is een punt ('.').

Voorbeeld

machine(1;2) = "A5"

volume = 28.673

Voor booleaanse expressies kunt u de constanten true/false gebruiken.

Rekenkundige functies

  • round(X,Y,Z): geeft afgeronde waarde van X; Y is aantal decimalen en Z is afrondingsmethode (0=naar beneden, 1=normaal, 2=naar boven)
  • val(A) : geeft de numerieke waarde van string A (val("8.7") = 8.7)
  • abs(X) : berekent absolute waarde van X (abs(-10.3) = 10.3)
  • int(X) : geeft integerwaarde van X (int(11.6) = 11)
  • pow(X,Y) : verheft X tot de macht van Y (pow(10,2) = 100)
  • sqrt(X) : geeft vierkantswortel van X (sqrt(16) = 4)
  • min(X,Y) : geeft de kleinste waarde van X en Y (min(6,10) = 6)
  • max(X,Y) : geeft de grootste waarde van X en Y (max(6,10) = 10)
  • pi : constante met waarde PI (3.1415926...)

Goniometrische functies

  • sin(X), cos(X), tan(X): geeft sinus, cosinus of tangens van X (radialen)
  • asin(X), acos(X), atan(X): geeft arc sinus, cosinus of tangens van X
  • hsin(X), hcos(X), htan(X): geeft hyperbolische sinus, cosinus of tangens van X

Logaritmische functies

  • exp(X) : verheft e tot de macht van X
  • log(X) : geeft natuurlijke logaritme van X op basis van e
  • log10(X): geeft logaritmische waarde van X op basis van machten van 10

String-functies

  • edit(X,Y) : formatteert numerieke waarde X volgens formaat Y (edit(10.3,"ZZZ9V.99") = "10.30"
  • str(X) : zet numerieke waarde in string (str(10.3) = "10.3")
  • len(X) : geeft lengte van string X (len("abc") = 3)
  • strip(X) : verwijdert spaties achter laatste teken (strip("A ") "A")
  • pos(X,Y) : geeft positie van string Y in string X vanaf links
  • rpos(X,Y) : geeft positie van string Y in string X vanaf rechts

Datumfuncties

  • date() : geeft het aantal dagen tussen dag 0 en de huidige datum
  • date(j,m,d): geeft het aantal dagen tussen dag 0 en de ingevoerde datum

Voorbeeld

date(1995,06,01) = 728445