예제 #1
0
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
예제 #2
0
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)
예제 #3
0
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
예제 #4
0
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
예제 #5
0
                      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)
예제 #6
0
    "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]) \