Jump to content

twk

Member
  • Posts

    890
  • Joined

  • Last visited

Posts posted by twk

  1. 1 hour ago, ericjhberg said:

    @Michael H. Thanks for the advice. I'm glad that these steps generally work for you. We are no stranger to new releases. We have been using VW for about 10 versions now (back to about 2008) and generally have followed the same formula you outlined...with some major exceptions.

     

    I have been working on the same project(s) for several years. One in particular has been a constant for almost 5 years now. Unfortunately, the logistics of keeping that project in VW2014 really aren't practical. Too many things have changed, let alone the memory of keeping over 5-6 different versions of the software installed on machines. Additionally, each version offers new features that have the potential to dramatically improve document efficiency (key word...potential).

     

    VW2019 is officially on SP2 and has been out for almost 4 months now...not quite up to your standard, but in our experience, previous versions have been much more stable by this point in time. We officially waited until SP2 before jumping in, but that decision is now considered a failed experiment.

     

    I function as the primary tester in the office and unfortunately, since many of our projects are so large, there is no way to adequately test functions at scale until jumping in and investing a large amount of time. It is always a risk and this time, the reward was not realized.

     

    That is a lot to ask. I get the point, but templates take time and the software should honor that time investment and not REQUIRE you to reinvest. I understand that this is an IDEAL and not practical, but that's what ideals are for, pushing the conversation. The real question is, when? I wish I knew when it was time to re-do a template, but unfortunately VW doesn't tell you...hey, your VW2017 carry over files are really the problem here. Fix those and you'll be fine. You have to find these things out the hard way and at the expense of considerable time and frustration.

     

    This I can relate to..

     

    on the other hand, surley Teamviewer sessions with Vectorworks Tech support would be much faster/cheaper/easier then bug submissions/phone calls/site visits?

    I should probably wishlist this..

     

     

     

  2. Here I created a custom object class:

    (tested and worked in VW2016)

    # save work before using
    
    def SetClassGroup_Contents(handle_to_group, className:str, descend=False):
    
        class CustomObject():
            def __init__(self, handle):
                self.handle = handle
    
                self.__old_class = vs.GetClass(self.handle)
    
            @property
            def old_class(self):
                return self.__old_class
    
            @old_class.setter
            def old_class(self, value):
                self.__old_class = value
    
            @property
            def obj_class(self):
                return vs.GetClass(self.handle)
    
            @obj_class.setter
            def obj_class(self, value):
                vs.SetClass(self.handle, value)
    
            def restore_old_class(self):
                self.obj_class = self.old_class
    
        if vs.GetTypeN(handle_to_group) == 11: # Only work on groups TypeGroup == 11
    
            if not descend:  # if descend parameter set then cycle through each item in group, default is set to false
                stored_objects = [] #type: list[CustomObject]
    
                def set_class_objs_in_group(h):
                    stored_objects.append(CustomObject(h))
    
                vs.ForEachObjectInList(set_class_objs_in_group,0,1,vs.FInGroup(handle_to_group)) # See Documentation for parameter descriptions
    
                vs.SetClass(handle_to_group,className) # Set Class of overall group
    
                for object in stored_objects:
                    object.restore_old_class()
    
            else:
                vs.SetClass(handle_to_group, className)  # Set Class of overall group
    
    
            vs.ReDrawAll()  # Sometimes my machine needs this to show updated attributes
            vs.ResetObject(handle_to_group) # Updates Object Info Pallette
    h = vs.FSActLayer()
    SetClassGroup_Contents(h,'NewClass1') # Use for apply to group only
    # SetClassGroup_Contents(h,'NEW CLASS', True) # Use for apply to group and contents

     

  3. Not sure if I'm following these correctly, but are you trying to create a function that sets the class of a group together with its contents?

     

    here's a custom function I created prior to 2018,

    def SetClassGroup_Contents(handle_to_group, className:str, descend=False):
        if vs.GetTypeN(handle_to_group) == 11: # Only work on groups TypeGroup == 11
    
            if descend:  # if descend parameter set then cycle through each item in group, default is set to false
                def set_class_objs_in_group(h):
                    vs.SetClass(h,className)
    
                vs.ForEachObjectInList(set_class_objs_in_group,0,1,vs.FInGroup(handle_to_group)) # See Documentation for parameter descriptions
    
            vs.SetClass(handle_to_group,className) # Set Class of overall group
            vs.ReDrawAll()  # Sometimes my machine needs this to show updated attributes
            vs.ResetObject(handle_to_group) # Updates Object Info Pallette
    
    h = vs.FSActLayer()
    SetClassGroup_Contents(h,'NEW CLASS') # Use for apply to group only
    SetClassGroup_Contents(h,'NEW CLASS', True) # Use for apply to group and contents

     

    I guess you could then use this on ForEachObject call for all the groups you've found.

     

    criteria = "(T=GROUP)"
    
    def apply_class(h):
        classNew = "NEW CLASS"
        SetClassGroup_Contents(h,classNew,True)
    
    vs.ForEachObject(apply_class,criteria)

     

    Also, I've never come across call vs.Layer('Design Layer-1') creating another 'Design Layer-2' layer. This has never happened to me. I use the vs.Layer() call all the time, especially in Project Sharing files

     

    HTH,

    Tui

     

  4. What I do generally,

    Design Layers relating to House Plan, are all storey aware ie tied to a real world story level, for example:

    Story 1 RL = 54.5m

    - Roof Plan - Story 1 - Offset from Story = 2.45m

    - Floor Plan - Story 1 - Offset from Story = 0.0m

    - Foundation Plan - Story 1 - Offset from Story = 0.0m

     

    Site Plan Design Layer:

    - Not tied to any story and design layer elevation set to 0.0m

    - Site Model has contours relating to real world levels, and site model object is always set to 0.0 z value

    - Then the House Plan related design layers are viewported onto the Site Plan design layer. And the viewport's z value is set to the desire RL/FFL. In this case 54.5m.  Apologies, the viewport should be kept at 0.0, as the Story level takes care of this step.

     

    Hope that makes sense. Would be easier to sketch it out, but hopefully these words will do for now.

     Cheers,

    Tui

    • Like 1
  5. Ok, I see now. I am in the process of re-installing my VW2018 on my second PC.

    I had it on there since March 2018, PC crashed last October. I re-installed windows, and VW, and activated it with no hiccups.

    Now the new Windows 10 version 1809 update has caused problems and I cant roll back to my previous (just installed 2 weeks ago) windows install, so I have to reinstall the this Windows 10 version 1809 as a fresh install and not an upgrade.

    This is all on my 2nd PC. so hopefully the vectorworks servers pick it up. I will notify our local resellers if there's any issues. Thanks for the clarifications @Jim Wilson

     

    Cheers,

    Tui

  6. Ok this is super confusing;

    So if I understand correctly @Jim Wilson;

     

    Say I have 1 E-series license, and 3 PCs.

    - PC1 > I installed VW on the 2nd of Feb

    - PC2 > I installed VW on the 4th of April

    - PC3 > nothing installing

    After 90 days on either install, the licensing/activation is dropped from whichever PC;

    - PC1 = 3rd May; so 4th of May license is free

    - PC2 = 3rd July; so 4th of July license is free

     

    So when I install onto PC3 on the 4th of May; the licensing moves from PC1 to PC3? and now I have PC2 and PC3 available for use only? Freeing up PC1?

     

     

    Another question:

    When you say licenses are tied to a machine, if my PC crashed, and I need to reinstall windows (same machine); re-installing VW on this machine, does that count as using up 1 of the 2 seats? Or does the servers know, its coming from this previously activated machine?

  7. theres something weird going on with the formatting, and my posts on this thread; It looks like their are hidden spaces being added between the s and ( in vs.GetCVis(CName))

    ClassVisibility = vs.GetCVis(CName)

    if you copy in the code above, or type it in manually it should work. (Replace this line in the script, with your manually typed one, or the snippet above)

    • Like 1
  8. 20 hours ago, NikF said:

    Please find enclosed some Lumion 9 renderings based on VW 2018.

    I'm still waiting for a Vectorworks LiveSynch as well for Lumion 9.

    So, please keep on asking this topic at the Lumion Forum (Lumion has to program that plugin): https://forum.lumion.com/index.php! --> WE NEED PLEASE A LIVE SYNCH FOR VECTORWORKS!

     

    Hi Nikolaus,

    Thanks for reminding me, have posted in the lumion forum requests, and an enhancement request here too (VE-99304 @Jim Wilson

     

    I guess we can just keep knocking till the door opens 😀

     

    Cheers,

    Tui

  9. Woah!. apologies, i had edited that post.. strange the edit didnt go through..

    the currentLayer_name call is incorrect

    it should be this:

    # November 13, 2018
    # Python converted from Patrick Stanford's script:
    # https://forum.vectorworks.net/index.php?/topic/59673-script-to-toggle-class-layer-on-and-off/&do=findComment&comment=297904
    
    import vs
    
    LName = '1-Slab'
    CName = 'Structural-Slab'
    
    LayerHandle = vs.GetLayerByName(LName)
    LayerVisibility = vs.GetObjectVariableInt(LayerHandle, 153)
    ClassVisibility = vs.GetCVis(CName)
    
    CurrentLayer_Name = vs.GetLName(vs.ActLayer())#Get Layer Name of current/active layer
    
    if any([LayerVisibility == 0, ClassVisibility == 0]):
        vs.Layer(LName)  # Jump to/Set Active layer name in LName variable
        vs.HideLayer()
        vs.HideClass(CName)
    
    else:
        vs.Layer(LName)  # Jump to/Set Active layer name in LName variable
        vs.ShowLayer()
        vs.ShowClass(CName)
    
    vs.Layer(CurrentLayer_Name)  # Jump Back to/Set Active current layer name

     

    • Like 1
  10. Here it is in python:

    # November 13, 2018
    # Python converted from Patrick Stanford's script:
    # https://forum.vectorworks.net/index.php?/topic/59673-script-to-toggle-class-layer-on-and-off/&do=findComment&comment=297904
    
    import vs
    
    LName = '1-Slab'
    CName = 'Structural-Slab'
    
    LayerHandle = vs.GetLayerByName(LName)
    LayerVisibility = vs.GetObjectVariableInt(LayerHandle, 153)
    ClassVisibility = vs.GetCVis(CName)
    
    CurrentLayer_Name = vs.GetLayerByName(vs.ActLayer())
    
    if any([LayerVisibility == 0, ClassVisibility == 0]):
        vs.Layer(LName)  # Jump to/Set Active layer name in LName variable
        vs.HideLayer()
        vs.HideClass(CName)
    
    else:
        vs.Layer(LName)  # Jump to/Set Active layer name in LName variable
        vs.ShowLayer()
        vs.ShowClass(CName)
    
    vs.Layer(CurrentLayer_Name)  # Jump Back to/Set Active current layer name

     

    • Like 1
  11. Its to do with the SetObjectVariableInt(LHand, 153, -1); {Layer to invisible}; you're actually applying the change to the whole layer (LHand).

    What I've done in the past is to use the ShowLayer, HideLayer, GrayLayer  calls.

     

    So your script would be instead:

    		Begin
    			{SetObjectVariableInt(LHand, 153, -1);  {Layer to invisible}}
    			Layer(GetLName(LHand)); {Jump to that particular layer}
    			HideLayer;
    			HideClass(CName);  {Class to invisibile}
    		End

     

    • Like 1
  12. 2 hours ago, Kevin McAllister said:

     

    I think I might re-align the seam when lofting the main tub so that the isocurves are a little cleaner for the sloped portion (bottom tub in the image). The VW interface for aligning them is not great but its a little easier if you Loft in top/plan.

     Good point! Looks better..

×
×
  • Create New...