Zum Inhalt

Tabellen-Objekt

CadnaA-Tabellenobjekte aus dem namespace cna.tables. Hierbei ist tabobj ein Platzhalter für den Bezeichner der Tabelle hier).

  • for obj in cna.tables.tabobj:all() do .. Iteration über alle Objekte (d.h. Zeilen) der Tabelle.
  • for obj in cna.tables.tabobj:all{...} do Iteration über alle Objekte (d.h. Zeilen) der Tabelle, die die Bedingungen der Parameter erfüllen:
    • id="identi" nur Elemente mit bestimmten ID. Der Parameter ID cna ist ein Muster, d.h. id="!01!*" kann verwendet werden, um einer bestimmten ObjectTree-Definition zu entsprechen.
    • active_only=true nur aktive Elemente
  • local cnaobj = cna.tables.tabobj:first_by_id (id) liefert das erste Element mit dem angegebenen ID
  • local newobj = cna.tables.tabobj:append()erzeugt ein neues Objekt und fügt es an das Ende der Tabelle an
  • local anz_zeilen= #tabobj Anzahl Tabellenzeilen (Objekte)
  • X:break_lines(Y) ruft die Funktion „Breche Linien“ auf, wobei X das Objekt ist, woran gebrochen werden soll und Y das Objekt, das gebrochen wird (nicht mit/für Punktobjekten). Beispiel: an Häusern soll gebrochen werden:
for x cna.tables.Haus:all() do
    x:break_lines(...)
  • cnaobj.clone() dupliziert ein Objekt. Sofern erfolgreich, wird das geklonte Objekt zurückgegeben, sonst nil.
  • reguläre Ausdrücke für die Objektauswahl: Bei der Iteration über CadnaA Objekte wie Häuser etc. kann ein regulärer Ausdruck für die ID-Parameter verwendet werden. Zum Beispiel ist es möglich, die ObjectTree-Benennung zu verwenden, um nur bestimmte Zweige des ObjectTree‘s oder Objekte mit einem bestimmten ID-Muster zu durchlaufen. Das Modul für reguläre Ausdrücke ist identisch mit dem für CadnaA-Dialogen verwendeten:
cna.print("BEZ\tID\t\tActive?")
local i 
for i in cna.tables.Haus:all{id="!0*!*1"} do
    cna.print(string.format("'%s'\t'%s'\taktiv: %d", i.BEZ, i.ID, i.MARK))
end
local i = cna.tables.Haus:first_by_id("!*!a1")
cna.print(string.format("'%s'\t'%s'\taktiv: %d", i.BEZ, i.ID, i.MARK))
  • Beim Objekt “Hausbeurteilung” können Fassaden ausgeschlossen werden. Hierzu erhält man mit facades eine Referenz auf die Fassaden, mit dessen Hilfe man dann mit dem [ ] Operator die Fassaden ein- oder ausschließen kann, wobei 1 für ausgeschlossen und 0 für eingeschlossen steht. Voraussetzung ist eine gültige Hausbeurteilung innerhalb eines Hauses mit echt positiver Höhe. Die maximale Anzahl Fassaden pro Haus beträgt 256. Beispiel:
for k in cna.tables.bld_eval:all() do
    fac = k.facades
    if fac then - check if valid
        for i=1, #fac, 1 do
            fac[i] = 1 -- exclude like this
            fac[i] = 0 -- include like this
        end
    end
end