Jump to content

Marissa Farrell

Marionette Maven
  • Content Count

  • Joined

  • Last visited

Everything posted by Marissa Farrell

  1. 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.
  2. 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
  3. 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.
  4. 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.
  5. 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.)
  6. So I played with your file and hopefully this can help to point you in the right direction. As for your issue with it producing NURBS surfaces, I replaced the Tapered Extrude node with one that will be updated in the default content soon which outputs Generic Solids (just as the tapered extrude command does). As for your questions: 1) Currently, not with the default content. I've been working to find the best solution to this and will update you if anything changes. 2) I've added some nodes to your network that hopefully can help you understand the process of moving in 3D with random values. I used the Random Node, Point 3D, Rotate List, and Move to show a demonstration. My example isn't perfect, though, as some of the pyramids still pop out of the bounds of the sphere. More math will be required. (you can change the int node with the thicker line style to kind of see what I mean) The move node takes in a vector, just to help avoid any confusion. Let me know if you need further explanation. 3) I've also added a "Get 3D Info" node to your network to help with this. In the case of a sphere, the radius would be half of height or width or the difference between top and bottom Z (in this case, 5). Again, if you need a deeper explanation, feel free to reach out! I hope this was helpful Marissa
  7. 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.
  8. Marissa Farrell


    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.
  9. I hate to have to say this, but the roof nodes can't work at this time due to an overlook with the API. Or at least the ones to create a roof... I haven't looked much further into them, I just know we added a few more parameters to roofs in general since the callback to the software was last updated, which kind of messed up the overall outcome. In short - it's not Marionette's fault, it's Vectorscript's I'll explore more today and see if there's any way to salvage some use of them..
  10. Alan, these are great resources! Thank you for sharing your progress of learning Marionette!
  11. Hi dason! I'm attaching a network that I hope will help/lead you in the right direction. In this document, the Get Cell Value node is a little different... the other one should have been "Get Cell Formula" but I misnamed it back when I made it. I also modified the Polygon2D node in order to smooth your poly with bezier curves. I'll update that in the shipping library at some point to have more options. Unfortunately, I couldn't get an actual polyline object to create properly, so I'm hoping the polygon is okay. How this works: The Sequence nodes will essentially loop through every row in the worksheet, starting with 1 and ending with however many rows you have. This can be modified by you if need be. You have to have an input of at least 1 for each the row and column to the "Get Cell Value" node, which I'm sure makes sense. Also, the alphabet equivalent is as expected, A=1, B=2, etc. These values are then pushed into the Point 2D node, creating the list of (x,y), and ultimately sending them through the Polygon 2D node to create your poly. I hope this helps, feel free to ask for more information if you need it.
  12. Sarah! You've come to the rescue! I was going to try to find my similar script
  13. Gerald, The copy node isn't producing 3 objects, it's just producing 2, however when you used "Get Rectangle" to get the width and height, and applied it to the other "Rectangle" node, you created your 3rd rectangle then. Another way you could have done this would be to create another wire from the two nodes you were using for your first rectangle, since those are the same values returned from the "Get Rectangle" node. I'm attaching a file that shows this process instead. I thickened the wires to show you what I mean. Let me know if this is not clear. This revised network does not require copying the rectangle, therefor there is no need to delete a copy. With regards to the move node, I do not believe you would hurt anything by replacing your French node with the German node, although I haven't looked at either of them. If you're truly concerned, you could create a brand new symbol for the German version and name it so that you know the difference. I hope I've been helpful! Marissa
  14. A handful of comments here: Object name: I have an idea, but I don't want to share until I am positive on this. I'll get back to you if I have a solution. Object Location: You're correct that objects have their own coordinate system. Unfortunately, I don't think there is currently a way to define the insertion point of the object. Again, if I find out otherwise, I will let you know. OIP Display: Not currently possible. We can't even programmatically define values at all in the OIP, really. At least not the way we would need to in this case. Rise over Run: I created a node that will take in a vector and create an angle. I'll link to it once I post it. In addition, there are a couple of reasons why I don't believe your script is working. The most important one (and thank you for again bringing it to my attention) is that the Rotate node WON'T accept an angle (at this time). It's trying to query a list, and since you are using just a float value, it can't index it. I think there are also many other things wrong with the rotate node, but I haven't gotten around to fixing it. A question I have - are you trying to rotate your rectangle about Z (in 2D)? or are you trying to rotate it in 3D? I only ask because I'm not really sure what you expect your outcome to be in this case. If you are trying to rotate only in 2D, you can use the orientation input to the rectangle and use a 2D vector with your run as x and your rise as y. I hope this all made sense, and ultimately that I gave you the correct information. (I mostly hope I'm just not wrong... :blush:)
  15. Here's a sample of a super simple curtain. I didn't, at this point, take the time to do all of the math on it, but I think it's a satisfactory example. There is still a LOT more you could to with it for customization, I just wanted to share that the possibilities are (nearly) endless
  16. Good Morning, RickR! To answer your questions: 1) Yes, you can ABSOLUTELY create a complex PIO object from scratch. This also allows you to choose whatever variables you want to have available for parameters. It is a complicated process, but I can try to mock something up later for you, just to give you a simple idea. 2) I don't think that "Move" is the problem. Are you using a "Name" node to specify the object you want to move? If so, is "Create Duplicate Object" checked in the OIP when you select the "Name" node? If so, try unchecking that. 4) (What did you do with 3?!) This one is slightly trickier. The values in the OIP are usually stored similarly to Records, but they aren't like the records we can customly create. Let me look into my older files to hopefully mock something up for you. I have a feeling the default nodes won't do what I'm looking to do. Let me know if my answer to 2 helped you at all, otherwise we can continue to troubleshoot!
  17. Hey the frog! I've attached a file that I believe fixes your issue. The problem is that when you copied your rectangle, the copy never got extruded which left it as a 2D object. When this happens, you can think of these Marionette Objects as "Hybrid" 2D/3D objects, which means that when you are in top/plan you will see the 2D objects, but when in any 3D view, you will see your 3D objects. I added a delete node to the file and connected the output port "copy" to it, in order to remove that pesky 2D representation. Top/Plan: Top: Does this help? Marissa
  18. Yes, it's possible. There are a lot of worksheet nodes I haven't yet finished writing. Hopefully I can get some up soon for you! EDIT: I believe ahedley shared his worksheet nodes here, I haven't tested them myself, but they may suffice while I finish up the official library.
  19. There's not currently a compose node, and I also was thinking along the same lines, however I don't think that's the solution to this anyhow. I'll keep you updated on my troubleshooting.
  20. Hey Alan, Here's a rectangle that will take in an angle (in degrees) for the orientation. Keep in mind that the rotation takes place from a corner of the rectangle. Play around with this and let me know if it makes sense to you. Unless there are any strong objections, I will most likely get the rectangle node changed to represent this method in a future update to the software. Let me know! Marissa
  21. So orientation currently takes in a vector. I believe the current default value is (1,0), I don't have vectorworks open to confirm at the moment, but hopefully my memory serves me correctly. This means that the vector points in the x direction. I plan to soon change the rectangle node to take in an angle rather than a vector because I believe it will be more user friendly. For now, if you're interested in playing with orientation, use a vec2 node and try putting in some values for x and y. They may need to be in the range of 0 and 1, but I'm not positive on this. It may just normalize them on its own. I will gladly go into more depth about vectors if you'd like!
  22. Hey Alan! If you hit the "i" key on your keyboard while the Marionette tool is active, it will toggle between the "Insert" and "Debug" modes of the tool. Does this help?
  23. Marissa Farrell

    Sin Node

    Hey Alan! The sine node takes in an angle in radians. Since you're providing it with an angle in degrees, the output will be incorrect. There's a node in the Math section (Angular Conversion subsection) called "Deg2Rad" which will take an angle in degrees and convert it to radians. I'm attaching an example. I hope this helps!
  24. Jeff, The node "Compound List" in the attached file does what I believe you are looking for. Let me know if I missed something! Marissa
  25. So actually, in this case, vs.CreateText() does NOT return a handle, it returns None. Here's a script that should work for you instead. vs.CreateText('Hello') h = vs.LNewObj() vs.SetTextFont(h, 0, vs.GetTextLength(h), vs.GetFontID('Arial')) Hope this helps!


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...