Chritian W. Geschrieben 21. Februar 2021 Teilen Geschrieben 21. Februar 2021 Es gibt den Node Layer Popup - hat jemand eine Idee, wie man den so umschreiben kann, dass es ein „User Interaction - Dialog wird. Es würde auch helfen, wenn ich einen Node hätte, der einfach eine Liste aller im Dokument befindlichen Layernamen (nicht Nummern) ausgibt. Dann könnte ich den einfach an den Node Popup-Dialog anbinden. Link zu diesem Kommentar
m.graf Geschrieben 21. Februar 2021 Teilen Geschrieben 21. Februar 2021 Hallo Chritian W. genau das hab ich vor kurzem auch gebraucht und dafür diverse Stunden rum probiert, bis ich auf eine Lösung gekommen bin: Noch nicht perfekt - aber vielleicht ein funktionierender Anfang: Es gibt aber auch "Fallstricke": Es werden keine leeren Ebenen angezeigt Layoutebenen hab ich rausgefiltert. (Brauchte ich beides nicht) Wenn es nur eine Konstruktionsebene gibt, scheitert das Script (falls es später als Menübefehl umgebaut wird). Lässt sich aber auch lösen. Gruß M. Graf Popup_Dialog.vwx 1 Link zu diesem Kommentar
Chritian W. Geschrieben 21. Februar 2021 Autor Teilen Geschrieben 21. Februar 2021 Vielen Dank, ganau das wollte ich erreichen. - aber wenn ich dass so sehe war ich von der Lösung sehr weit entfernt. Link zu diesem Kommentar
Manuel Roth Geschrieben 22. Februar 2021 Teilen Geschrieben 22. Februar 2021 Ich habe vor einer Ewigkeit einmal einen Node geschrieben, der eine Ebenenliste erstellt. Leider kann ich kein VWX teilen, weil ich auf einer Studentenversion arbeite, aber du kannst den Code unten einfach in ein beliebiges Node kopieren und es sollte funktionieren. #MRoth @Marionette.NodeDefinition class Params(metaclass = Marionette.OrderedClass): #APPEARANCE #Name this = Marionette.Node( 'Layers' ) this.SetDescription('Generates a list of all layers of the desired type.') #Input Ports #OIP Controls t = Marionette.OIPControl( 'Type', Marionette.WidgetType.RadioButton, 0, ['Konstruktionsebene', 'Layoutebene', 'Beide']) t.SetDescription('The layer type to be returned.') #Output Ports i = Marionette.PortOut('h') i.SetDescription('The list of layers.') #BEHAVIOR def RunNode(self): #inputs t = self.Params.t.value #script layers = [] h = vs.FLayer () while h != 0: if vs.GetObjectVariableInt(h, 154) == t + 1 or t == 2: layers.append(h) h = vs.NextLayer (h) #outputs self.Params.i.value = layers 1 Freundliche Grüsse Manuel Roth _________________________________________________ Vectorworks 2022 SP3 | Architektur | Windows 10 Link zu diesem Kommentar
Chritian W. Geschrieben 22. Februar 2021 Autor Teilen Geschrieben 22. Februar 2021 Bestens, dass spart richtig Platz - für alle die den Code auch verwenden - einfach den Get Layer Name und den Popup Dialog hinten dran hängen 1 Link zu diesem Kommentar
m.graf Geschrieben 22. Februar 2021 Teilen Geschrieben 22. Februar 2021 ich hab's mal den Text von Manuel Roth in eine neue Node (gewerbliche Lizenz) kopiert und die Popup Node auch mit angehängt. Direkt als Node geschrieben, ist es natürlich besser als mein umständliches Marionette Netzwerk . Vermute aber das auch bei dieser Variante mind. einer meiner festgestellten Fallstricke (um nicht zu sagen Bug's) bei Nutzung als Menübefehl noch auftaucht: Gruß M. Graf Layer.vwx Link zu diesem Kommentar
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden