Jump to content


  • Posts

  • Joined

  • Last visited

Everything posted by danm01

  1. 2 reasons why the DLVP method works for us: 1) We can split up the workflow, and have someone cleaning up a crappy venue file while another team member is working on a show file. This is also great if you want to protect IP - you can swap out the painstakingly created 3D file you developed for the original 2D version when you send a design to a venue for approval. 2) We work under the assumption that we are either going back to a given venue or repeating a show somewhere else. In both cases, using a referenced workflow allows for a simple and clean transition. Both the venue file and show file are independent and can easily be updated or repurposed without much fuss. Hope that helps! Dan
  2. You can absolutely use the DVLP method and select different layers! I do this all the time with other types of venues. For instance, a convention center with a unified class structure but separate layers per floor. I will frequently use multiple DLVPs referenced to the same file, choosing different layer and class visibility options. The DLVPs live on separate layers in the “design” document (vs the “venue” file). That allows for easy generating of new plans for separate floors without messing with overall class structure. @setdesigner - you’re on the right track. What you what to do is set up (for instance) the “pit up” viewport first. Then copy and paste in place. Move the 2nd copy to a new layer or class in your working doc. Then select whatever class or layer options on the DLVP that you need for “pit down.” You now have 2 versions referencing the same file. On your design doc sheet layers you can create 2 viewports, one showing each DLVP plus whatever other design elements you want to include.
  3. Turns out the hyperlink tool can generate a QR! You could add that to your symbol in a separate class, like the attached. I had better luck formatting the text below the QR by making it a "convert to group" symbol, but someone else may know how to fix that. symbol_with_qr.vwx
  4. Have you considered using a QR code instead of a bar code? It would allow you to easily link to an external URL like a manufacturer data sheet. It looks like it would be a pretty easy Python script using the qrcode library, or some kind soul could probably whip up a Marionette node.
  5. Hello all, I struggled with this a bit, so I figured I'd share in hopes of saving someone else some pain and anguish. The key learning is that the result of vs.GetObjecTags(class_handle) is a 2-element tuple that contains TRUE in index 0 and either None or a nested tuple with all attached tags in index 1. Once I figured that out it was easy to work with the list. I have not experimented, but I imagine Layer Tags work the same way. Example below creates a worksheet with a list of Class Tags: import vs classes_total = vs.ClassNum() taglist = [] # make a list of tag names, skipping classes without a tag for x in range(classes_total): ClassName = vs.ClassList(x + 1) hClass = vs.GetObject(ClassName) tagTuple = vs.GetObjectTags(hClass) if tagTuple[1] == None: pass #skip classes with no tag else: tagArray = tagTuple[1] for i in range(len(tagArray)): tag = tagArray[i] if tag in taglist: pass else: taglist.append(tag) # check for the Class Tag List worksheet. If it doesn't exist, create it. ws_handle = vs.GetObject("Class Tag List") #if no worksheet found, create it if vs.GetTypeN(ws_handle) != 18: ws_handle = vs.CreateWS("Class Tag List",len(taglist)+1,1) vs.SetWSCellFormulaN(ws_handle, 1, 1, 1, 1, "Class Tags") vs.SetWSCellTextFormat(ws_handle,1,1,1,1,0,0,1) #make the header bold #if the worksheet exists, easist way to handle is delete everything except the header and start from scratch else: rowcount = vs.GetWSRowColumnCount(ws_handle) vs.DeleteWSRows(ws_handle, 2, rowcount[0]-1) vs.InsertWSRows(ws_handle, 2, len(taglist)+1) vs.DeleteWSRows(ws_handle, len(taglist)+1, 1) # add elements from the tag list to the worksheet. for i in range(len(taglist)): vs.SetWSCellFormulaN(ws_handle, i+2, 1, i+2, 1, taglist[i]) vs.SetWSCellTextFormat(ws_handle,i+2,1,i+2,1,0,0,0) #make the content rows regular text vs.ShowWS(ws_handle,True) This example shows or hides classes based on tag value: import vs TagStr = 'Audio' ShowMe = 1 def ViewByTag(TagName,ShowHide): classes_total = vs.ClassNum() for x in range(classes_total): ClassName = vs.ClassList(x + 1) hClass = vs.GetObject(ClassName) tagTuple = vs.GetObjectTags(hClass) if tagTuple[1] == None: pass else: tagArray = tagTuple[1] if TagName in str(tagArray): if ShowHide == 0: vs.HideClass(ClassName) else: vs.ShowClass(ClassName) ViewByTag(TagStr,ShowMe) Enjoy! Real Python coders, please feel free to weigh in if you see an issue. Dan
  6. @Tom W. it's super easy if you are willing to have 2 different scripts rather than toggle visibility. I use this method all the time. "Show" script - ShowClass('NonPlot'); "Hide" script - HideClass('NonPlot'); You can create plug-ins with these simple scripts and give yourself menu items. If you have more than one class to show/hide at a time ("NonPlot-Loci" for instance), you can add additional lines to the script. Make sure to use the semicolon at the end of each line.
  7. Well.. Andy just gave you one method. You could also simply add an image prop in front of the LED structure. Or break your source image into tile-sized pieces and map each one individually. So I wouldn’t say there’s no way to do it. There are plenty of options. It’s just easier with the built in tool.
  8. I've had the same experience working with red symbols and the Video Camera tool. Thanks for bringing this up, I really thought it was me. @RMDiekmann have you experimented with custom camera stands as well? I created one that places the camera at a more realistic height for event industry use in a long throw situation. I find that the 3D locus used for camera body placement seems to mysteriously disappear when I import the red symbol. -Dan
  9. The Pan and Tilt adjustments are limited to adjustments of 1 degree or greater. This doesn't really work in real world conditions where a camera is some distance from the subject, using a "sports" style 9mm x 70mm lens, for instance. It's not uncommon to have a focal length of several hundred millimeters. Framing up a subject with the camera requires panning or tilting in fractions of a degree.
  10. Regarding pdf ungrouping - this is not a Vectorworks issue, it's a problem with the manner in which the document was created. Not all pdf documents include underlying geometry. If the pdf has been rasterized, you won't be able to get anything out of it. -Dan
  11. Someone (DomC maybe?) wrote a Marionette network that adds random symbols from a specified folder inside of a control object. It works really well. You could make a set of sprinkle objects of different colors and use a circle as the control object.
  12. I think your best bet for that would be to use Python. There are a bunch of options for working with file and folder structure using os (https://docs.python.org/3/library/os.html). I wrote a script to snapshot an open file to a subfolder in the current directory using os. You can definitely do what you're looking for, but not necessarily with Vectorscript.
  13. @C. Andrew Dunning I've been wondering about this too, although I haven't tested it exhaustively. Workgroup resources seem to work with Videoscreen and Soft Goods, but not Audio Tools.
  14. I use a Synology DS1813+. I use the Cloudstation feature to share folder structures among multiple machines, both PC and Mac. I also frequently use the Cloud Sync feature to synchronize certain project folders with Dropbox, allowing easy collaboration with outside resources. For access to non-Dropboxed folders outside of my LAN I use a VPN. Honestly, it works very well. The server has been doing it's thing since 2013 with only occasional maintenance. When I add a new computer, it's simply a matter of installing the Cloudstation software, setting up the local folder structure, and letting it download for a couple of hours to sync up. Generally the only time I log in to the server is to set up new Dropbox sync folders. Happy to share more perspective anytime. My Swiss German is a little rough, though. 😉 -Dan .
  15. Thanks Mike. I'm not sure that I buy that official explanation, though. I *always* render using viewports with linked RW cameras. Sometimes the gobo mysteriously disappears, and I can make it come back without re-creating the viewport and linked camera. But until I can pin down exactly what causes it to break, I guess the official line will have to suffice. -Dan
  16. This happens to me fairly regularly. I render custom gobos frequently for one particular client. It's been happening since at least v2016. I've never been able to pin down exactly what makes it break, so I've never filed a bug report. Sometimes it happens when I move the fixture, other times it seems totally random. My general solution is: 1) switch the gobo to something different (any generic stock object) 2) re-render 3) switch back to the gobo I actually want 4) render it again 5) repeat until it works If you're using multiple fixtures, good luck! Sometimes you need to touch every single one to get it to stick. -Dan
  17. Here is a Vectorscript called FindRenameClasses that I use. I think I found it in the Vectorscript forum a while ago, but I'm not sure. Attribution in the comments on the first line. PROCEDURE FindRenameClasses; { Modded by Andrew Chau based on Renameclasses by ? Petri Sakkinen 1997 - 2009 } VAR className, newName, cs1, cs2 {cs1 is the trigger or to be replaced, cs2 is the replacement} : STRING; i, j, n : INTEGER; BEGIN cs1:=StrDialog(Concat('Find text string in class name to rename...',Chr(13),Chr(13),'Find:'), 'S_'); IF NOT DidCancel THEN cs2:=StrDialog(Concat('Rename text string in class name...',Chr(13),Chr(13),'Replace:'),'X_S-'); j := LEN(cs1); FOR i := 3 TO CLASSNUM DO BEGIN className := CLASSLIST(i); n := POS(cs1, className); IF (n=1) THEN BEGIN newName := className; DELETE(newName, 1, j); RENAMECLASS(className, CONCAT(cs2, newName)); END; END; END; RUN(FindRenameClasses); I have it saved as a custom plugin, and added it as a menu item to my workspace. This doesn't help with your symbol names, saved views, etc. but it may still be useful. Also - you could probably do what you are looking for with a Marionette network. -Dan
  18. @Kevin McAllister what other Designer tricks do you use? I've thought about upgrading from Spotlight, but I haven't been able to wrap my head around the differences enough to justify the cost. Thanks! Dan
  19. Two thumbs up for the Surface Book 2. Pricey but worth it! -Dan
  20. It's not ideal, but one thing you can do is Publish the sheet layers containing the viewports. Vectorworks generates a publish log that tells you how long each sheet takes to produce. I say it's not ideal because there's no opportunity to cancel. But if you want to kick off a few different versions and go get some coffee... The log file report looks like this (file name removed): I do think having a way to track render time data within the program would be extremely valuable, and I've mentioned to Vectorworks team members on the phone and at trade shows. Generally the answer is something like, "well, you can see it on the lower right once the viewport has rendered." -Dan
  21. I had this exact same problem! It was incredibly annoying, and I wish I could tell you how I solved it. I think it had something to do with my default font settings - size, alignment, etc. Also, maybe it also was related to working with a template that had been converted through several software upgrades. My best advice is to start from scratch using the scale bar tool, don't try to copy and paste from an older document. Good luck. -Dan
  22. Do they need to be 3D? What if you were to use some 2D image props and check the "crossed planes" option? That's way easier on the rendering engine. Alternatively - in the Resource Browser look for Entourage People. The old 3D symbols don't look very good in a rendering, but they are very low poly! The 2D people might be enough for you to demonstrate spacing and riser heights, they just don't simulate 3D like an image prop with crossed planes. -Dan
  23. This happens to me as well. It's unpredictable, but seems to happen most often after a number of complex operations. Replacing a bunch of symbols, mass updating records, that sort of thing. As BG said, the solution is to close Vectorworks and re-open. 2018 SP3, Windows 10.
  24. I have this same problem! Windows 10, Spotlight SP3. It was happening in SP2 also.
  25. As far as I know there's no built in command. You can write a script to do it though. I've got one to recalculate all worksheets in a file, but you could modify it to do just one specific instance by name. Vectorscript below. I set it up as a Plugin so I could make it a custom menu item. I borrowed and adapted this from someone else's work, so it's possible it could be simplified. Hope this helps. -Dan {Recalculate all worksheets in file} Procedure WSrecalc; VAR foundObject: handle; objname :String; i, n : integer; OK : boolean; function DoRecalc (h : handle) : Boolean; BEGIN RECALCULATEWS(h); RESETOBJECT(h); RESETOBJECT(GETWSIMAGE(h)); End; Begin n := NAMENUM; For i := 1 to n do begin foundObject := GETOBJECT(NAMELIST(I)); If GETTYPE(foundObject) = 18 Then ok := DoRecalc(foundObject); End; End; Run (WSrecalc);
  • Create New...