Override Crop Region in All Views

So I am trying to override crop region properties in all views with specific view template

import clr
clr.AddReference('RevitAPI')
clr.AddReference('RevitServices')
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
from Autodesk.Revit.DB import *

# Define variables
element = UnwrapElement(IN[0])
views = UnwrapElement(IN[1])
line_weight = IN[2]
line_pattern = UnwrapElement(IN[3])

# Get current doc
doc = DocumentManager.Instance.CurrentDBDocument

# Start Transaction
TransactionManager.Instance.EnsureInTransaction(doc)

# Loop through each view
for view in views:
    # Get the view ID
    view_id = view.Id
    # Override element in view
    override_settings = OverrideGraphicSettings()
    override_settings.SetProjectionLineWeight(line_weight)
    override_settings.SetProjectionLinePatternId(line_pattern.Id)
    doc.ActiveView.SetElementOverrides(element.Id, override_settings, view_id)

# End Transaction
TransactionManager.Instance.TransactionTaskDone()

# Output 
OUT = 0

The error I get “Warning: AttributeError : ‘list’ object has no attribute ‘Id’ [’ File “”, line 38, in \n’]”
Any idea?

“element” is list, so you must loop element in list like view in views

Ok I looped through elements list as well but I got “No method matches given arguments for SetElementOverrides” error

import clr
clr.AddReference('RevitAPI')
clr.AddReference('RevitServices')
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
from Autodesk.Revit.DB import *

# Define variables
elements = UnwrapElement(IN[0])
views = UnwrapElement(IN[1])
line_weight = IN[2]
line_pattern = UnwrapElement(IN[3])

# Get current doc
doc = DocumentManager.Instance.CurrentDBDocument

# Start Transaction
TransactionManager.Instance.EnsureInTransaction(doc)

# Loop through each element/ view
for element, view in zip(elements, views):
    # Get the view ID
    view_id = view.Id
    # Override element in view
    override_settings = OverrideGraphicSettings()
    override_settings.SetProjectionLineWeight(line_weight)
    override_settings.SetProjectionLinePatternId(line_pattern.Id)
    doc.ActiveView.SetElementOverrides(element.Id, override_settings, view_id)

# End Transaction
TransactionManager.Instance.TransactionTaskDone()

# Output 
OUT = 'ok'

Hi You can see It menthod is 2 arguments (elementId, overrideSetting) but you push 3 arguments ( (+“view_id”).

image

Thanks That worked

import clr
clr.AddReference('RevitAPI')
clr.AddReference('RevitServices')
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
from Autodesk.Revit.DB import *

# Define variables
elements = UnwrapElement(IN[0])
views = UnwrapElement(IN[1])
line_weight = IN[2]
line_pattern = UnwrapElement(IN[3])

# Get current doc
doc = DocumentManager.Instance.CurrentDBDocument

# Start Transaction
TransactionManager.Instance.EnsureInTransaction(doc)

# Loop through each element/ view
for element, view in zip(elements, views):
    # Get the view ID
    view_id = view.Id
    # Override element in view
    override_settings = OverrideGraphicSettings()
    override_settings.SetProjectionLineWeight(line_weight)
    override_settings.SetProjectionLinePatternId(line_pattern.Id)
    view.SetElementOverrides(element.Id, override_settings)
# End Transaction
TransactionManager.Instance.TransactionTaskDone()

# Output 
OUT = 'ok'

I also switched to View. instead of ActiveView
Thanks @manhgt214