Zum Inhalt springen

[script] Werte-Index für Datenbankfelder abfragen/erstellen


relume

Frage

Geschrieben

Hallo

 

Ich würde gerne per Script einen Werte-Index über bestimmte Datenbankfelder abfragen bzw. erstellen.

 

Gibt es eine (nicht dokumentierte) Möglichkeit dies zu tun, ohne dass zu erst über alle Objekte zu iterieren, um einen entsprechenden Index zu erstellen?

 

Grundsätzlich wäre es sogar sehr hilfreich, wenn man per Script-Befehl auf die Datenbanken zugreifen könnte, ohne dazu zuvor entsprechende Objekte selektieren (also mit vs.SelectObj ...) zu müssen.

 

In der Hoffnung es geht auch einfacher als nur kompliziert ...

 

Besten Dank für Eure Hinweise


... ich meinte natürlich "vs.ForEachObject" für die Iteration ...

4 Antworten auf diese Frage

Empfohlene Beiträge

Geschrieben

Hallo relume

 

Vermutlich verstehe ich deine Frage falsch, oder suchst du den Befehl "=WERT()" um aus einer Zelle eine Zahl zu machen, damit man rechnen kann.

 

Gruss, Marc

Leiter BIM Consulting

ComputerWorks Schweiz

________________________________________

Vectorworks - Führende BIM-Spitzentechnologie und Flaggschiff der Nemetschek Gruppe

Weltweit verwirklichen über eine halbe Million Architekten und Designer grossartige Projekte mit Vectorworks!

Geschrieben

Hallo Marc

 

Vielen Dank für Deine sonntägliche Antwort! Ja Deine Antwort trifft meine Frage nicht, die ich dann aber wohl nicht verständlich formuliert haben. Ich versuch es deshalb anders formuliert:

 

- Ich habe eine grössere Anzahl an Objekten (z.B. Polygone oder Punkte), die mit einer VW Datenbank (z.B. Bodenflaeche) verküpft sind und z.B. in einem spezifischen Datenbank-Feld (z.B. "Eingeschaft") die Objekteigenschaft als Attribute enthält (z.B. "garten", "strasse", "wasser" ...).

 

- Nun möchte ich über alle Objekte die mit der VW DB "Bodenflaeche" verküpft sind für das DB-Feld "Eingenschaft" alle möglichen Attributwerte ermitteln (so wie das für die VW 2017 Funktionalität der Datenvisualisierung der Fall ist) und als Liste/Array mit eindeutigen Werten (also keine Mehrfacheinträge) erhalten.

 

- In einer "normalen" Datenbank-Umgebung gibt es die entsprechenden Befehle um einen solchen unique Index sehr Ressourcen effizient zu erhalten, da die Datenbank sowieso mit internen Werte-Indexen arbeitet.

 

In VW habe das im Scripting (Pyhton) so gelösst, dass ich :

 

1. Alle relevanten Objekte die mit der entsprechenden VW DB verknüpft (mittels Criteria) sind mit dem Befehl "vs.ForEachObjekt" in einer generischen callback Routine abarbeite, um eine Liste mit allen Object-Handles zu erhalten.

 

2. Die Liste mit den Object-Handles in einer nachgeschalteten Routine/Funktion durchiteriere und hierbei für jedes Objekt den gewünschten verküpften Datensatz ("Bodenfläche") abfrage und für das DB-Feld ("Eigenschaften") den entsprechenden eindeutigen Werte-Index als Liste erstelle.

 

Nun könnte ich natürlich die ganze Sache etwas beschleunigen, wenn ich Punkt 1 und Punkt 2 zusammenfassen würde. Allerdings dann handliche ich mir aufgrund des Konstrukts von vs.ForEachObject das Problem ein, dass ich keine generische Routine hierfür verwenden kann, sondern immer spezifische callback Routinen schreiben muss.

 

Grundsätzlich wäre es aber noch viel viel schneller, wenn man einfach mit einem Befehl einen Feld-Index als Liste abfragen könnte, ohne explizit über jedes Objekt iterieren zu müssen.

 

Vielen Dank und beste Grüsse,

Geschrieben

Hallo relume

 

Ich mach "das" eigentlich immer so:

- Tabelle anlegen

- Kriterium: Objekte suchen die mit der DB verknüpft sind

- Spalte A -> Alle Einträge des gewünschten Datenbankfeldes auflisten

- Summenzeichen auf Spaltentitel ziehen

 

Damit kriegst du eine Liste wo jeder existierende Eintrag nur 1x vorhanden ist.

 

Gruss, Marc

Leiter BIM Consulting

ComputerWorks Schweiz

________________________________________

Vectorworks - Führende BIM-Spitzentechnologie und Flaggschiff der Nemetschek Gruppe

Weltweit verwirklichen über eine halbe Million Architekten und Designer grossartige Projekte mit Vectorworks!

Geschrieben

Hallo Marc

 

Nochmals vielen Dank für Deine Rückantwort. Für einmalige/wenige Abfragen ist Dein Vorgehensvorschlag gut und ich werde diesen entsprechend versuchen.

 

 

Vielen Dank und beste Grüsse,

 

André

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden
  • Forenstatistik

    • Themen insgesamt
      26,7Tsd
    • Beiträge insgesamt
      138,8Tsd
×
×
  • Neu erstellen...