How can I set the Model Categories Transparency with python in Dynamo?

How can I set the Model Categories Transparency with python in Dynamo? I see how to set the element overrides but not the categories overrides in some Dynamo packages


I want just python code. this works with active view but I do not achieve it with a list of views

import clr

clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application

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

clr.AddReference('RevitAPI')
clr.AddReference('RevitServices')

from Autodesk.Revit.DB import *
from RevitServices.Persistence import DocumentManager
import System

doc = DocumentManager.Instance.CurrentDBDocument
TransactionManager.Instance.EnsureInTransaction(doc)
# Create a new OverrideGraphicSettings object
ogs = OverrideGraphicSettings()

# Set the transparency to 80%
ogs.SetSurfaceTransparency(80)

# Get the categories as per your condition
categories = [cat for cat in doc.Settings.Categories if cat.CategoryType == CategoryType.Model and 'Casework' in cat.Name]

# Get the active view
view = doc.ActiveView

# Iterate over categories and set the overrides
for category in categories:
    view.SetCategoryOverrides(category.Id, ogs)
TransactionManager.Instance.TransactionTaskDone()

OUT = IN[0]

Hi,

Archilab have some…and think from 2022 you can find one ootb, but not 100 sure you can find it in other versions…cant remember

1 Like

I want just python code.

You need to iterate over the views, you only use the active view. See how you loop over categories as example

it does not work, reason to write this post…do I need to iterate thorugh the overridesettings as well in the loop?

import clr

clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application

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

clr.AddReference('RevitAPI')
clr.AddReference('RevitServices')

from Autodesk.Revit.DB import *
from RevitServices.Persistence import DocumentManager
import System

doc = DocumentManager.Instance.CurrentDBDocument
TransactionManager.Instance.EnsureInTransaction(doc)

# Create a new OverrideGraphicSettings object
ogs = OverrideGraphicSettings()

# Set the transparency to 80%
ogs.SetSurfaceTransparency(80)

# Get the categories as per your condition
categories = [cat for cat in doc.Settings.Categories if cat.CategoryType == CategoryType.Model and cat.Name == "Casework"]

# Get the list of views from IN[0]
views = UnwrapElement(IN[0])  # Unwrap the views from ElementId

# Iterate over each view
for view in views:
    # Iterate over categories and set the overrides for the current view
    for category in categories:
        view.SetCategoryOverrides(category.Id, ogs)

TransactionManager.Instance.TransactionTaskDone()

OUT = IN[0]