Zum Inhalt springen

Datenmanager if Abfrage mit Platzhalter wie z.B. "if(([Style.Name]='*TR*') funktioniert nicht


Matteo

Empfohlene Beiträge

Moin zusammen,

 

Wir sind gerade dabei, uns weiter mit dem Datenmanager von Vectorworks zu befassen.   

 

Eine Idee ist es, Objekt-PSets direkt über Objekt-Stilnamen zu kontrollieren.

u.a. sind folgende Bestandteile geplant:

 

1) (WA=Wall, ST=Stütze=Column,...)  

2) A=Aussen(outside); I=Innen(inside)

3) TR=Tragend(load bearing - yes); NTR=nichttragend(load bearing - no)

 

Der Name lautet dann in etwa folgendermaßen:

WA-A-TR für eine Wand - Außen - tragend

WA-I-NTR wäre dann zum Beispiel eine nichttragende Innenwand...

....

 

Im Datenmanager wollen wir entsprechend diverse Kriterien abfragen:

 

2) - Prüfung ob Außen- oder Innenwand 

if([Style.Name]='WA*','TRUE','FALSE') - doesn't work

if([Style.Name]<'WA-I','TRUE','FALSE') does work

 

3) - Prüfung ob tragend oder nichttragend

if([Style.Name]='*TR*','TRUE','FALSE') doesn't work

if([Style.Name]<'WA-A-TR','FALSE',if([Style.Name]<'WA-I-TR')&([Style.Name]>'WA-A-TR-Z-999'),'FALSE','TRUE') does work

 

Wieso funktionieren die Platzhalter nicht? Gibt es da vielleicht eine Alternative zu den Platzhaltern? Eine andere Abfrage als IF?

 

Ich habe das schonmal auf Englisch im internationalen Vectorworks-Board gepostet:

https://forum.vectorworks.net/index.php?/topic/71400-data-manager-if-clause-with-wildcard-like-ifstylenametr-doesnt-work/&tab=comments#comment-349597

MacBook Pro 16" - macOS 13 - Ventura - 2,3 GHz 8-Core Intel Core i9, 16GB RAM, AMD Radeon Pro 5500M 8 GB VRAM

Vectorworks 2022 - SP6

Vectorworks 2023 - SP6

Link zu diesem Kommentar

Hi Matteo,

 

mit der IF-Abfrage allein kommst du dort nicht weit. Du brauchst die FIND-Abfrage, die nach einem bestimmten String in der Bezeichnung sucht. Versuch es mal damit: IF((FIND('WA-A', [STYLE.NAME]) = 0), 'True', 'False'). Funktionieren könnte auch SELECT2. Da müsstest du aber auch etwas experimentieren.

 

Gruß!

iMac (Retina 5K, 27", 2020)

macOS Big Sur

Prozessor: 3,8 GHz 8-Core Intel Core i7

Speicher: 40 GB 2133 MHz DDR4

Grafikkarte: AMD Radeon Pro 5700 8 GB

 

 

Link zu diesem Kommentar

IF((FIND('WA-A', [STYLE.NAME]) = 0), 'True', 'False') funktioniert.

 

IF((FIND('TR', [STYLE.NAME]) = 0), 'True', 'False') funktioniert  leider nicht. Ich nehme mal an, dass das daran liegt, dass sich die Information "TR" mitten im String/Text des Stilnamens befindet....

 

SELECT2 kann das glaube ich auch nicht (mal abgesehen davon, dass die Beschreibung nicht so einfach nachvollziehbar ist:

Zitat

SELECT1(Anzahl_Ausdruck,Wert_Ausdruck1, Wert_Ausdruck2, …, Wert_AusdruckN) - Berechnet Anzahl_Ausdruck und berechnet Wert_Ausdruck1, wenn das Ergebnis 0 ist, Wert_Ausdruck2, wenn das Ergbnis 1 ist, Wert_AusdruckN, wenn das Ergbnis N-1 ist. Die Anzahl der Parameter muss mindestens 3 sein.

 

MacBook Pro 16" - macOS 13 - Ventura - 2,3 GHz 8-Core Intel Core i9, 16GB RAM, AMD Radeon Pro 5500M 8 GB VRAM

Vectorworks 2022 - SP6

Vectorworks 2023 - SP6

Link zu diesem Kommentar
Am 30.4.2020 um 15:35 schrieb Matteo:

IF((FIND('TR', [STYLE.NAME]) = 0), 'True', 'False') funktioniert  leider nicht. Ich nehme mal an, dass das daran liegt, dass sich die Information "TR" mitten im String/Text des Stilnamens befindet....

Das ist der Grund! Ich glaube aber du könntest die 0 durch die Zahl ersetzen an der dein TR steht, wenn es immer an der gleichen Stelle steht.

 

Am 30.4.2020 um 15:35 schrieb Matteo:

IF((FIND('TR', [STYLE.NAME]) = 0), 'True', 'False') funktioniert  leider nicht. Ich nehme mal an, dass das daran liegt, dass sich die Information "TR" mitten im String/Text des Stilnamens befindet....

Ich hatte mal angefangen, damit zu spielen, aber bin auch nicht all zu weit gekommen. Könnte aber trotzdem einen Blick wert sein.

iMac (Retina 5K, 27", 2020)

macOS Big Sur

Prozessor: 3,8 GHz 8-Core Intel Core i7

Speicher: 40 GB 2133 MHz DDR4

Grafikkarte: AMD Radeon Pro 5700 8 GB

 

 

Link zu diesem Kommentar

funktioniert.

"FIND(Text, Teiltext) - Die nullbasierte Position des Teiltextes im Text. Das Ergebnis ist -1, falls der Teiltext nicht gefunden wird." ist die Beschreibung

 

ich habe es folgendermaßen geschrieben:

IF((FIND('TR', [STYLE.NAME]) = 5), 'True', 'False')

Finde die Zeichenfolge "TR" im Wandstilnamen, anfangend am sechsten Buchstaben (=5, wenn man mit 0 zu zählen beginnt). Wenn es zutrifft, wird für den Wert "True" eingetragen, ansonsten "False".

 

Die Beschreibung in der Hilfe ist auf jeden Fall mies...

 

Bearbeitet von Matteo
  • Like 1

MacBook Pro 16" - macOS 13 - Ventura - 2,3 GHz 8-Core Intel Core i9, 16GB RAM, AMD Radeon Pro 5500M 8 GB VRAM

Vectorworks 2022 - SP6

Vectorworks 2023 - SP6

Link zu diesem Kommentar

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
      24,1Tsd
    • Beiträge insgesamt
      124,8Tsd
×
×
  • Neu erstellen...