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

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.

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.

×
×
  • Create New...