Ejemplo n.º 1
0
def get_elements_by_workset(w, doc=revit.doc):
    # quickly collect element belonging to a Workset
    # quick filter
    w_filter = DB.ElementWorksetFilter(w.Id)
    # collect with Design Option filter
    w_el_list = DB.FilteredElementCollector(doc) \
        .WherePasses(w_filter) \
        .WhereElementIsNotElementType() \
        .ToElements()
    return w_el_list
Ejemplo n.º 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)
Ejemplo n.º 3
0
        # 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]) \
                            .WherePasses(ws_filter) \
                            .WhereElementIsNotElementType() \
                            .ToElements()

                        counter = 0
                        for w in coll_elements:
                            # for each element get workset parameter
                            w_param = w.get_Parameter(
                                DB.BuiltInParameter.ELEM_PARTITION_PARAM)
                            if not w_param.IsReadOnly:  # don't touch elements with read-only parameter
                                try:
                                    w_param.Set(