Jump to content
Sign in to follow this  
DomC

Marionette Node to insert symbols in rows

Recommended Posts

Places a Marionette object, which contains symbols from a specific symbol folder. Offset and rows, can be defined.

handy for a quick and printable preview of symbols in a specific folder.

Edited by DomC

Share this post


Link to post

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.

Share this post


Link to post

This is really handy and i use it a lot.

I also want to modify this, so that it will insert all symbols, not only one folder at a time. However i can´t find a way to do this.

Anyone got any ideas?

Thanks!

Share this post


Link to post

#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()

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

 

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.

×