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.currentgibt beim Lesezugriff die aktuell gewählte Variante zurück. Schreibzugriff kann verwendet werden, um Varianten schalten zu können:cna.variant.current = 1odercna.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 mitcna.variant.currentzu 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.