Zum Inhalt springen

Bei aktivieren einer Klasse, einzelne Objekte einer anderen Klasse ausblenden


denniswstr

Frage

Geschrieben

aktuell arbeite ich an einer neuen Zeichnung für die Hallenbestuhlung. Soweit funktioniert alles einwandfrei – bis auf einen Punkt:

Wir haben eine Tribüne mit Stühlen. Diese Tribüne kann mithilfe eines Vorhangs "verkleinert" werden, sodass die letzten fünf Reihen nicht mehr sichtbar sind, da sie sich hinter dem Vorhang befinden.

Gibt es in Vectorworks eine Möglichkeit, es so einzurichten, dass beim Aktivieren der Klasse „Vorhang“ automatisch nur die Stühle ausgeblendet werden, die sich hinter dem Vorhang befinden?
Diese Stühle gehören zur gleichen Klasse (Stühle Block A) wie die übrigen Stühle vor dem Vorhang.

Lässt sich das in Vectorworks irgendwie umsetzen?

 

Viele Grüße

Dennis

5 Antworten auf diese Frage

Empfohlene Beiträge

Geschrieben

Hi @denniswstr

Also grundsätzlich möchtest du, wenn ich das richtig verstehe, die Stühle hinter dem Vorhang ausblenden, sobald der Vorhang (die Vorhangklasse) eingeblendet wird.
Du könntest dies mit einer gesicherten Darstellung machen. Dort legst du nur fest, dass die Klasse Vorhang eingeblendet wird und die Klasse der Stühle der letzten 5 Reihen ausgeblendet wird.

  • Like 1

Noémie Kölliker

Software Consultant | Landscape + Spotlight

ComputerWorks GmbH

http://www.computerworks.ch

 

MacBook Pro | Apple M3 Chip | 36 GB RAM | 1TB 

Vectorworks 2021 - aufwärts bis zum neusten Update ;D

Geschrieben

Hallo @Noémie Kölliker 

 

Entschuldigung für die späte Antwort. Ich war zeitlich sehr viel in anderen Projekte eingebunden.

 

Ja genau, du hast das schon richtig verstanden. An eine gesicherte Darstellung hatte ich auch schon gedacht. Wir ändern allerdings immer wieder viel an der Zeichnung (Es kommt Bestuhlung hinzu, Tische hinzu, verschiedene Bühnengrößen etc.) so das wir nie das selbe in der Zeichnung haben. Es kommen für die verschiedenen Bestuhlungen auch immer neue Klassen dazu, die möchte ich nicht jedes mal in der gesicherten Darstellung erst aktivieren müssen.

 

Daher dachte ich, das es vielleicht mit einem Python oder Vectorscript gut gehen würde, wo man dann einfach auf "Kurvenvorhang ein- / ausblenden" klicken dann und je nachdem ob der Kurvenvorhang gerade ein oder ausgeblendet ist, ändert er dies halt und blendet es ein oder aus.

Geschrieben

Ich habe nach ein bisschen hin und her nun eine Lösung mit einem Vectorscript gefunden.

 

Und zwar habe ich ein Script gemacht, welches meine Klasse ausblendet HideClass

und ein anderes welches meine Klasse wieder einblendet. ShowClass.

 

Beides in einem Script geht wohl nicht, da es nicht möglich ist die Sichtbarkeit der Klasse abzufragen. Aber so mit den beiden Scripten komme ich erstmal klar.

 

Was nun noch ein Problem ist, ich lasse die Stühle in einer Tabelle Zählen, so dass ich weiß wie viele Stühle in einem Block sind.

Wir haben Blöcke von A-Q.

 

Nun habe ich aber bei manchen Blöcken es so, dass dort ein Teil der Stühle des Blocks, sagen mir mal Block L, hinter dem Kurvenvorhang sind. Wenn ich nun also den Vorhang aktiviere, verschwinden die Stühle die hinter dem Vorhang sind, aber in meiner Tabelle zählt er diese trotzdem mit. Block L hat insgesamt 180 Stühle, wenn ich den Vorhang aktivere sind es aber nur noch 120 Stühle.  Wie kann ich der Tabelle sagen, dass Sie wirklich nur die Stühle zählen soll, die ich auch in der Zeichnung sehe? 

 

Über die Sichtbarkeitsabfrage als Filter geht es leider nicht, da der nur die Klasse abfragt und die Klasse Block L ist ja aktiv, nur es fehlen ein paar Stühle aufgrund des Vorhanges. 

Geschrieben (bearbeitet)

Bau die Logik in deine Zeichnung ein: Zeichne eine Fläche (Polygon, Rechteck oder ähnliches) auf der alle Stühle vor dem Vorhang drauf sind. Gib der Fläche einen Namen. Mit (LOC='Name') kannst du nun in deinem script die Stühle rausfiltern die vor-/hinter dem Vorhang liegen.
Auch in der Tabelle kannst du auf die Art die Stühle filtern und z.B. eine Tabelle machen mit Zustand Vorhang offen und eine mit Vorhang geschlossen.

Bearbeitet von herbieherb

Vectorworks 2025 - Architektur - Win 11

Geschrieben

In einem Script geht indem du zuerst den Status abfragst:

status = vs.GetCVis('deine Klasse')

if status in [-1,2]: #-1 Hidden, 2 Gray, 0 Visible
	vs.ShowClass('deine Klasse')
else:
	vs.HideClass('deine Klasse')
	

 

Für deine zweite Frage kannst du prüfen ob das Objekt sichtbar ist oder nicht. Dafür die Klasse des Objekts abfragen und dan wider mit GetVis https://github.com/Vectorworks/developer-scripting/blob/main/Function Reference/Functions/GetCVis.md ob die Klasse sichbtbar ist oder nicht. Wenn nicht sichtbar dann nicht zählen im Script. Oder direkt über den Filter einstellen das V = True, https://github.com/Vectorworks/developer-worksheets/blob/main/Articles/Search Criteria Format.md

VWX24 SP8 | Architektur | MacOS 13.5 | M2 Max

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,3Tsd
    • Beiträge insgesamt
      136,7Tsd
×
×
  • Neu erstellen...