Zum Inhalt springen

Marionette, Layer Popup als Dialog


Chritian W.

Empfohlene Beiträge

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

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

  • Like 1
Link zu diesem Kommentar

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
	

 

  • Like 1

Freundliche Grüsse

 

Manuel Roth

_________________________________________________
Vectorworks 2022 SP3 | Architektur | Windows 10

Link zu diesem Kommentar

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

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
      23,5Tsd
    • Beiträge insgesamt
      121Tsd
×
×
  • Neu erstellen...