Jump to content

Jesse Cogswell

  • Content Count

  • Joined

  • Last visited

Everything posted by Jesse Cogswell

  1. @Pat Stanford , all of this makes sense in terms of the use of CreateCustomObject. Good to know that the object isn't drawn until script completion. My issue is specific to the Drawing Label object in that it uses "hidden" parameters to set the Num Config and LineMode on object creation and ignores the PIO defaults. I was able to find which hidden parameter affects the Num Config field, but I could not for the life of me find how to set the Line Mode to Auto-fit without having a second script run after the initial script creating the object. In the end, I just set the object to have a 2" fixed length. This is almost exactly the length needed to get the line to the end of the label's scale text, which is where the auto-fit would land anyway. At this point, it's more of a curiosity about whether it's possible to get auto-fit to work in the object creation script. The fact that it works if you check the "Create Drawing Label" box in the Create Viewport dialog suggests that it is indeed possible, but I don't know what kind of magic Vectorworks uses to make it happen.
  2. Good morning. I am working on a menu command that creates a series of viewports. I decided that I wanted to add an option to drop in a Drawing Label object into the annotation layer of these viewports but have run in to a couple of snags particular to the Drawing Label PIO. The first thing that I noticed was that when using CreateCustomObject to drop a Label in, the incoming label would ignore the defaults set in the Plug-in Manager. So I added some SetRField commands to set make the label fit my defaults, namely setting the "Num Config" field to "Drawing Only" and "LineMode" to "Auto-Fit," but these didn't seem to work, either. If I used an external script to change these later, they would change as intended. I did a little digging and found the hidden field "Config," changing this to "Config 4" would set the "Num Config" to "Drawing Only," but I can't seem to find a way to get "Auto-Fit" to work on a newly placed Drawing Label. I tried first setting the "Length" field to 0, using GetBBox to determine what the length needed to be and resetting the "Length" field to match, but the GetBBox only returns the coordinates of the Label's ControlPoint01 instead of the actual bounding box. My guess is the the Drawing Label object has some things buried in its code using IsNewCustomObject that prevents me from changing the needed fields until after the initial script completes. There must be some way of doing it, as the Create Viewport menu command has an option of adding a Drawing Label and it does so while following the Drawing Label defaults. Any ideas? - Jesse
  3. @JBenghiat Thank you for this, it certainly did the trick! The resource list was used in the larger code to populate a list box for selection and I didn't think to remove it when I scaled it down to test EditObjectSpecial.
  4. It determines how deep the track goes. If you are tracking objects that are inside of symbols or groups, that's how you would specify it. Somewhere deep in the function reference it describes the difference between shallow and deep traversal, but I couldn't find it last time I looked. I remember deep traversal going through all containers (walls, extrudes,sweeps,groups), but don't remember what shallow traversal specifies. Every time I've used TrackObject it's been to track something in design layer or sheet layer space, so no need to traverse at all. So I just use the standard TrackObject function. The documentation for Vectorscript is often times either very cryptic or straight up missing. I spent last week delving into the four different procedures/functions for offsetting a polygon and the documentation is laughable. I finally landed on using OffsetPolyN which offsets a polygon in document units instead of defaulting to millimeters, but doesn't close the resulting poly. The function reference has no example and just says, "Offsets a polygon or polyline. Uses Parasolid to do it. Equivalent of Voronoy based OffsetPoly." Which is still better than OffsetPoly, which reads more like a requirement doc than useful documentation: "Offsets a polygon or polyline. Must handle open & closed polys. A positive distance offsets to the outside; negative to the inside. Should remove self-intersecting segments from the result. Should support smooth vs. sharp offsets."
  5. Don't know about TrackObjectN, in this instance I don't know if you would really need the traversal specification, but here's a short script that works for doors and windows that are embedded in walls:
  6. Good morning, I am working on a PIO that can use a symbol as base geometry so that users can have further customization. Is there a way to make the double-click behavior of the PIO edit the reference symbol? I've added all of the requisite commands for the double-click special edit and to pull the handle of the referenced symbol definition, but can't find a command to open up the symbol editor for the symbol definition. I tried EditObjectSpecial(symDefHand,4), but it keeps thinking I'm trying to edit the PIO instead. If I change the editMode to 2 (Properties), it opens up the properties pane for the PIO, not the referenced symbol. I did a few tests by playing around with the EditObjectSpecial procedure inside some temp scripts. It worked perfectly for editing symbols but only if I had a symbol selected before running, and even then it would edit the selected symbol rather than the symbol definition passed into EditObjectSpecial. If nothing is selected, the script doesn't do anything. I can even pass in an empty handle as long as something is selected before running the script. I've tried it in 2018, 2019, and 2020 with the same results. Do we think that this is a bug or am I misreading its need for a passed handle? For those playing along at home, my test script is as follows: I'm also down for trying something different to get to the symbol editor if anyone has any ideas. - Jesse
  7. Good morning and thank you for the reply @MullinRJ , I currently use VW 2019 for script development (since it's the version I'm happiest with) and 2020 for testing. In 2019, I can add a popup field to a record format with no problem using the Resource Manager, same for 2020 and as far back as 2018 (earliest version I have installed). The issue I am having is that there seems no way to build a record with a popup field strictly through scripting, in 2019 or 2020. I have a plug-in that wants to reference a symbol, so the easiest way is to attach a record to that symbol. But, that record will need to exist within the drawing, so I was hoping to be able to create it from scratch as part of the plug-in's code when it is needed. The plug-in has a couple of different types, so it would be great if the type could be assigned to the symbol using a popup field to decrease the chance of user-error. At the end of the day, it's really not a problem for me to use a text field for this, which is ultimately what I am going to end up doing. Especially because it will allow for backwards compatibility for earlier versions of Vectorworks. Jesse
  8. Good morning. I'm trying to create a record format containing pop-up fields using Vectorscript and have yet to be successful. The appendix contains a section "Record - Worksheet Field Types" which does not contain popup menus as well as a "Plug-in Object Parameter Record Field Types" section which lists Text - Popup Menu Item with a selector of 8 (the same as Number - Fractional in the other list). If I try building a record format through the Resource Manager and reverse engineering it with GetFldType, a popup field returns a value of 8, but so does a Number - Fractional value. Is this something that just isn't possible with Vectorscript?
  9. After switching to exporting at 25 FPS, I have had no issues with the time dilation, making Premier setup a breeze and the final export from Premier faster and cleaner. As for fixtures disappearing during rendering, I have had the best luck with starting the render process immediately after opening the file without turning on lights or rendering a still first, as many times I've rendered the still first with no problems only to have the two hour rendered movie missing whole fixture groups. My standard work flow has been as follows: Program with a "Low Res" setting (800x600, everything set to low except Texture Quality so that I can see gobo edge settings) Open a blank Vision file and record the DMX Close and restart Vision Immediately render movie with a "High Res" setting at 25 FPS without touching anything else in the file Use Premier to sync up sound and do final export I have also found that I have had higher success in exporting if I have my battery settings set to "Best Performance" before opening up Vision to do video rendering.
  10. Jesse, Just gave this a shot and had the same results. The final video export is shorter than the original DMX file. When syncing up the starting "blip" to 00:00:05:00, the final blackout occurs at 00:05:02:16 rather than 00:05:05:00 as it was originally programmed. Also, if this was the issue, how would it explain the difference in video length between 24 FPS and 30 FPS exports with the same DMX file (5:02 with 24 FPS, 5:08 with 30 FPS). New video file can be found here, new DMX file can be found here. Thank you again for looking into this. - Jesse Cogswell
  11. I am using the PC version of Eos Nomad on a separate machine than the one running Vision, communicating using sACN.
  12. Jesse, we almost have the same name. That's kind of neat. When I was exporting the video on the project, I was always rendering out a still before rendering the video to check camera shots, since my monitor in full screen was different than my rendering aspect ratio and always saw the full rig in the still. But you are quite correct, there is a large number of emitters in the file. So I stripped out everything except the D60 top light from the file and made a quick cue stack to easily check the timing. The lights all flash on for one second, off for one second for five minutes, with them flashing red every 10 seconds, and at each minute, a different column stays on in blue.I rendered out a file at 24 FPS and one at 30 FPS. The DMX file comes in right at 5:05 in length, but the 24 FPS video is 5:03 in length, and the 30 FPS video from the same DMX file is 5:08 in length. This is a similar amount of "drift" that I saw during the show exports. I was able to get around it by placing a "blip" cue (top light at full in a 0 count, out in a 0 count after a 0.5 follow) at timecode 00:00:05:00 and a similar one at the end of the cue stack. In Premier, I make sure the first blip lines up exactly at 00:00:05:00, then use the stretch time feature to make the end blip line up with the timecode in the console and re-render the video. The good news is that the "drift" is at least a consistent rate. The v3d file is attached. I can't attach the video or DMX files to this, but assuming you're able to access Google Drive links, the DMX file can be found here, and the 24 FPS video can be found here. Notes on the video: you'll see the starting "blip" at 00:00:04:12. This lines up with timecode 00:00:05:00, the timing check begins in earnest at 00:00:09:12 in the video, which should line up with timecode 00:00:10:00. As originally recorded in the console, at timecode 00:05:05:00 the lights will cut to black, which occurs at 00:05:02:02 in the video. These tests were done on Vision 2020, version, DMX provided by ETC Eos version 2.9.1. While I have your ear, as a feature request, could we get a DMX trigger channel for the DMX Recorder? CueServer, DMX King, and Alcorn McBride Light Cue all have a way to do this, and it makes streaming DMX a lot easier since I can sync it to a cue in my console rather than starting timecode and pressing a button in the software to start recording. Thank you for taking the time to look through this. - Jesse Timing Check.v3s
  13. Good morning, all. I've been working from home trying to get some programming done. I've done a timecode show using an ETC Eos, and rendered out a DMX file but have run into several issues. The biggest issue is that when I render out a full video, the timing of the video is much slower than the original programming. IE, a song might be 8:03 long, but the rendered video is 8:08, so when I pair the video up with the sound file in Premier to render out a finished video, the video is out of sync and only gets worse the longer the video is. I've tried rendering at different frame rates, different resolutions, and different levels of quality in both Vision 2019 and 2020 and on multiple machines, but never once gotten the lighting to sync with the original sound. In the process of trying different export options, I also had a problem with trying certain frame rates. Any time I chose 48 frames per second and clicked "Render," the dialog box would close but would not start rendering. I have only been able to render at 30 or 60 frames per second. I've also had several problems where some fixtures don't render in the video in some renders. When I playback the DMX stream, everything matches the console output as originally recorded, but the video rendering doesn't have the D60 back light, the Colorforce 72 cyc lights, Lustr 2 front lights, or X4 Bars. But the Axiom Beams, Quantum Spots, Mac Vipers, and Magic Panels all work flawlessly. After the rendering is complete, the fixtures that did not properly render stop responding to DMX until I restart the Vision software. It's a bit of a bummer in that I don't know whether or not all of the lights are properly rendered until after I've spent the couple of hours it takes to render. My system is a Surface Book 2 with an Intel Core i7-8650U CPU, 16 gb of RAM, and an NVIDIA GeForce GTX 1060. - Jesse
  14. I was able to find the .webarchive backup files of the Vectorlab articles on List Browsers, which did not include the example script above but answered all of my other questions. I ran into a bug where I was not able to populate a solid rectangle cell outside of the SetupDialogC case (my plugin includes an "Add Row" button, which opens a dialog box to set options for the row, and executes the instructions for the new row after pressing 'OK'). All other cells would properly update, but I could not get the solid rectangle to show up (but could affect existing rows with the SetLBItemFillForeColor function). The only way I was able to get around this was to have the Add dialog box update the arrays that the List Browser used to initially populate, then use a GOTO command to a label in the SetupDialogC at the top of the List Browser InsertLBItem code to repopulate the existing List Browser window. I understand that this isn't exactly Nemetschek's highest priority, but is there any way we could get a proper set of documentation for List Browsers and Object Events? Both sorely lack examples in the Function Reference and some of the Object Event functions even lacking descriptions. These both provide ways of making incredibly powerful plug-ins, but their implementation can be fairly obtuse and it's a shame that the only useful documentation is on a now-defunct website.
  15. Hello there! I am doing my damnedest to write a List Browser but the documentation available on the developer.vectorworks.net for List Browsers is borderline non-existent. The example that the OP posted above looks like it would answer all of my questions, but vectorlab looks to have closed down and the WayBackMachine didn't snag snapshots of the List Browser articles. Is there any chance that someone saved the scripting example and would be willing to share?
  16. I don't think this bug is drawing specific. While building Marionette networks, every 20 minutes or so this happens where the OIP stops updating/responding. Whenever I encounter this, I immediately save, close the document, and reopen it (not restarting Vectorworks) and am able to keep working.
  17. I just did a show last month with Encores and can confirm that the zoom is backward from both the ETC Eos profile as well as reality. For the previs, I built a custom profile for the fixture that inverted the zoom range, but had to correct it when I got in the space. Also, I don't think an option to invert zoom within Vision would be a great idea. Pan and tilt should be inverted because a fixture might change orientation from the plot to where it's hung based on cable runs, power, etc. Being able to change pan and tilt quickly to match reality without having to rotate or move the fixture within Vision is great. The only time you would need to invert the zoom is if the profile within either the console or Vision were wrong.


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