Zum Inhalt

Varianten in CadnaA-Lua

Varianten können in CadnaA-Lua geschaltet werden. Um Verwechslungen von aktiven/inaktiven Varianten und der Variante-Nummerierung zu vermeiden, wird standardmäßig ein Iterator verwendet.

  • i ist die Variantennummer, beginnend mit 1
  • „shortname“ ist die Kurzbezeichnung der Variante (meistens V01, V02, ...)
  • „longname“ ist die (lange) Bezeichnung der Variante (entspricht der Kurzbezeichnung, wenn keine lange Bezeichnung definiert wurde)
  • cna.variant.current gibt beim Lesezugriff die aktuell gewählte Variante zurück. Schreibzugriff kann verwendet werden, um Varianten schalten zu können: cna.variant.current = 1 oder cna.variant.current = "V01". Beide Anweisungen wählen die erste Variante aus. Varianten werden beginnend mit 1 nummeriert (nicht von Null).
  • cna.variant.is_current_calculated () gibt zurück, ob die aktuelle Variante in der letzten Berechnung berechnet wurde.
  • cna.variant.all () ist ein Iterator, der bis zu 3 Werte für jede aktive Variante ausgibt (d.h. inaktive Varianten werden übersprungen) . Dies ist die bevorzugte Art der Variantenwahl, da die manuelle Einstellung mit cna.variant.current zu Fehler führen kann (falsche Variantennummer oder -name, Variante nicht aktiv, etc.).
  • cna.variant.is_current_calculated () Prozedur, die einen Boole‘schen Wert zurückgibt (true oder false), ob die aktuelle Variante berechnet wurde oder nicht.

Beispiel: Berechnung und Speicherung der Raster für alle aktiven Varianten, aber ohne Variante V03:

local i, shortname, longname
for i, shortname, longname in cna.variant.all() do
    cna.print("V" .. i .. " with id: " .. shortname .. " and identifier " .. longname)  
    if shortname ~= "V03" then -- code here applies to all active variants but Variant 3        
        cna.calc_grid()     
        cna.save_grid("M:/grid_" .. shortname .. ".cnr")
    end
end

Der Iterator cna.variant.all () iteriert über alle aktiven Varianten. Diese müssen in der for-Schleife nicht zugewiesen werden, können aber - wie im Beispiel zu sehen - als Information nützlich sein.