Jump to content

Jesse Cogswell

  • Content Count

  • Joined

  • Last visited

Community Reputation

121 Spectacular


About Jesse Cogswell

  • Rank

Personal Information

  • Location
    United States

Recent Profile Visitors

726 profile views
  1. I just tested the file that @JeroenSnoeijen attached and had the exact same results he did, the Marionette network initially appears to be connected, but anything causing a node to reset resulted in all of the wires disappearing. I tested this in Vectorworks 2021 SP3.1 (Build 588748) on Windows 10. I was able to get the red symbol to import without breaking by duplicating it, but only if I made the duplicate before importing the other components. If I imported the original red symbol first, then created the duplicate in the original file and imported the duplicate, the wires would be broken. Video attached showing how I was able to get it to work. In any case, there is definitely a bug here. Apologize for the sluggish video, my laptop does not have a great time recording to OBS at the same time as running Vectorworks. 2021-06-17 13-55-25.mp4
  2. I apologize for the delay, last week was a bit rougher than expected. I have fleshed this out a bit more, opening a dialog box allowing you to choose the "direction" of the locus points when producing the polyline, whether or not the polyline is closed, whether or not the source locus points are deleted, and which class and layer the polyline will appear in. The script also remembers your last choices for direction, closed poly, and delete points to save a little bit of time when running this tool if you don't need to change settings. Class and layer will always default to the active class and layer when you run the tool. Screenshot of dialog box The tool is attached as a .zip file. Installation is mostly painless, but to start, you will want to make sure that if you saved the previous version of the tool using the Plug-in Manager, you will need to make sure to either delete the previous tool or to change the name to something other than Create Poly from Locus Pts. After doing that, follow the steps below. Download the attached .zip file to a convenient location. DO NOT unzip it. Click Tools - Plug-ins - Plug-in Manager Click on the Third-party Plug-ins tab Click on the Install button Point the Explorer/Finder to the downloaded .zip file Restart Vectorworks Add the tool to your workspace following the steps outlined in my previous post. You will find it under the JNC category. @Gilbert Osmond , your offer is a pleasant surprise and very well appreciated. I am a bit conflicted about this, as I answer questions on here as a way to help others navigate the oftentimes opaque documentation from Vectorworks and the usual list of workarounds you sometimes have to use to make Vectorworks fit into different workflows (as someone on here once called "Vectorworkarounds"). I have a large frustration with broken tools and feature requests go unanswered year upon year when it seems that Vectorworks would rather focus on adding half-baked features that often don't work properly out of the box. This is why I don't mind putting some time toward some of the more "simple" feature requests. I also enjoy the strict problem solving of programming as a break from my usual work (when time allows). All that being said, I also won't turn down money, so if you still want to send me a tip, the best bet would be Paypal, and I can DM you the relevant email address. Please let me know if you see anything weird with this tool. I did some pretty rigorous testing in VW2019 to make sure that stacking order wouldn't interfere with the Left-Right or Top-Down directions, but the algorithm is a bit tricky and there may still be some bugs in it. Create Poly From Locus Pts.zip
  3. That is working as intended. If you want to be able to make changes a little easier and don't need the 2D and 3D components (referred to as a "hybrid symbol" and one of the very best things about Vectorworks), you can convert the symbol into a "blue" symbol that will come in as a group rather than a traditional symbol. In the Resource Manager, right-click the symbol, and select Edit Symbol Options. This will open up a dialog that lets you set things like wall insertion behavior, automatic class assignment, and what you're looking for is Convert to Group. In a hybrid symbol, this will drop in only the 2D components when in Top/Plan view, and only the 3D components in any other view. One advantage to this is that you will be able to set the fill color by just changing the Fill settings in the Attributes pane without having to change the symbol, meaning you can also have several instances with different colors without needing separate symbols.
  4. While you are technically correct in that tilting the head a full 180 degrees would result in a spatial conflict, this is not a bug with Vectorworks or their head rotation point. Instead, this is a result of the actual lights being physically unable to do a full 180 degree tilt. All of the Martin fixtures you have cited above have a maximum tilt angle of 134 degrees, and the High End fixture has a maximum tilt of 132.5 degrees. This prevents the spacial conflict you are showing. While I don't have any of these fixtures directly in front of me, I have used all of them in at least one show and the modeling in Vectorworks has been consistent (within reason) with reality. The only fixture that I can recall using that could do a full 180 degree tilt is the Robe Spikie, and the modeling shows no conflict.
  5. To get the handle to the PIO, you will want to use vs.GetCustomObjectInfo().
  6. One of the biggest traps of doing rendering in viewports on a sheet layer is the sheet layer's DPI setting. For whatever reason, Vectorworks defaults all sheet layers to a DPI of 72, which makes Renderworks and OpenGL viewports look really low res and messy no matter what settings you set the viewport to. To fix this, open up the Organization dialog, go to Sheet Layers, and select any sheet layers with rendered views on them. Click Edit and change the Raster Rendering DPI to something like 300. I typically make all of my sheet layers have a DPI of at least 300, even architectural drawings (makes PDFs MUCH crisper looking), and final "beauty" rendering sheet layers I set to a DPI of 600. Keep in mind that exporting to PDF, a full page 600 DPI rendering will make the file size pretty huge (as is typical for PDFs from VW), and having Save viewport cache turned on in the Document Settings will result in your VW files being huge (back ups, too), but will save time not having to re-render every time you open the drawing.
  7. Glad to hear that this worked. If you don't need a closed poly, just remove the ClosePoly; lines. When I get some time, I can expand the tool a bit to open a dialog box to allow you to choose from a couple of different sorting options (left to right, top to bottom, creation order), to choose whether to close the poly, and whether to delete the source points and any number of other things you might need. Also, if you want to make this a permanent part of your VW workspace, follow the steps below. The advantage is that the tool is always available regardless of drawing, the downside is if you want to share with a team then you have to share the plug-in versus any one having the drawing having access to it. Click Tools - Plug-ins - Plug-in Manager Click the New button Name the plug-in something like "Create Poly From Points" Select the Command radio button (should be selected by default) Click OK Select the new command and click on the Edit Definition button In the General tab, assign a category. By default this will be "Miscellaneous," I put all my tools in a "JNC" category. This will be important later. In the Properties tab, check the "Object Selected" radio button for "Require". Nothing will happen if you run the tool with nothing selected, but this option will actively gray it out in the menu if nothing is selected. Add in a Tooltip Help if it pleases you. Not a bad idea if you're sharing the tool with a team. Click OK Click Edit Script Paste in the script and click OK Now, we need to add the tool to your workspace. Click Tools - Workspaces - Edit Current Workspace Click on the Menus tab Find the assigned category and expand it in the box on the left Choose a menu to place it in and expand it in the box on the right Click and drag the tool from the left to the expanded menu on the right Click OK You should be good to go. If I get around to adding a dialog box, I'll probably make it a more full blown plug-in rather than a quick script, and will detail the install process. It's less complicated than what's above but still not all that intuitive.
  8. I suppose I never asked if the polys wanted to be closed or not. If not, remove the lines with the ClosePoly; procedure and it will generate open polys. Doing a left to right or down to up sorting of the points wouldn't be terribly difficult, but I don't quite have time to add it right now. I'll see if I can get to it tomorrow night.
  9. The way I've done it before is to have a Popup node with the number of choices (which requires editing the coding of the node to include your choices by double clicking the node and removing the top two lines of code, then filling in the appropriate choices), which then is used in conjunction with a List node which contains the actual angle values using Real input nodes. This List node then plugs in to a Get Item node in the "list" input, with the Popup node going into the "iIndex" input. The Get Item node's "item" output then would plug into the Symbol node's "nAngle" input. Does this make sense?
  10. Make sure that rather than doing a copy and paste operation, you are importing any referenced symbols. Copying and pasting a Marionette object WILL NOT import them into the new drawing for you, nor will importing just the "red" symbol through the Resource Manager. What's likely happening is that the Symbol nodes in your network don't have the proper symbols in the drawing, so they can't place them or manipulate them. When I use embedded symbols in Marionette networks, I have a folder of all of the embedded components in the same location as the "red" symbol in the Resource Manager, so if I need a Marionette object from another drawing, I can quickly select both the "red" symbol and the folder of components and import them in one go. Then you should be able to copy and paste the object or place a new one through the Resource Manager. In terms of the non-filled nodes and broken links, I haven't seen anything like that in any of my uses (VW 2021 SP3.1, Windows 10), but I have seen quite a number of broken links when opening drawings created in earlier versions, sometimes drawing the wires but not having them actually "attach," so you have to go through the entire network "wiggling" each node to make sure the wires are properly attached. Not my favorite. But I haven't seen this so far transferring resources from one VW2021 document to another.
  11. I could write a script that could pull in the XYZ locations of all selected loci and essentially use that data to "connect the dots" with a 3D polygon, but I think the biggest obstacle to making it work properly is that there is no real way to pull the order in which connect the loci. Calling a ForEachObject callback would be the most efficient, but it will follow in the order in which the loci were created with little regard to their physical location. Imagine you wanted to create a square with four loci, A (0,0), B (1,0), C (1,1), and D (0,1). There's no real easy way to tell the script to create a poly in A,B,C,D order, the script might create a poly in A,C,D,B order, resulting in an hourglass shape. Someone much smarter than me could probably write an algorithm to determine a clockwise or anti-clockwise path between a selection of points, but I can't think of an easy way off the top of my head without attaching a record to each loci with the poly creation order in it, but assigning that would take more time than drawing the polygon by hand. If you can assure that the points are created in the correct order, then the script below should do the trick. PROCEDURE CreatePolyFromPoints; {* Creates a 2D polygon from a selection of 2D Locus points and/or a 3D polygon from a selection of 3D Locus points Developed by: Jesse Cogswell Date: 6/8/2021 VW Version: 2019 *} VAR lociPoints:DYNARRAY[] OF POINT; lociPoints3D:DYNARRAY[] OF POINT3D; numPoints:INTEGER; currentLayer:STRING; finalPoly,finalPoly3D:HANDLE; deleteCheck:BOOLEAN; PROCEDURE PollThePoints(h:HANDLE); {Generates array of XY locations of selected points} VAR p1:POINT; BEGIN numPoints:=numPoints+1; ALLOCATE lociPoints[1..numPoints]; GetLocPt(h,p1.x,p1.y); lociPoints[numPoints]:=p1; IF(deleteCheck=TRUE) THEN DelObject(h); END; PROCEDURE PollThePoints3D(h:HANDLE); {Generates array of XYZ locations of selected 3D points} VAR p1:POINT3D; BEGIN numPoints:=numPoints+1; ALLOCATE lociPoints3D[1..numPoints]; Get3DCntr(h,p1.x,p1.y,p1.z); lociPoints3D[numPoints]:=p1; IF(deleteCheck=TRUE) THEN DelObject(h); END; FUNCTION CreatePolygon(points:DYNARRAY[] OF POINT; nPoints:INTEGER) : HANDLE; {Creates a polygon from given array of points and returns handle to polygon} VAR i:INTEGER; h:HANDLE; BEGIN ClosePoly; BeginPoly; FOR i:=1 TO nPoints DO AddPoint(points[i].x,points[i].y); EndPoly; CreatePolygon:=LNewObj; END; FUNCTION CreatePolygon3D(points:DYNARRAY[] OF POINT3D; nPoints:INTEGER) : HANDLE; {Creates a 3D polygon from given array of points and returns handle to polygon} VAR i:INTEGER; h:HANDLE; BEGIN CLosePoly; BeginPoly3D; FOR i:=1 TO nPoints DO Add3DPt(points[i].x,points[i].y,points[i].z); EndPoly3D; CreatePolygon3D:=LNewObj; END; BEGIN numPoints:=0; currentLayer:=GetLName(ActLayer); deleteCheck:=YNDialog('Delete Locus Points after creation?'); ForEachObject(PollThePoints,((SEL=TRUE) & (L=currentLayer) & (T=LOCUS))); IF(numPoints>1) THEN finalPoly:=CreatePolygon(lociPoints,numPoints); numPoints:=0; ForEachObject(PollThePoints3D,((SEL=TRUE) & (L=currentLayer) & (T=LOCUS3D))); IF(numPoints>1) THEN finalPoly3D:=CreatePolygon3D(lociPoints3D,numPoints); END; Run(CreatePolyFromPoints); The script will follow the points in the order of their creation and gives you an option to delete the locus points afterward. The script will handle 2D and 3D locus points and will generate accordingly, but separately. If you include a selection of 2D and 3D points, the script will generate a separate 2D and 3D polygon. Also keep in mind that it will be restricted to points on the active layer only to prevent it from misreading points still selected on a different layer (in case your Layer Options are set to Show/Snap). Let me know if this works for you or if this totally breaks something. It worked in my admittedly brief amount of testing on VW2019, but there's no reason it shouldn't work in VW2021.
  12. @Pat Stanford I always forget about Copy. I end up skipping over it in the function reference because it doesn't sound like what I'm looking for, but you're absolutely right. It even makes sense with how Vectorscript operates, it just doesn't line up in my brain when I go to look for it.
  13. I played with this for a couple of hours with little success. Marionette, and even Vectorscript, has no real easy way to get a substring with only character order, both have options using delimiters, though. In your example, if you are always going to have "O" after your story number like in your example, you could use that as a delimiter with a Split node to split the input string into a list, then use a Split List node with an index of 0 to split out the story number. The real answer to this would be to create a node that splits an input string into a list of characters which could then use the Split List and Slice nodes to divvy it up, but there doesn't seem like a way to do it with the default installed nodes. Or you could write a node that uses the magic of Python, which has robust built-in substring commands, to just return the first two characters of an input string. Unfortunately, I am not familiar enough with custom node creation to tell you how to do this, however.
  14. In the past, I've used the Ordered List node to sort stacking order, working from bottom to top (item0 is bottom layer, item8 is top). There used to be a correlation between the actual stacking order of the nodes to establish drawing order, but at least starting in VW2019, drawing order became kind of random. The Ordered List is the only way I've been able to consistently dictate order.
  15. What I typically do when working with CF strips is to proportionally patch them at 65%. It makes the bottom of the dimming curve a bit rough (pop on when fading up from black, but they do that in real life, too), but it reads more accurately and is an easy change when you migrate the show file into reality.


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