Intelligente bygningsdele – opskrift til (SigmaScript)

En opskrift til en intelligent bygningsdel programmeres i SigmaScript, et kodesprog baseret på Pascal, som er let at lære og forstå, og har været brugt siden 1969.
Med SigmaScript er det muligt at læse og behandle data i kalkulationen, samt at opsætte en brugerflade for en bygningsdel, så brugeren (beregneren) let kan interagere med bygningsdelen.

Sigma Enterprise
begynder | ØVET | avanceret

Denne guide gennemgår

I funktionsbeskrivelserne kan du klikke på ikonerne:



viser hvordan funktionens brugerflade ser ud

viser hvordan SigmaScript-kodningen af funktionen ser ud

 

Grundbegreber og -elementer

Det er godt at kende og forstå nogle grundbegreber og -elementer, når du skriver SigmaScript-kode:

  • Variabler (variables): Variabler er navngive reserverede hukommelsespladser, hvor programmet kan gemme og manipulere data. En variabel kan indeholde forskellige typer af data, f.eks. tal, tekst eller sand/falsk-værdier. Man kan tænke på en variabel som en beholder, der kan indeholde og ændre værdier, efter behov.
  • Funktioner (functions): Funktioner i SigmaScript er blokke af kode, der udfører en bestemt opgave. Man kan tænke på dem som små underprogrammer, der kan kaldes fra hovedprogrammet. Funktioner kan modtage input, udføre beregninger og returnere et resultat. De hjælper med at organisere og strukturere koden i mindre og mere overskuelige dele.
  • Operatorer (operators): Operatorer i SigmaScript er symboler eller nøgleord, der bruges til at udføre beregninger eller evaluere udtryk. Der er forskellige typer af operatorer: aritmetiske operatorer (f.eks. +, -, *, /), sammenligningsoperatorer (f.eks. =, >, <) og logiske operatorer (f.eks. AND, OR, NOT). Operatorerne hjælper med at manipulere værdier og tage beslutninger baseret på forskellige betingelser.
  • Typer (types): I SigmaScript er der forskellige typer af data, som variabler kan indeholde. Nogle af de mest almindelige typer er integer (heltal), float (decimaltal), string (tekststreng), boolean (sand/falsk). Typer hjælper med at definere, hvilken slags data variabler kan indeholde, og sikrer, at de bruges korrekt.
  • Kontrolstrukturer (control structures): Kontrolstrukturer i SigmaScript er konstruktioner, der styrer, hvordan koden udføres og kontrollerer flowet af programmet. I Sigma Script er den mest anvendte kontrolstruktuktur if-sætninger, bruges til at tage beslutninger/fortage handlinger baseret på betingelser. Nogle af de mest almindelige kontrolstrukturer er if-sætninger (bruges til at tage beslutninger baseret på betingelser), loops (f.eks. for-loops og while-loops, der gentager kodeblokke) og case-sætninger (bruges til at håndtere flere mulige betingelser). Kontrolstrukturer hjælper med at styre og styre programudførelsen.
  • Syntaks (syntax): Syntaks i SigmaScript henviser til reglerne for, hvordan kode skal struktureres og skrives i sproget. Det inkluderer brug af korrekte nøgleord, symboler og sætningsopbygning. Overholdelse af den korrekte syntaks er afgørende for, at koden kan forstås og udføres korrekt af computeren. Hvis der er fejl i syntaksen, vil programmet ikke kunne køre, og der vil blive genereret fejlmeddelelser. Så at have en korrekt syntax er vigtigt for at have et fungerende program.

 

Eksempel

Linje SigmaScript Variabler Funktioner Operatorer Typer Kontrol-
struktur
1 A := 10; A :=   ; Integer
2 B := A * 2; B :=   *   ; Integer
3 if (B > 15) then > if, then
4    C := B + 10; c :=   +   ;
5 else else
6    C := B – 10; –   ;
7 AddText(“C er lig med” + C); AddText ; String

tilbage til toppen

Tilføj / rediger opskrift (SigmaScript) på bygningsdel

Overordnet består tilføjelse / redigering af SigmaScript på en bygningsdel af følgende 5 trin

1. Find og vælg (i Beregningstræet) den bygningsdel du vil tilføje opskrift (SigmaScript) på
2. Gå til Data-båndet og vælg Rediger opskrift (i gruppen “SigmaScript”)

Du får får vist dialogboksen “SigmaScript editor” med fanerne “Initialiserings opskrift”, “Dialog opskrift”, “Udførelses opskrift” og “Avancerede egenskaber”.

   klik for større billede

NOTE   “Initialiserings opskrift” bruges sjældent, men kan f.eks. bruges til at initialisere variabler (eksempelvis indlæsning af data fra felter for bygningsdelen) inden databehandlingen på “Dialog opskrift”-fanen.

3. Vælg fanen Dialog opskrift, indtast SigmaScript for data-input og data-behandling og vælg Gem og valider
Find forklaringer til SigmaScript-funktioner og -kontrolstrukture længere nede

NOTE    Hvis bygningsdelen består af flere niveauer, kan du indtaste SigmaScript på hvert niveau

