def get_worksetcleaners(): workse_funcs = [] # if model is workshared, get a list of current worksets if revit.doc.IsWorkshared: cl = DB.FilteredWorksetCollector(revit.doc) worksetlist = cl.OfKind(DB.WorksetKind.UserWorkset) # duplicate the workset element remover function for each workset for workset in worksetlist: workse_funcs.append(copy_func(template_workset_remover, workset.Name)) return workse_funcs
def template_workset_remover(workset_name=None): workset_list = DB.FilteredWorksetCollector(revit.doc)\ .OfKind(DB.WorksetKind.UserWorkset) workset_dict = {workset.Name: workset.Id for workset in workset_list} element_workset_filter = \ DB.ElementWorksetFilter(workset_dict[workset_name], False) workset_elements = DB.FilteredElementCollector(revit.doc)\ .WherePasses(element_workset_filter)\ .ToElements() print_header('REMOVING ALL ELEMENTS ON WORKSET "{}"'.format(workset_name)) remove_action('Remove All on WS: {}'.format(workset_name), 'Workset Element', workset_elements)
def get_worksetcleaners(): workset_funcs = [] # if model is workshared, get a list of current worksets if revit.doc.IsWorkshared: cl = DB.FilteredWorksetCollector(revit.doc) worksetlist = cl.OfKind(DB.WorksetKind.UserWorkset) # duplicate the workset element remover function for each workset for workset in worksetlist: # copying functions is not implemented in IronPython 2.7.3 # this method initially used copy_func to create a func for # each workset but now passes on the template func # with appropriate arguments docstr = WORKSET_FUNC_DOCSTRING_TEMPLATE.format(workset.Name) workset_funcs.append( WorksetFuncData(func=template_workset_remover, docstring=docstr, args=(workset.Name, ))) return workset_funcs
def find_workset(workset_name_or_list, doc=None, partial=True): workset_clctr = \ DB.FilteredWorksetCollector(doc or HOST_APP.doc).ToWorksets() if type(workset_name_or_list) == list: for workset in workset_clctr: for workset_name in workset_name_or_list: if workset_name in workset.Name: return workset elif type(workset_name_or_list) == str: workset_name = workset_name_or_list if partial: for workset in workset_clctr: if workset_name in workset.Name: return workset else: for workset in workset_clctr: if workset_name == workset.Name: return workset
phasep.AsValueString().ljust(25) if phasep else '---'.ljust(25), underlayp.AsValueString().ljust(25) if underlayp else '---'.ljust(25))) elif selected_switch == 'View Templates': cl_views = DB.FilteredElementCollector(revit.doc) views = cl_views.OfCategory(DB.BuiltInCategory.OST_Views)\ .WhereElementIsNotElementType().ToElements() for v in views: if v.IsTemplate: print('ID: {1} {0}'.format(v.ViewName, str(v.Id).ljust(10))) elif selected_switch == 'Worksets': cl = DB.FilteredWorksetCollector(revit.doc) worksetlist = cl.OfKind(DB.WorksetKind.UserWorkset) if revit.doc.IsWorkshared: for ws in worksetlist: print('WORKSET: {0} ID: {1}'.format(ws.Name.ljust(50), ws.Id)) else: forms.alert('Model is not workshared.') elif selected_switch == 'Revision Clouds': cl = DB.FilteredElementCollector(revit.doc) revs = cl.OfCategory(DB.BuiltInCategory.OST_RevisionClouds)\ .WhereElementIsNotElementType() for rev in revs: parent = revit.doc.GetElement(rev.OwnerViewId)
"Stair": DB.BuiltInCategory.OST_Stairs, "Railing": DB.BuiltInCategory.OST_StairsRailing, "Doors": DB.BuiltInCategory.OST_Doors, "Furniture": DB.BuiltInCategory.OST_Furniture, "Plumbing": DB.BuiltInCategory.OST_PlumbingFixtures, "Roof": DB.BuiltInCategory.OST_Roofs, "Ceiling": DB.BuiltInCategory.OST_Ceilings, } # Check model is workshared if forms.check_workshared(revit.doc, 'Model is not workshared.'): # Check all elements are ungrouped if check_ungrouped(): # Collect all worksets in model with Filtered Workset Collector coll_worksets = DB.FilteredWorksetCollector(revit.doc).OfKind( DB.WorksetKind.UserWorkset) # Iterate through categories in dictionary for keyword in cat_dict: with revit.Transaction(keyword, revit.doc): for ws in coll_worksets: # check for keyword in workset name if keyword in ws.Name or keyword.upper( ) in ws.Name or keyword.lower() in ws.Name: # inverted workset filter - pick up elements that are not in workset ws_filter = DB.ElementWorksetFilter(ws.Id, True) # collect all elements of category coll_elements = DB.FilteredElementCollector(revit.doc) \ .OfCategory(cat_dict[keyword]) \