Retrieve Project Browser Organization

Hi! I´mtrying to retrive this information from a project in a dynamo script. I could not get it done. I just retrieve The Project Browser. I Need to retrieve this items from a model:

1 Like

The class here does the trick. Not aware of any custom packages supporting this in node form currently.

Yes, I´m trying to retrieve those from that code, but steel I could´nt get them :frowning:

Ok share the code you have so people can assist further.

import clr
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
clr.AddReference("RevitAPI")
from Autodesk.Revit.DB import *
clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.Elements)
doc = DocumentManager.Instance.CurrentDBDocument

pb = BrowserOrganization.GetCurrentBrowserOrganizationForViews(doc)
name = []
for p in pb.Parameters:
    name.append(p.Element)
OUT = name

This will get you the names. not the elements. OBS Works in 2024 have been having truble getting it to work in older versions. also i doesnt work if you use built in parameters i have no clue why.

dont put anything in to the inputs taken out from a custom node i made

Package SEGOKS if you want a node for it

import clr
# Import RevitAPI
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
doc = DocumentManager.Instance.CurrentDBDocument

browsers = FilteredElementCollector(doc).OfClass(BrowserOrganization).ToElements()

for b in browsers :
	viewBrowser=b.GetCurrentBrowserOrganizationForViews(doc)
	viewBrowserSheet=b.GetCurrentBrowserOrganizationForSheets(doc)
	
	
View_folders = viewBrowser.GetFolderItems(doc.ActiveView.Id)
output = []
for folder in View_folders:
        fID = doc.GetElement(folder.ElementId).Name
        output.append(fID)

Sheet_folders = viewBrowserSheet.GetFolderItems(doc.ActiveView.Id)
outputb = []
        
for folder in Sheet_folders:
        sID = doc.GetElement(folder.ElementId).Name
        outputb.append(sID)
        

OUT = output,outputb

To clarify


works


will return null

1 Like

Hi,

try this

Edit Code updated for Project Parameters

import sys
import clr
import System
from System.Collections.Generic import List

clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *
import Autodesk.Revit.DB as DB

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
uidoc = uiapp.ActiveUIDocument
app = uiapp.Application
sdkNumber = int(app.VersionNumber)

clr.AddReference("System.Core")
clr.ImportExtensions(System.Linq)

bip_values = [System.Convert.ToInt32(x) for x in System.Enum.GetValues(BuiltInParameter)]

project_view = FilteredElementCollector(doc).OfClass(View).WhereElementIsNotElementType().First(lambda x : x.ViewType == ViewType.ProjectBrowser)

viewBrowser = BrowserOrganization.GetCurrentBrowserOrganizationForViews(doc)


view_folders = viewBrowser.GetFolderItems(project_view.Id)
output = []
for folder in view_folders:
    id_value = getattr(folder.ElementId, "Value" if sdkNumber >= 2024 else "IntegerValue")
    if id_value in bip_values:
        para_bip = System.Enum.ToObject(BuiltInParameter, id_value) 
        output.append(LabelUtils.GetLabelFor(para_bip))
    else:
        para_elem = doc.GetElement(folder.ElementId)
        output.append(para_elem.Name)
    
    
OUT = output
6 Likes