Jump to content

The Hamma

Member
  • Content Count

    165
  • Joined

  • Last visited

Everything posted by The Hamma

  1. Not inserting the symbol in the wall or using PIO seems to be the best course of action. The symbols visualization works fine if is not nested in a wall. If it is nested I can remove it and re-nest it and the visualization works fine. I still think this is a glitch since it just takes some sort of refresh to make it work. That being said vs.redrawall() does not work (it actually causes every item changed not to refresh). For the most part I think I can work around it but it a bit aggravating.
  2. I added your script to mine and it works great but I think I found a Vectorworks bug. This is a view of a wall with objects after running the script on the symbol in the wall. As you can see in the record the phase has been changed to Existing but the appearance still shows as New. Now if I change the Object Criteria in the Data Visualization or close and reopen the drawing the symbol in wall will appear correctly. I have set my graphic settings up and down with no change. PIO object change fine, I only have this issue with symbols in wall and the issue is not isolated to the script. If I change the phase manually I have the same issue. container = 'none' #set global variable phase = 'Existing' def SetPIOAttribute(h): global container #declare global variable to be retained vs.SetRecord(h,'Construction Phase') #add record to inserted object vs.SetRField(h,'Construction Phase','Phase', phase) #modify record to inserted object itChild = vs.GetTypeN(h) #Get Child type (not necessary) hParent = vs.GetParent(h) #Get Parent handle itParent = vs.GetTypeN(hParent) #Get Parent type #If Parent type is a wall set container to state PIOinwallwasdetected if itParent == 68: container = 'PIOinwallwasdetected' #Add and change record of wall and inserted items (only changes wall at this time) def SetAttribute(h): vs.SetRecord(h,'Construction Phase') vs.SetRField(h,'Construction Phase','Phase', phase) vs.ForEachObject(SetPIOAttribute, "((NOTINDLVP & NOTINREFDLVP & ((PON='Door')|(T=SYMBOL)|(PON='Window')) & (V) & (SEL=TRUE)))") #If PIO was selected and wall was not then container var PIOinwallwasdetected is true then script will end if not then wall was selected and script will continue to def SetAttribute if container != 'PIOinwallwasdetected': h1 = vs.FIn3D(vs.FSActLayer()) while h1 != (): if vs.GetTypeN(h1) == 15: vs.SetRecord(h1,'Construction Phase') vs.SetRField(h1,'Construction Phase','Phase', phase) if vs.GetTypeN(h1) == 86: vs.SetRecord(h1,'Construction Phase') vs.SetRField(h1,'Construction Phase','Phase', phase) h1=vs.NextObj(h1) vs.ForEachObject(SetAttribute, "((NOTINDLVP & NOTINREFDLVP & (V) & (SEL=TRUE)))")
  3. I made this script to apply a record to items selected. The goal is the following: If object in wall is selected add and change record to the object in the wall only. (works as designed) If wall is selected add and change record to the wall and all objects inserted in the wall. (Only changes the wall not the inserted objects) #set global variable container = 'none' def SetPIOAttribute(h): global container #declare global variable to be retained vs.SetRecord(h,'Construction Phase') #add record to inserted object vs.SetRField(h,'Construction Phase','Phase','New') #modify record to inserted object itChild = vs.GetTypeN(h) #Get Child type (not necessary) hParent = vs.GetParent(h) #Get Parent handle itParent = vs.GetTypeN(hParent)#Get Parent type if itParent == 68: #If Parent type is a wall set container to state PIOinwallwasdetected container = 'PIOinwallwasdetected' #Add and change record of wall and inserted items (only changes wall at this time) def SetAttribute(h): vs.SetRecord(h,'Construction Phase') vs.SetRField(h,'Construction Phase','Phase','New') vs.ForEachObject(SetPIOAttribute, "((NOTINDLVP & NOTINREFDLVP & ((PON='Door')|(T=SYMBOL)|(PON='Window')) & (V) & (SEL=TRUE)))") #If PIO was selected and wall was not then container var PIOinwallwasdetected is true then script will end if not then wall was selected and script will continue to def SetAttribute if container != 'PIOinwallwasdetected': vs.ForEachObject(SetAttribute, "((NOTINDLVP & NOTINREFDLVP & (V) & (SEL=TRUE)))")
  4. Using part of twk's script I have tried to create a script that will sort sheet layers and their objects classes. The goal is to have all objects in the sheet layer in the following classes Borders, Veiwports, Groups and other objects on sheet layer = 'SheetClass' Viewport Annotations including components of groups with in the annotations = 'Annotations' Drawing Label = 'Drawing Labels' Everything works accept the components of groups within the annotations of a Viewport. Any suggestions? Python Script #collect handles of selected VPs on active layer def GetHandle(h): vs.SetClass(h,'SheetClass') if vs.GetTypeN(h) == 122: if vs.GetParent(h) == vs.ActLayer(): hVP.append(h) hVP = [] vs.ForEachObjectInLayer( GetHandle,0,2,0 ) #Traverse into the annotations group of selected VPs set classes for VP in hVP: anno = vs.GetVPGroup(VP, 2) h = vs.FInGroup(anno) objs = [h] h = vs.NextObj(h) while h != vs.Handle(0): objs.append(h) h = vs.NextObj(h) for obj in objs: if vs.GetObjectVariableString(obj,1166) == 'Drawing Label': vs.SetClass(obj,'Drawing Labels') else: 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(obj)) # See Documentation for parameter descriptions vs.SetClass(handle_to_group,'annotation') # Set Class of overall group for object in stored_objects: object.restore_old_class() else: vs.SetClass(obj,'annotation')
  5. Any resolution to this issue?
  6. Thanks, I tried it but I get stake objects placed not a "PrintLocus" symbol. Am I doing something wrong, do I need to the symbol prior to running the script?
  7. This is better but slower than working with the point cloud. Just need a way to make the points larger scale when zoomed in. They are so small when close they are almost invisible. The 3d loci are distracting because they have 3 lines for each loci.
  8. Often times I run a command and vectorworks takes an exorbitant amount of time to compute. This time I was trying to convert an exterior elevation to lines. It has been running for about an hour now with no progress. There needs to be a way to quit commands without loosing your work. Or just fix vectorworks so it doesn't take so long. I am sure if it used 100% of the CPU's it would be much quicker.
  9. When using the move tool to create duplicates is great but often I forget that I have set the copy to on and increased the number of duplicates. It would be nice if there was one button to reset it to 1 and turn of the duplicate option.
  10. I wish that there was an option to make some objects that are hidden behind other objects to appear in rendered images even if the object it is behind is not transparent. See the attached image. PARTIAL FRAMING MODEL.pdf
  11. Could the "BeginFloor" command be replaced with a simple extrude? If you ungroup the floor, it becomes a floor and a rectangle. At this time the floor can be rendered by setting the correct attributes.
  12. Love the script but I do have a question. Do you know why the countertop does not have the correct texture in VW 2019
  13. This modification corrects the issue but it seems to me that if the points are read from HCenter as inches then they should be passed to RegularPolygon as inches. HCenter(h,Px,Py); RegularPolygon((Px*25.4),(Py*25.4),(9*25.4),6,1);
  14. Yes, I did try adding the unit to the script but that does not work either. The size and the location of the created polygon are still 1/25.4 scaled.
  15. I have attached a file with two scripts in progress. It is a script that I was developing to replace circles with hexagons. The first version doesn't work as expected. It creates the hexagons but they are 1/25.40157 sized and location from the origin. I modified the script to multiply the X,Y coordinates by 24.40157 and the size. This places the hexagons in their proper location and size. It seems that the script is converting the units to mm from inches. If I set the drawing units to mm the first script works Script Error.vwx
  16. Oh, how much joy it is to see that your file was backed up just before Vectorworks begins to not respond and you can just kill VectorWorks instead of waiting for the 20-30 minutes for it to come back to life.
  17. Not responding all of the time. I will not be sending Vectorworks any more money if they do not get this fixed soon.
  18. I have created a test file (attached). It seems to me that it is rather slow to update the viewport when all that is being shown is a 2d component of the symbol. Am I doing something wrong? Test.vwx
  19. Please add an overhead COILING door option to the door tool.
  20. The 2018 version is just slow all around!! zooming in and out as well as rendering and rotating renderings. editing PIO's. etc.
  21. Did you ever solve this issue, I have the same.

 

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