Jump to content
Melde dich an, um diesem Inhalt zu folgen  
Chritian W.

Marionette, Layer Popup als Dialog

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. 

Diesen Beitrag teilen


Link zum Beitrag

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

Diesen Beitrag teilen


Link zum Beitrag

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
	

 


Freundliche Grüsse

 

Manuel Roth

___________________________________________________
VW21 SP2 | Architektur | Windows 10

Diesen Beitrag teilen


Link zum Beitrag

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 😀

Diesen Beitrag teilen


Link zum Beitrag

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

 

Diesen Beitrag teilen


Link zum Beitrag

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Melde dich an, um diesem Inhalt zu folgen  
  • Forenstatistik

    • Themen insgesamt
      16.369
    • Beiträge insgesamt
      79.915
×
×
  • Neu erstellen...