# Marionette Monday Webinar Questions

## Recommended Posts

Hello all, the first webinar will be at 11:00 am EST on January 18 and will occur periodically until February 22, if you want to learn more about Marionette you should definitely attend! We will send out the recorded webinars after each session to the registered attendees, so even if you cannot make it to the live session, you should still register.

If you still have questions after the live webinars, please post them here. We will do our best to address them in the following sessions.

I hope you can attend!

Demo Files:

If you choose to view the webinar in its entirety, please take a moment to complete this survey to provide feedback directly to its creators: Survey

For your convenience and for easier searching later, the Q&A has been transcribed here as well as answers to a few questions that were not answered during the webinar itself:

-----------

Webinar Part I: Introduction

Are there practice classes/tutorials?

There are a few tutorials with exercise files on the Vectorworks Knowledge Base. There are also resources on our community forum.

Marionette is great for automating tasks. Today we only showed how a network could build geometry, but there are many other things that Marionette can do, such as querying a document, analyzing an object, or auto-filling names and object numbers, just to name a few.

Can Marionette randomize?

Yes. Marionette has a random node and we will be showing how it works in a later webinar.

Is it better to use Dim Nodes or Real Nodes?

When you are drawing real world objects like walls and slabs etc, I would recommend using Dim nodes. Also if you are planning to share networks with other people who may not be using the same document units you may want to use Dim Nodes. Otherwise, Real Nodes are fine. The important thing to remember is not to use BOTH Dim nodes and real nodes for measurements in the same network.

How would you use an existing point as the origin of your rectangle?

In the example we showed, a Point2 Input Node was used to create the origin of our rectangle, but it is easy to attach a point that already exists in your network. Instead of using a Point2 Input Node, you can use a Point 2D Node from the Points category. This node has inputs for the x and y values so they can be taken from the output of another node in your network.

If you want to base the point on an existing locus point, you can name that locus just as we named our polyline, and attach it to the definition with a name node. Then you can use a Get Location Node from the Locus category. This will turn your Locus into a point.

Can you replace the locus points in the point grid you made with other objects like symbols?

Yes, you can replace them with pretty much anything. The points that are generated by the network can be used as the center points of circles, the origin points of rectangles, or the insertion points of symbols.

Can we set a distance from edge to restrict points from hitting the poly edges?

Yes. There are probably several ways to do this, but the way I would do it is to create an offset version of the referenced poly with the Offset Poly Node and use THAT poly with the Is In or On Poly Node.

What's the Boolean output in the 'is in or on poly' node?

In scripting languages, Boolean is a term to describe either/or – a Boolean is always True or False. Any Conditional Node (a node that has “Is” in the title) always has a Boolean output. (Conditional Nodes are another type of data manipulation node that we will talk more about in later webinars.) In this case, the Boolean output is a list or true or false values that coordinates with the list of points that were supplied to the node. This true false list can be used with the Filter node to cull that list of points of false values. Usually this is the only output for this type of node, but this node also filters the list of points for you – that is why we used that output.

Is there a way to reverse the 'is in or on poly' node to only include points outside the polyline? Or is that a different node?

Sometimes nodes don’t do exactly what you want, but there are almost always ways to use them with other nodes to make them work for you. In this case, I would do this by using the Boolean output instead of the point output, using an If node from the data flow category to change the true values to false and the false values to true, and then applying this list to a filter node along with our original list of points. This may sound a little confusing written out like this, so I will try to touch on it in a later webinar.

Can you explain more about the difference between point and locus ie is the point only for calculations the locus is for placing an object?

A “Point” is a data type that can be manipulated in Marionette. It consists of 2 or 3 dimensional values intended to represent a position in 2D or 3D space. The difference from the “Vec” types (2D & 3D) in Marionette is that Vecs consist of “Real” values which are unit less while Points are always in document units. “Loci” are an actual Vectorworks drawing object. The “Locus” nodes (2D & 3D) in Marionette take Points (positions) and create Loci in the drawing. Loci have a position that could then be extracted using a “Get” node.

This is a graphical programming language - how can we get details like required parameters of an input variable - like int vs real for a rectangle? In C++ I would look to the definition of a variable to get this - where in Marionette?

Each node has a button in the OIP “Description” that lists each of the ports and what type of data its looking for, in addition to some explanation on what the node’s function is.

