Marissa Farrell

Marionette Maven

1,242

1. Finding Polygon Center Point

I can answer your first two questions quickly, and I'll get to the third one later today after I wake up a bit more 1) I'll have to look at Get Center. I don't know who wrote it initially, and I haven't really dove into the logic of it. I think there's a better way to do this anyhow, I'll try to come up with a fix and post it here. EDIT: I think Get Center works. I'm getting correct results. Can you explain why you think it's incorrect? 2) Get Gravity Center is broken. It's not using the correct function. Again, I'll post it here once I'm sure it's working. Note on the node once I post it: It probably won't be accurate for Multiple Extrude objects, which is why I haven't already posted it. I've been trying to figure out if I can get it to work for them. So, for question 3, once I get a better handle on these things, I can hopefully answer this as well for you EDIT2: Attached file with a correct Gravity Center node. NOTE: This node will not work on polys. Use Get Center from the Poly3D category instead.
2. Requests/Enhancements

Patrick, With regards to your suggestion for the Curve node using Cubic/Bezier modes, since this node produces a NURBS curve, I don't think it's as simple to give those options. I can, however, modify the poly nodes to behave in this manner, and I've already begun doing so. NURBS Curves use a boolean called "byFit" to determine whether it's a curved index or not, and does interpolation to calculate the line, at least to my knowledge. I'll attach the modified poly nodes to this post once I complete them.
3. Finding Polygon Center Point

