Ejemplo n.º 1
0
def createMultiCategoryFilter():
    listOfCategories = list()
    listOfCategories.append(db.BuiltInCategory.OST_Floors)
    listOfCategories.append(db.BuiltInCategory.OST_StructuralColumns)
    listOfCategories.append(db.BuiltInCategory.OST_StructuralFraming)
    listOfCategories.append(db.BuiltInCategory.OST_StructuralFoundation)
    listOfCategories.append(db.BuiltInCategory.OST_Walls)
    iCollectionOfCategoriesForMultiCategoryFIlter = List[db.BuiltInCategory](
        listOfCategories)
    multiCategoryFilter = db.ElementMulticategoryFilter(
        iCollectionOfCategoriesForMultiCategoryFIlter)
    return multiCategoryFilter
Ejemplo n.º 2
0
ueWrapper = None
wrappers = clr.GetClrType(Revit.Elements.ElementWrapper).GetMethods()
for w in wrappers:
    if w.ToString().startswith("Revit.Elements.UnknownElement"):
        ueWrapper = w
        break

for link in links:
    try:
        if RevitLinkType.IsLoaded(doc, link.GetTypeId()):
            linkDoc = link.GetLinkDocument()

            if isinstance(cats[0], DB.Category):
                catId = List[DB.ElementId](c.Id for c in cats)
                filter = DB.ElementMulticategoryFilter(catId)
            elif isinstance(cats[0], DB.ElementType):
                types = List[System.Type](t.GetType() for t in cats)
                filter = DB.ElementMulticlassFilter(types)
            else:
                types = List[System.Type](cats)
                filter = DB.ElementMulticlassFilter(types)

            fec = FilteredElementCollector(
                linkDoc).WhereElementIsNotElementType().WherePasses(filter)
            linkEls = []
            for e in fec:
                try:
                    linkEls.append(e.ToDSType(True))
                except:
                    if ueWrapper:
Ejemplo n.º 3
0
data = {}


def get_parameter_storage_type(parameter):
    if isinstance(parameter, DB.Parameter):
        storage_type = parameter.StorageType
        if storage_type == DB.StorageType.Integer:
            return 'AsInteger()'
        elif storage_type == DB.StorageType.Double:
            return 'AsDouble()'
        elif storage_type == DB.StorageType.String:
            return 'AsString()'


categories_typed = List[DB.BuiltInCategory](categories)
multicategory_filter = DB.ElementMulticategoryFilter(categories_typed)

elements = FEC(doc).WherePasses(
    multicategory_filter).WhereElementIsNotElementType().ToElements()

for element in elements:
    element_id = element.Id.ToString()
    data[element_id] = {}
    for parameter_name in parameter_names:
        parameter = element.LookupParameter(parameter_name)
        storage_type = get_parameter_storage_type(parameter)
        exec 'value = element.LookupParameter(parameter_name).{}'.format(
            storage_type)
        if value:
            data[element_id][parameter_name] = value
        else: