Jump to content

Marionette Node to insert symbols in rows


Recommended Posts

This is a great example of a simple "Bread and Butter" script as I like to call them, a script that automates a simple day to day task and saves the user a few minutes. Most people think of flashy, curvy geometry when you mention graphical scripting. I think the fact that Marionette is integrated into VW and allows these day to day tasks to be automated is really useful. Thanks for sharing.

Link to comment
  • 6 months later...

#python code. Copy this in your existing node. It just lists ALL Symbols without caring about symbol folders. Like always whithout warranty.

@Marionette.NodeDefinition
class Params(metaclass = Marionette.OrderedClass):
this = Marionette.Node( "InsertAllSymDefinitions" )
this.SetDescription( 'Shows all Symbol definition' )
offset = Marionette.PortIn( (1), "offset" )
offset.SetDescription( "offset of columns and rows" )
columns = Marionette.PortIn( 4 ) 
columns.SetDescription( "Number of columns" )
angle = Marionette.PortIn( (0) )
angle.SetDescription( "angle" )
symbols = Marionette.PortOut()
symbols.SetDescription( "the created symbol preview" )
this.SetLinksObjects()

def RunNode(self):

versatz = self.Params.offset.value
spalten = self.Params.columns.value
angle = self.Params.angle.value

x=0;y=0;zeile=0;c=1

symnames=[]
res_list,num_items=vs.BuildResourceList( 16, 0, '')

for i in range(num_items):
	res=vs.GetResourceFromList(res_list, i)
	if res !=vs.Handle(0):
		t=vs.GetType(res)
		if t ==16:
			symnames.append(vs.GetName(res))

#vs.AlrtDialog(str(symnames))

for n in symnames:
	vs.Symbol(n,x,y,angle)
	vs.Locus(x,y)
	x=x+versatz
	zeile=int(c/spalten)
	y=zeile*versatz	
	if c % spalten ==0:
		x=0
	c=c+1

self.Params.symbols.value = vs.LNewObj()

Link to comment
  • 7 years later...

Hi @DomC,

ich habe diesen Code eingefügt, leider ergibt der Node keine Symbole... Ich komme leider nicht drauf wieso das nicht funktioniert?

 

@Marionette.NodeDefinition
class Params(metaclass = Marionette.OrderedClass):
	this = Marionette.Node( "InsertAllSymDefinitions" )
	this.SetDescription( 'Shows all Symbol definition' )
	offset = Marionette.PortIn( (1), "offset" )
	offset.SetDescription( "offset of columns and rows" )
	columns = Marionette.PortIn( 4 ) 
	columns.SetDescription( "Number of columns" )
	angle = Marionette.PortIn( (0) )
	angle.SetDescription( "angle" )
	symbols = Marionette.PortOut()
	symbols.SetDescription( "the created symbol preview" )
	this.SetLinksObjects()

def RunNode(self):

	versatz = self.Params.offset.value
	spalten = self.Params.columns.value
	angle = self.Params.angle.value

	x=0;y=0;zeile=0;c=1

	symnames=[]
	res_list,num_items=vs.BuildResourceList( 16, 0, '')

	for i in range(num_items):
		res=vs.GetResourceFromList(res_list, i)
		if res !=vs.Handle(0):
			t=vs.GetType(res)
			if t ==16:
				symnames.append(vs.GetName(res))
		
	#vs.AlrtDialog(str(symnames))

	for n in symnames:
			vs.Symbol(n,x,y,angle)
			vs.Locus(x,y)
			x=x+versatz
			zeile=int(c/spalten)
			y=zeile*versatz	
			if c % spalten ==0:
				x=0
			c=c+1

	self.Params.symbols.value = vs.LNewObj()


image.png.24eabbb9e7240aa712e0cd231a5d1334.png

Link to comment

Oh, this is an old code and not very nice one. Without testing:

1. The vs.GetType should replaced by:

vs.GetTypeN(res)


2. The node returns not the Symbol Name. That means the node itself insert the Symbol. In fact it looks, like the output just returns the last inserted symbol. Which means the node should insert the symbols in the number of rows and should do the job but not returning the resulting symbol handles. With that node, you can't use the output useful disconnect symbol node and print debug node.

Link to comment

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.

×
×
  • Create New...