Jump to content

danm01

Member
  • Posts

    35
  • Joined

  • Last visited

Posts posted by danm01

  1. 12 hours ago, setdesigner said:

    And why do you prefer this method to Layer imports ?

     

     


    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

    • Like 2
  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. 

    • Like 1
  3. 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. 

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

     

    • Like 1
  5. @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.

    • Like 2
  6. 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

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

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

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

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

    .

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

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

    • Like 1
  13. 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

  14. 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):

    Quote

    ITEM                           FILE FORMAT    RESULT                SOURCE FILE
    ----                           -----------    --------------------  -------------
    1-Site Plan                    PDF            (    4.90s)   SUCCESS 
    2-Seating Plan                 PDF            (    4.75s)   SUCCESS 
    3-Production Plan              PDF            (    3.07s)   SUCCESS 
    4-Rigging Plot                 PDF            (    4.30s)   SUCCESS
    5-Elevations                   PDF            (   22.15s)   SUCCESS
    6-House Drape & Riser Plot     PDF            (    1.75s)   SUCCESS 

     

    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

    • Like 3
  15. 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

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

     

    image.thumb.png.44270be20e851c43d44d9603276acf26.png

     

    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

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

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