I'm attaching a file with a node, Centroid2D, I haven't taken the time to handle unit conversions (it appears that the VS function doesn't take them into account) so this node in its current state works with Feet/Inches as document units. If you're working with millimeters, just take out the "/25.4" in the x and y lines, and if you're working with other units, use the factor to convert from millimeters to whichever other document units you're using. I'll get around to doing error handling on this at a later time. Hope this helps!
4. Door Tool Modifcation

I'm running into an issue where I can't figure out which direction the door swings, which is unfortunate. I do have it working with Bi-Part now, and I suppose the worst case scenario is that you'd have to mirror the drawn-in swings... I'll keep poking around to see if I can figure out a way to see where the door swings from though!
5. Door Tool Modifcation

Here's my progress so far. This allows you to just run the script and it will look for any doors that already exist in the drawing, for simplicity. That way you still get all of your door options, and the swing is just added on. This does conflict with the hybrid aspect of the door, these lines will show in 3D view as well as 2D. Maybe classing them could help for final drafts? Looking into showing the door thickness, checking the swing configuration, etc. I'll keep working on it when I can. (I'd be careful using this script in a file that you're really working on because if you have any configurations other than Swing Simple, it's not going to be accurate on those doors... Plus it's just not done ) So essentially, the bulk of the math is done, just need to refine it. Let me know if there are any configuration types in particular that you want me to focus on, since I'll have to do them individually I think. Note: The error is due to setting attributes with the Attributes node, because there isn't currently handling to not try to assign fills to lines. It can be ignored, the script still runs to completion.
6. Door Tool Modifcation

Hi Tom, Could you give me an image showing how you'd like this to look? I may be able to provide you with some help on this using Marionette. I've already started my experiments, and it's coming along to the point where I just need an example to work from. Thanks!
7. Using Marionette for automated average grade calculations?

So I touched on all of those wishes you had with the attached revision. The worksheet specified should update accordingly (node about "Create Worksheet", if the worksheet already exists, it will provide the handle to the worksheet without changing anything about the existing worksheet, I'll clear that up in the description later.) I changed the locus node to a Symbol node, which allows you to choose which symbol is inserted by name. I've boxed that in the script in yellow. Modification of the text was implemented using the Set Text Orientation, I also included the "Set Text Properties" node to allow you to define justification/spacing/etc. The description gets cut off as to what the parameters are in the dialog box currently, but if you open the script inside the node, you can read the values associated with justification. Let me know how this works for you!
8. Using Marionette for automated average grade calculations?

Yes, I wrote the Site Z Height as well as the worksheet nodes. I've actually been working to expand our default library for Marionette. Your further requests are easy to implement, and next time I hop onto Vectorworks I'll dive in
9. Using Marionette for automated average grade calculations?

I'm attaching my addition of a script to your file in order to get the information you're querying. I didn't incorporate the worksheet nodes into this file, but you can bring them in from my previous one and they should work with this one as well, as long as you wire them correctly. I had to name both your site model and building footprint in this circumstance, although there are other ways to grab the handle to the objects... I just find this more consistent. I created the node "Site Z Height" to get the Z value at each midpoint, it appears to have the exact results of your stake objects, so I'm feeling confident. (The slight difference is the numbering of the midpoints, if this matters, it can definitely be adjusted.) If you need more help after playing with this a bit, feel free to reach out. I hope this was helpful! Marissa
10. Using Marionette for automated average grade calculations?

In short, ABSOLUTELY. I'm attaching a file that starts the process, I don't have a site model to work with at the moment (if you have a small file you could share, I could work with that) In this case, the building is composed of walls. We could explore using other objects as well - spaces, etc. (It all depends on how your footprint is created/best represented) There are functions available in Vectorscript that I think would work to get your Z value at the points on the site model, they aren't currently included in the Marionette library, but I can create them. And obviously my data attached to the text & worksheet isn't accurate to what your template is, but I'm demonstrating that we can put it there if we can extract it. Does this look like something that would help solve your problem?
11. Text object listed in spreadsheet

I think the problem with feature enhancements not making it in is that the priority of other fixes takes precedence, and sometimes, maybe even more than I think, that precedence isn't determined only by internal employees. We have a long, long, long list of enhancement requests that we sort through; we consider the time it will take to implement, determine the priority, and hopefully get to include them in a release at some point. We definitely take into account how many people have wished for the items, but not everything finds its way in as soon as one would hope. It's also good to remember that Marionette solutions can be created and shared MUCH more frequently than Service Packs or Versions, and most of the time, involved enhancements won't be released in Service Packs, for fear of breaking something important, or for time constraints, or for some other logical reason, and instead end up in a new Version altogether. That's why I try to solve what I can with Marionette (and just to claim my ownership, I created that script, and it can be found here ), to at least attempt to satisfy users in our community. I do agree with you that it would be awesome to include everything that can be done with Marionette in the application itself, and I assure you, I'm working to do what I can to get everything I can figure out with Marionette included in the base package, but until I can expand my knowledge and weight in development choices, most of what I want probably won't happen as quickly as it could I still have a lot to learn when it comes to compiled languages, but I'm hopeful to expand my knowledge and help you and all of the other users however I can. EDIT: After speaking with Jim, I realized I should clarify that I hope to create actual tools that perform the same way that my Marionette scripts do, not just include the Marionette scripts in the software.
12. Text object listed in spreadsheet

You're correct in the case that this specific script only goes in one direction to update the worksheet, however it's also possible to go the other direction to create/update text objects in the document from values in a worksheet. I think the problem with Text Objects vs. objects such as Callouts is that Callouts and the like generally have a hidden record attached to them which holds the information, whereas text objects do not. This is definitely a limitation for the situation you bring up. I shared my script because for the situation Xsasinator was in, it seemed to be the simplest solution for his specific request. My script won't solve everyone's problem, but for the time being, it was helpful to him. As for your statement about devoting Marionette efforts to much greater things, Marionette was introduced as a tool to allow users further control and a simpler approach to scripting. It's completely up to the user on how they would like to use it, as simple or as complex as they would like. I don't think it's fair to suggest that anything Marionette does is less than great, if it solves a problem or provides an alternative workflow, I think it's completely appropriate to create.
13. move a Marionette object

I'm investigating this for you. Right now, since a Marionette Object essentially uses its own coordinate space, I don't think the object would be able to follow the door using your current script. I also attempted to work with using a door as Control Geometry, but had no success since I believe that has to be 2D. I do have an idea, though. I'll update you if I get it working.
14. VS in node error

RickR, Where are you seeing conversion issues most frequently? Are you seeing them using your soft goods example? Also, for your default values, how necessary is it to have units adhered to them? In the OIP, these values will all adhere to document units anyhow, so they should behave the same as if you were to use any other object in the OIP. Just curious.
15. Text object listed in spreadsheet

Marionette might be able to help you with this. I'm attaching a simple file with some text objects and a Marionette script. This script will traverse through all text objects and insert their values into Column A. This script can be modified to better suit your needs. If you're interested in trying this method, and want to give me more information as to what else you need accomplished (i.e. appending to an existing worksheet, adding more information, only adding strings that are numeric, etc.) I'd be more than happy to help.
16. Rounded Rectangular Prism

I've created a wrapper, that I will hopefully soon consolidate into a node, that creates a rounded rectangular extrude (you could also think of it as a rectangular extrude with same-radius fillets on all edges) My original RRExtrude node is inside of the wrapper. If you're interested, running it alone will produce sharp corners.. hence the creation of this wrapper to smooth them. Feedback appreciated.
17. Rounded Rectangular Prism

Alan! How sneaky! I'm assuming this is the result of negative inputs. Do you think I should do error handling on this or leave it as is?
18. Rounded Rectangular Prism

I think I've got it. Here's the standalone node - with all of my ugly edits and test cases still in the script guts... well not all of them This file has both the network and a Marionette object. I'll clean up the script at some point... maybe
19. Slider control

Alan, Alan, Alan, Of course you have to bring this up! We have a slider in early development right now. I can't give you any idea as to when it will be available to users, unfortunately it's not as simple to add as creating new nodes is... since we have to build it into Vectorworks itself. I'm in the first stage of testing on it, so practice your patience! It will come about eventually
20. Randomly place pyramids inside sphere

We don't currently have an active list of characters to avoid while naming nodes, for now I would suggest avoiding all characters that aren't letters or numbers. This has to do with the way Marionette is written and executed, I think the names are actually converted into something similar to variable names (I don't really remember, though. I may be wrong), so special characters will essentially mess up how the script runs. Somewhat unfortunate, I'll look into if we can try to modify this at all.
21. Dell Precision M6500

Just to chime in with no implication that I know anything at all - I was using a FirePro W5000 and it was a terrible experience when it came down to rendering. In my case, if I had light objects in my document and turned all of them off in the visualization palette, I would get a crash. Every time. Jim may still have better insight for you, but I'm pro NVIDIA.
22. Get Circle Node

Hi Dom! In my version of SP2 this was already changed. This is the code in the release of SP2: def RunNode(self): h = self.Params.circle.value points = vs.GetBBox(h) top_left = points[0] bottom_right= points[1] x1 =top_left[0] y1 = top_left[1] x2 = bottom_right[0] y2 = bottom_right[1] final_x = (x1 + x2)/2 final_y = (y1 + y2)/2 #rads = abs(x1)+abs(y1) #TODO: remove rads = (x2 - x1)/2 center = (final_x,final_y) self.Params.centerPt.value = center self.Params.radius.value = rads Which with my brief testing works correctly. (Also, notice the "#rads = abs(x1)+abs(y1) #TODO: remove", it appears whoever fixed this way back when never completely removed the comment I'll check to see if I can take this line out soon to clean it up a bit.)

24. Reporting marionette information on a worksheet

Both of these are possible, although I'm not sure if all of the nodes you'd need have been created/shared. I do know that ahedley shared his worksheet nodes in his node pack that he posted a couple of months back, so those may be useful, I just haven't checked them all out. To place values in a worksheet you would want to "set value" on a cell, and to get it would be "get value". I'm out of the office until the 24th, but if this doesn't get resolved before I get back, I can mock something up.
25. Debug

I'm going to have to go ahead and disagree with Sarah (sorry!), because I also have a hard time selecting wires that are definitely correct. Since I know Alan uses Windows, and it appears that Rick does as well, and Sarah uses Mac primarily, we may be able to attribute it to a Windows ickiness.