I want to model shipping containers for housing with modifications for the use situation (Left or right hand, sizes of openings etc.

This would be a really cool example of putting Marionette to use on modular architecture. Each container could be generated as a self-contained plugin object, or you could have a network that takes some input parameters, i.e., 20’ or 40’ container opening size and number of openings. And the result of the network would be the container geometry in the drawing, made from extrudes and other VW primitives. You could then further manipulate the containers manually. Sarah will be covering some of the required concepts over the next few sessions.

As you update nodes/update marionette, how will that integrate into our existing networks/marionette objects - especially if we've edited or created our own nodes?

Currently each instance of each node is completely independent and contains its entire script. So, if you place several copies of a single node type in a drawing and then change the script inside one of them, the others will be unaffected. This makes it really easy to play around and develop new nodes without fear of problems with existing networks. It also however poses challenges for maintaining libraries of nodes for sharing, etc. We are currently working on providing the best of both worlds in the future.

I am looking for a way to manage numerous focus points in Spotlight. I would like a formula to move groups of points to new positions, instead of changing each light to a different point each time I change a scene to render.

I imagine the solution to this would be similar to the simple example Sarah gave in the webinar today. Here are some thoughts, there is a node “Objs by Crit” in the library. You could use it to filter all or some subset of focal points in the drawing. Once you have the focal points you can easily move them to an absolute position using one of the nodes in the “Operations” category.

Are we going to be able to manipulate building objects such as walls, windows, doors etc.?

The library contains nodes for creating and manipulating Walls, Roofs & Slabs.

How can I put a wrapper into a palette so I can make a custom tool set for myself?

A custom node can be put inside a symbol definition which will automatically make it available from the Marionette tool popup. Files saved with nodes in symbols can be placed in the user’s library. These can then be accessed from by the Marionette tool.

What are the best places to get/share Marionette material? i.e. The Marionette tutorials at the Knowledgebase, the Marionette area of the Techboard, etc.

These are a good place to start:

Can Marionette be used to generate custom Hatches?

We have not created a library of nodes for creating or editing Hatches yet. The functions for doing this are exposed to the VW Python API which means this would be easy for someone in the community to implement and share.

Is Marionette specific to Vectorworks Architect?

No, Marionette is available in any Vectorworks module.

What version of Vectorworks is Marionette in?

Vectorworks 2016

How do you turn a network into a script, and can you place it in a script palette?

You simply right click on any node, then use Save Marionette as Python Network, then name the file and it will be saved as a .py file.

How do we know the kind of input to apply to a node?

Look at the names of the input ports. It isn't always blatantly obvious, but you can normally infer what you will need. If you are still a little confused, click Description in the Object Info Palette and the inputs will be explained there as well.

-----------

Webinar Part II: Intermediate

How does one put a custom curve, i.e. taken from a site plan, for example, into Marionette as an input?

She will cover this at some point, if not in this session then in the next. There are a few ways to do this. You can use the "Name" node from the input node category to get a named object from the document. You can also package a curve or any other object into a standalone PIO as control geometry.

If you have no start input for a series object, does it start at zero?

Yes

Can you change the wrapper class without unwrapping and rewrapping?

Yes, you can change any of the attributes in the attributes pallet also.

Just like redefining the class for any VW object?

Yes

How long did it take Sarah to be that proficient with Marionette?

Good question. Sarah came to Vectorworks already having experience with Grasshopper in school, so the answer to this question probably needs to be qualified, as they are very similar in concept and approach.

will you share that appendix page please?

I think to look for places in your practice that would benefit from automation. Repetitive tasks. Save your energy for design.

Does the C convention mapping true/ false to 1/0 apply to Marionette booleans?

Marionette uses Python convention. True and False are values of a proper Boolean type.

Your list of object type is all CAPS- significant, or not?

Not.

How do we know the default values in a function?

If you open the node they are listed in the script and also in the description.

What is the output of "Ungroup" - does it name each rectangle?

The output of the "Ungroup" node is a list of object handles -- in this case, handles to a bunch of rectangles.

You only have to select one node in a network to create a wrapper for the whole thing?

Yes, it will find the rest

Can wrappers with the same name that are not symbols actually be different?

The name of a wrapper is just a title. So, yes there would be no naming conflict.

Can a wrapper be made from multiple wrappers?

Yes, they can nest to any depth.

-----------

Thought I'd get my question in early; When creating a 2D polygon (or 3D polygon for that matter) how do you instruct what order the points are created?

The best way to assure the order of the points would be to use an ordered list node as the input to the poly node.

Can you set a condition that limits the minimum distance between adjacent rectangles?

Yes. One way to do this would be to take the sum of the first rectangle’s width and the dimension you want between the two rectangles. If you wanted to space them horizontally, you would use that value as the “x” for your creation point on the second rectangle.

where would you recommend going in order to learn the basics of marionette?

The Marionette forum hosts many posts from users and employees, such as Sarah and Marissa. It is a great platform for asking questions and reading already discussed topics, as well as seeing examples posted by the community.

Will you submit to AIA for previous seminars?

Yes, Marionette Monday, Part 2 was available for 1 AIA LU. If you attended live, please follow this link to provide us your AIA number and we will submit your credit: www3.vectorworks.net/Marionette_2-1-16_credit_submittal. If you were unable to attend Part 2 live, you can take this test to earn your credit: http://tinyurl.com/z2u7s8o

After creating a network and saving it as a symbol in your personal library, is it possible to send a completed network to another computer?

Yes, nodes, networks and networks in symbols all get saved in files like other VW objects. The files can be shared freely.

When you input your data request, is there a dropdown list of the records available, or do you just have to know exactly what to type?

Currently there is not a dropdown list of fields for the records. You would have to know what the field is, however the Data tab in the OIP can help you determine some of this information.

Are there any "output" nodes that can be used to display (non-editable) info, such as the results of mathematical operations, in the OIP?

Currently there is no way to display labels in the OIP. There are other ways of showing this information, though, such as the “Print List” node Sarah used in today’s webinar, which will display the information on the drawing area.

When creating the symbol, why not convert to group?

In this case she was using the symbol definition inside of the plugin objects. So, by changing the symbol definition, she can change the script for all the objects in one shot. If you were to convert to group when you inserted, the network would no longer be attached to the symbol definition, which would prevent it from updating when the symbol is edited.

Is there a way to programmatically get a list of all the fields in a record?

In short, yes. You could essentially loop through a record and output each field that exists in that record. This would be a great question to share on the Marionette forum, and I’m sure someone could give you an example.

-----------

Hello all, I just wanted to give everyone an update on the info given in the last webinar. At 12 min. 30 sec. of this webinar, I say that the command vs.RectangleN() can be given a variable name. This is not correct. This function returns None, so the variable would be equal to None. No matter what, it is necessary to use the vs.LNewObj() after the rectangle function in order to give the created rectangle a variable. I apologize for giving the wrong info, I hope I didn't confuse anyone!

When placing a Google map in the file this way, does it place the image in the correct geographic location?

Yes, It obtains the lat and long from the Heliodon. If the Heliodon is rotated, the map comes in similarly rotated.

Is the Marionette.py file automatically created and updated?

It's copied into the user folder when Marionette runs. But, It's not changed in any way.

Can you please repeat the context/definition of the python paragraph called "def RunNode(self):"

The RunNode function defines the functional behavior of the node. It "maps" input values to variables and performs operations on the variables, then maps the results to output values.

How does the scripting language know where a block of code ends? i.e. Java has { }...

White space is significant in Python. It uses indentation to specify scope.

In your Filter example you left the Else alone. Shouldn't that have been reversed or deleted?

Not necessary because the logic in front of the Else() was inverted.

Missed a couple minutes because of internet failure - but do all VW commands have a corresponding Marionette or Python function?

Many commands in VW have a function call in the API. http://developer.vectorworks.net/index.php/VS:Function_Reference

Can i use a smaller/ nearer area in google maps?

You can change the “Zoom value” setting in the Marionette definition. However, Google does impose some limits.

Will you post the Marionette resource page again? Thanks

www.vectorworks.net/marionette (marionette resource page)

www.vectorworks.net/sciencefair (info. on science fair competition)

After you've repurposed a node (SetName for example), where does it live? i.e. how do you access it for future projects?

It's in the file you are working in as an instance of a plugin object. You can put it in a symbol and put the file in your default library user folder to make it available to the tool popup.

You're calling the variable string - I would call it name, can you do that?

You can call it whatever you like

"rectangle" has double quotes the next SetDescription is in single quotes. does it make a difference if you use double or single quotation marks?

There are 3 ways to specify strings in Python! ' ', " ", """ """. Just remember that the quotes have to match at the beginning and end of the string value.

How would we know that h = object and name = string? Is this defined somewhere else?

These are defined in the “Params” class (the upper, first indented section) of the Python script of the Marionette node.

Where are the best places to learn the basics of Python? Or would doing that be a bit of overkill for the purposes of using Python with Marionette?

Not overkill at all! Marionette can use any code that others have written in Python. There are tons of tutorials for free online. Go to www.python.org

Naming convention is that functions start with a capital letter for the first word but variables lower case?

You can define your own naming conventions, just remember that Python is case-sensitive, so a variable called “Height” is not the same as a variable called “height”.

You are calling vs. functions - does that mean that the whole thing is dependent on vector script macros? (also: What is the relationship between Python, VS, and the core of VW?)

VectorScript was the first scripting language for Vectorworks. Python was added a few years ago and calls into the core of VW using the same functions. Another way of saying this is that the Vectorworks Python interface uses the same API as the Vectorscript interface. We had hundreds of functions that had been exposed over the years to allow VectorScript to control Vectorworks. When we created the Python system, we made these all available. The good news here is that if you already know Vectorscript, you’re already familiar with a great deal of what you need to be successful in Python.

Where do you find the list of definitions, i.e. T=type, PON=pluginobject name, etc? (also: To identify the parameters within Vectorworks, how do you find out that PON means plugin object name, for example?)

These are VectorScript criteria. It’s probably a good idea to become familiar with the VectorScript / Python developer page at http://developer.vectorworks.net/index.php/VectorScript . The “function reference” available at that page gives you a listing of all the function calls available in VectorScript/Python interface to Vectorworks (its “API”). There’s also an “appendix” which lists a lot of constant values (in this case criteria values). See also http://developer.vectorworks.net/index.php/VS:Search_Criteria

How, in general, do you identify the APIs available out there on the internet? VERY general question, I know!

Python is popular among thousands of developers in various industries. There is an incredible amount of free code out there. I would just do a google search, and also go to www.python.org .

What is a "namespace"?

It is a "chunk" of definitions (functions, types, ect,). It's a way to stop confusion resulting from duplication of names. Here is general overview: https://en.wikipedia.org/wiki/Namespace

Is there a way to specify WHICH Heliodon to use, if there is more than one present in a file (for the purposes of shadow studies/renderings)?

There are several ways to do this. Name the heliodons, for example, and get a handle to the heliodon of interest based on its name.

--------------

We are constantly developing Marionette and there will be many significant upgrades in the next major release of Vectorworks. Some of that will be driven by your input, so please send us your questions and input!

AIA Credit info:

US AIA Members Can Earn 1 AIA LU.

Those who viewed the webinars live can submit their AIA numbers for us to process:

Those viewing a recorded webinar can take this test to receive credit:

And we’ll of course provide updated info for Webinar 4.

Edited by sbarrett

Hi,

Time "EST", which Country. We have EST here in Australia.

Ok just looked at your profile and Columbia USA.

Will they be recorded for those like me in Australia to watch?

Thanks

Edited by Alan Woodwell

Will they be recorded for those like me in Australia to watch?

Alan: as sbarrett says, if you register for the webinar but can't attend the live session you'll be sent a private link of the recorded webinar so you can watch it whenever. But you have to register in order to receive the link. Go register!

Fantastic, will also want to watch the recorded version here in China ...

Where does one register, there is nothing showing on the events calendar...

Here is the link where you can register:

Added all Marionette Monday evens and registration links to the community board calendar.

Do you have to register for each one separately?

KM

I believe so yes. We want to do more serial webinars in the future but the system we use at the moment (GotoWebinar) treats each one as its own event.

My apologies for the rant. Here are my feelings about the experience so far-

- having to register for each Marionette Monday separately - thumbs down.

- not having a way to register as a Service Select member through the Service Select portal - thumbs down (I shouldn't have to do anything more than say yes, I'm attending. NV already has my business and all of my other pertinent details. In fact the webinar isn't even flagged when you log into the Service Select portal)

- not having Entertainment Design in the Industry drop down - thumbs down and a huge marketing fail.

- getting an email invite from my distributor - big thumbs up. They are spectacular.

I've been a VW user since Minicad 5 (1993-ish). I also have a full Designer license with Renderworks (ie. the complete package). I am a tiny business so VW represents the biggest investment I've made over the years. I really wish NV would treat me like we have a relationship instead of just another person to market to. My distributor is great at making me feel like part of a community, but NV consistently undermines this (Jim, Marissa and the other admins/members on this community board are the shining exceptions). Every offer is so generic. I consider this a significant marketing shortfall on NV's account.

Kevin

(PS. and being cut off by the Forum board when posting. Please, please speed up the new forum implementation :-) )

Edited by Kevin McAllister

Agreed. The fact that users have separate logins for Service Select. the Community Board, Student Portal and then having to re-enter their contact info for webinars and various events as above is not how we should be doing things.

I think a lot of this has come from how fast the marketing department has grown and changed even since I joined. Multiple attempts to start customer outreach projects came from 50 different angles and service providers which was great for speed but bad for consistency.

Luckily, I see a meeting on my calendar about unifying all web services under a single banner... I'll bring this thread to a marketing managers attention.

Thanks Jim. You and your board colleague are single handedly changing the NV culture. I think others will agree it doesn't go unnoticed from out here. I appreciate your efforts daily!

Kevin

Thank you, I'm always glad its appreciated. Additional good things are going to be happening in that regard soon, I'll announce as soon as I am able.

Thanks Jim. You and your board colleague are single handedly changing the NV culture. I think others will agree it doesn't go unnoticed from out here. I appreciate your efforts daily!

Kevin

I'll Second this.

Edited by Alan Woodwell

Sorry I am real dumb because all I see in the calendar from Columbia is a 4 day course for \$700 or \$1250.

Is this the webinar you are talking about??

Edited by Alan Woodwell

Agreed. The fact that users have separate logins for Service Select. the Community Board, Student Portal and then having to re-enter their contact info for webinars and various events as above is not how we should be doing things.

I think it would be good to have the option to tie them together, but it not be mandatory. I wouldn't want my Community Board ID to be tied to my day job. People often move between larger practices and becomes a challenge to manage. But for one man shops, I can certainly see the appeal.

Sorry I am real dumb because all I see in the calendar from Columbia is a 4 day course for \$700 or \$1250.

Is this the webinar you are talking about??

@Alan: here's a link to the Announcement page with all four webinar links:

And as JimW noted, they have also been added to the Community calendar at the right side of the page, click on either 'January' or the individual dates, starting with the 18th, to see the webinar registration link(s).

Thanks you very much for this and look forward to them.

Being from Australia is ET North America East coast time?

Thanks again.

Pretty close Alan. There is one more for us in Canada called Atlantic time zone. If you google North America time zones there will be plenty of pics that will give you a good idea of where EST is.

Due to user feedback, if you register and attend any of the webinars in this series, you will automatically be registered for any subsequent webinars in that series.

Thanks JimW, that's good to hear.

One other suggestion, since there haven't been many (any?) new training videos recently uploaded to the Service Select portal, how about automatically providing these webinar recordings for all VSS subscribers, regardless of whether or not they registered for the webinar in the first place?

Non-VSS subscribers would still have to register to get access to the recorded webinars, but VSS subscribers would not.

Just a suggestion.

Thanks JimW, that's good to hear.

One other suggestion, since there haven't been many (any?) new training videos recently uploaded to the Service Select portal, how about automatically providing these webinar recordings for all VSS subscribers, regardless of whether or not they registered for the webinar in the first place?

Non-VSS subscribers would still have to register to get access to the recorded webinars, but VSS subscribers would not.

Just a suggestion.

I will be announcing a few things related to this! We're giving our content creation and organization systems a good hard shake.

When does the link for those of us unable to attend the Webinar get sent out?

Due to user feedback, if you register and attend any of the webinars in this series, you will automatically be registered for any subsequent webinars in that series.

We're giving our content creation and organization systems a good hard shake.

Thumbs up to all of this!

KM

+2 to everything

We (SS, one man's and Entertainment) are all key members and boosters of VW.

When does the link for those of us unable to attend the Webinar get sent out?

I also would like to know...

## Create an account

Register a new account