4. Vælg fanen Udførelses opskrift, indtast SigmaScript for data-output og vælg Gem og valider
Find forklaringer til SigmaScript-funktioner (Self.Set…) længere nede

NOTE    Hvis bygningsdelen består af flere niveauer, skal du ofte bruge Udførelses opskrift på flere underkomponenter. Du skal vælge Gem opskrift eller Gem og valider og derefter vælge underkomponent i Beregningstræet.

5. Vælg fanen Avancerede egenskaber og marker afkrydsningfelterne Indeholder opskrift der kan afvikles og Kør automatisk opskrift når komponenten vælges i afsnittet “SigmaScript egenskaber for komponenten”

NOTE    Afhængigt af, hvordan opskriften skal køre kan du markere flere/andre af afkrydsningsfelterne under “SigmaScript egenskaber for komponenten”

NOTE    Du kan redigere opskriften ved igen at vælge bygningsdelen i Beregningstræet og derefter gå til Data-båndet og vælge Rediger opskrift

tilbage til toppen

Dialog opskrift – Input

En stor del af det at opbygge en intelligent bygningsdel består i, at brugeren skal indtaste data til parametrering af bygningsdelen.

TIP Du kan finde SigmaScript-funktioner via tastaturgenvejen Ctrl+Space – og du kan begrænse antallet af mulige funktioner ved at taste noget af funktionen.

Eksempel: hvis du taster “getch” og derefter trykker Ctrl+Space, får du vist funktioner der indeholder de bogstaver, f.eks. funktionen GetChoice

   klik for større billede

 

Klik på ikonerne


viser hvordan funktionens brugerflade ser ud

viser hvordan SigmaScript-kodningen af funktionen ser ud

 

Hel-tal
     funktion GetInteger(label: string, default value: float)
     eksempel Antal := GetInteger(“Indtast antal”, 1);
Decimal-tal
     funktion GetFloat(label: string, default value: float)
     eksempel Længde := GetFloat(“Indtast længde [m]”, 1.5);
Tekst, en linje
     funktion GetText(label: string, default value: string)
     eksempel Navn := GetText(“Indtast bygningsdel”, “bygningsdels navn”);
Tekst, flere linjer
     funktion GetMemo(label: string, line count: float, default value: string, path to autotext: string)
     eksempel Beskrivelse := GetMemo(“Beskrivelse”, 5, “Her indtastes beskrivelsen”, “Autotekster\Autotekster_01”);
Valg, rullemenu
     funktion GetChoice(label: string, default choice: float, “choice 1”, “choice 2”, …, “choice X”)
     eksempel ValgHøjde := GetChoice(“Vælg højde”, 0, “2,10 m”, “2,20 m”, “2,30 m”, “2,40 m”, “2,50 m”);
Valg, knapper
     funktion GetRadioChoice(label: string, default choice: float, “choice 1”, “choice 2”, …, “choice X”)
     eksempel ValgOverflade := GetRadioChoice(“Vælg overflade”, 1, “Ubehandlet”, “Grundet”, “Grundet og malet”);
Valg, checkboks
     funktion GetBoolean(label: string, default choice: float)
     eksempel ValgStillads := GetBoolean(“Medregn stillads”, 0);
Hent tekst / værdi fra standard-kolonne
     funktion 1 Self.Get[kolonne]AsFloat()
     eksempel Self.GetNumberAsFloat();
     funktion 2 Self.Get[kolonne]AsString()
     eksempel Self.GetNumberAsString();
Hent tekst / værdi fra ekstrafelt-kolonne
     funktion Self.GetCustomFieldValue(“[Felt ID]”)
     eksempel Self.GetCustomFieldValue(“SUPPLIER”);

tilbage til toppen

Dialog opskrift – if-then-else

Ud fra input kan der træffes valg / foretages handlinger. Dette styres ved brug af kontrolstrukturer:

hvis   betingelse er opfyldt   så
     udfør handling 1
ellers
     udfør handling 2

TIP Du kan finde SigmaScript-funktioner via tastaturgenvejen Ctrl+Space – og du kan begrænse antallet af mulige funktioner ved at taste noget af funktionen.

Eksempel: hvis du taster “getch” og derefter trykker Ctrl+Space, får du vist funktioner der indeholder de bogstaver, f.eks. funktionen GetChoice

   klik for større billede

 

Klik på ikonerne


viser hvordan funktionens brugerflade ser ud

viser hvordan SigmaScript-kodningen af funktionen ser ud

 

Hvis-så-ellers
     funktion if [betingelsethen

[handling 1]

else

[handling 2]

     eksempel if Højre then

Sving := “til højre”;

else

Sving := “til venstre”;

     eksempel

     variant 1

if (Stillads) then

begin

DageStillads := GetInteger(“Indtast antal dage”, 1);

DagsprisStillads := GetFloat(“Indtast dagspris”, 0.00);

end

else

begin

DageStillads := 0;

DagsprisStillads := 0.00;

end

     eksempel

     variant 2a

if (ValgOverflade = 0) then

Overflade := “ubehandlet”;

else if (ValgOverflade = 1) then

Overflade := “grundet”;

else if (ValgOverflade = 2) then

Overflade := “grundet og malet”;

     eksempel

     variant 2b
     (uden sidste if-then)

if (ValgOverflade = 0) then

Overflade := “ubehandlet”;

else if (ValgOverflade = 1) then

Overflade := “grundet”;

else

Overflade := “grundet og malet”;

     eksempel

     variant 3a

if (ValgHøjde = 1) then

Højde := 2.10;

else if (ValgHøjde = 2) then

Højde := 2.20;

else if (ValgHøjde = 3) then

Højde := 2.30;

else if (ValgHøjde = 4) then

Højde := 2.40;

else if (ValgHøjde = 5) then

Højde := 2.50;

     eksempel

     variant 3b
     (uden sidste if-then)

if (ValgHøjde = 1) then

Højde := 2.10;

else if (ValgHøjde = 2) then

Højde := 2.20;

else if (ValgHøjde = 3) then

Højde := 2.30;

else if (ValgHøjde = 4) then

Højde := 2.40;

else

Højde := 2.50;

tilbage til toppen

Dialog opskrift – layout

En dialogboks med et godt layout gør den intelligente bygningsdel nemmere at forstå og bruge.
En linje i den intelligente bygningsdels dialogboks deles op i “Label” og “Control”.

  • “Label” er den venstre del og bruges til ledetekst, eksempelvis “Indtast længde [m]” fra eksemplet på et decimal-tal.
  • “Control” er den højre del og bruges til indtastningsfelterne.
TIP Du kan finde SigmaScript-funktioner via tastaturgenvejen Ctrl+Space – og du kan begrænse antallet af mulige funktioner ved at taste noget af funktionen.

Eksempel: getch, efterfulgt af Ctrl+Space

   klik for større billede

 

Klik på ikonerne


viser hvordan funktionens brugerflade ser ud

viser hvordan SigmaScript-kodningen af funktionen ser ud

 

Størrelse på intelligent bygningsdels dialogboks
     funktion SetWindowSize(height: float, width: float)
     eksempel SetWindowSize(1000, 800);
Label bredde
     funktion SetLabelWidth(value: float)
     eksempel SetLabelWidth(55);
Control bredde
     funktion SetControlWidth(value: float)
     eksempel SetControlWidth(100);
Label start
     funktion SetLabelStart(value: float)
     eksempel SetLabelStart(20);
Control justering
     funktion SetControlAlignment(value: string)
     eksempel SetControlAlignment(“Right“);
SetControlAlignment(“Center“);
SetControlAlignment(“Left“);
Overskrift
     funktion AddHeader(value: string)
     eksempel AddHeader(“Stillads”);
Side og sidefane
     funktion AddPage(value: string)
     eksempel AddPage(Indtastning”);
Kommentar
     funktion UseComment(value: string)
     eksempel UseComment(Ydervæg”);
Vis tekst
     funktion AddText(value: string)
     eksempel AddText(Væggens areal er ” + Areal + ” kvadratmeter”);
     funktion ShowText(value: string, value: string)
     eksempel ShowText(Væggens areal er “, “” + Areal + ” m2″

tilbage til toppen

 

Udførelses opskrift

Alle bygningsdelens felter (kolonner) kan styres ved hjælp af Self-funktioner og navnet på den variabel, som indholder værdien / teksten.

TIP Du kan finde SigmaScript-funktioner via tastaturgenvejen Ctrl+Space – og du kan begrænse antallet af mulige funktioner ved at taste noget af funktionen.

Eksempel: hvis du taster “getch” og derefter trykker Ctrl+Space, får du vist funktioner der indeholder de bogstaver, f.eks. funktionen GetChoice

   klik for større billede

 

Klik på ikonerne


viser hvordan funktionens brugerflade ser ud

viser hvordan SigmaScript-kodningen af funktionen ser ud

 

Tekst
    funktion Self.SetText(text: string)
     eksempel Self.SetText(Navn);
Nummer
    funktion Self.SetNumber(text: string)
     eksempel Self.SetNumber(varenummer);
Kategori
    funktion Self.SetCategory(text: string)
     eksempel Self.SetCategory(“Materialer”);
Enhed
    funktion Self.SetUnits(text: string)
     eksempel Self.SetUnits(Enhed);
Mængde
    funktion Self.SetQuantity(value: float)
     eksempel Self.SetQuantity(Længde);
Enhedspris
    funktion Self.SetUnitPrice(value: float)
     eksempel Self.SetUnitPrice(Enhedspris);
Kostpris
    funktion Self.SetCostPrice(value: float)
     eksempel Self.SetCostPrice(Kostpris);
Prisregulering
    funktion Self.SetRegulation(value: float)
     eksempel Self.SetRegulation(Prisregulering);
ekstrafelt
    funktion Self.SetCustomFieldValue(id: string, text: string)
     eksempel Self.SetCustomFieldValue(“SUPPLIER”, Leverandør);
    funktion Self.SetCustomFieldValue(id: string, value: float)
     eksempel Self.SetCustomFieldValue(“Vgtprenhed”, Vægt);

tilbage til toppen