Jump to content
Gregi

Dynamic Popup Node with Worksheet

Recommended Posts

Hello everybody

 

I would like to create a "dynamic" Popup Node, which uses Content of a Worksheet.

It works pretty good, but its not refreshing the Popup-List in the OIP, but the output content is the correct one.

So i guess I have to delete the cache of the node or something like that. Is there a way to do so?

 

The Script in the Node:

#gim 2020-11-20
@Marionette.NodeDefinition
class Params(metaclass = Marionette.OrderedClass):
#APPEARANCE
	tabname = 'Spot Standard' #Name der Tabelle
	tab = vs.GetObject(tabname) #Handle zur Tabelle
	(numRows, numColumns) = vs.GetWSRowColumnCount(tab) #Zählt die Anzahl Zeilen und Spalten
		
	def frange(x, y, jump): #x entspricht der Startzeile in der Tabelle, y der letzten Zeile, jump ist die Schrittgrösse
		while x - y <= .000001:
			yield x
			x += jump

	list = []
	list = [n for n in frange(2, numRows, 1)] #erstellt eine Liste, welche Zeilen aus der Tabelle ausgewählt werden sollen
		
	Artikelbeschriebe = []
	Artikelnummern = []
	for i in range(len(list)):
		Artikelbeschriebe.append(vs.GetWSCellFormulaN(tab, list[i], 1)) #Die Beschriebe sind in der ersten Spalte
		Artikelnummern.append(vs.GetWSCellFormulaN(tab, list[i], 2)) #Die Nummern sind in der zweiten Spalte

	#Name
	this = Marionette.Node( 'Popup' )	
	this.SetDescription('Zeigt ein PopUp mit den Werten aus der Tabelle "Spot Standard" und gibt Name und Artikelnummer weiter')
	
	#Input Ports
		
	#OIP Controls
	input = Marionette.OIPControl( 'Popup', Marionette.WidgetType.Popup, 0, Artikelbeschriebe)
	input.SetDescription('Die Auswahl aus der Tabelle "Spot Standard", Spalte 1')
	
	#Output Ports
	outputs = Marionette.PortOut('sArtikel')
	outputs.SetDescription('Artikelbeschrieb')
	outputn = Marionette.PortOut('nArtikel')
	outputn.SetDescription('Artikelnummer')
	
#BEHAVIOR

def RunNode(self):
	#inputs
	input = self.Params.input.value #Integer der Auswahl
	Artb = self.Params.Artikelbeschriebe
	Artn = self.Params.Artikelnummern
	
	
	#script
	outputs = Artb[input]
	outputn = Artn[input]
	
	#Aktualisierung der Wertetabelle
	tabname = 'Spot Standard' #Name der Tabelle
	tab = vs.GetObject(tabname) #Handle zur Tabelle
	(numRows, numColumns) = vs.GetWSRowColumnCount(tab) #Zählt die Anzahl Zeilen und Spalten
		
	def frange(x, y, jump): #x entspricht der Startzeile in der Tabelle, y der letzten Zeile, jump ist die Schrittgrösse
		while x - y <= .000001:
			yield x
			x += jump

	list = []
	list = [n for n in frange(2, numRows, 1)] #erstellt eine Liste, welche Zeilen aus der Tabelle ausgewählt werden sollen
		
	Artikelbeschriebe = []
	Artikelnummern = []
	for i in range(len(list)):
		Artikelbeschriebe.append(vs.GetWSCellFormulaN(tab, list[i], 1)) #Die Beschriebe sind in der ersten Spalte
		Artikelnummern.append(vs.GetWSCellFormulaN(tab, list[i], 2)) #Die Nummern sind in der zweiten Spalte
	
	#outputs
	self.Params.input.value = Artikelbeschriebe
	self.Params.outputs.value = outputs
	self.Params.outputn.value = outputn

 

Popup mit Werten aus Tabelle_2020-11-21.vwx

  • Like 1

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


 

7150 Riverwood Drive, Columbia, Maryland 21046, USA   |   Contact Us:   410-290-5114

 

© 2018 Vectorworks, Inc. All Rights Reserved. Vectorworks, Inc. is part of the Nemetschek Group.

×
×
  • Create New...