Get all Parameter Values, evaluate ? Revit 2024

hello,

how to use it correctly (Revit 2024). I want to use Element.EvaluateAllParameterValues()

import clr

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

clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *

clr.AddReference('System')
from System.Collections.Generic import List

clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

# Access the Revit application and document
app = DocumentManager.Instance.CurrentUIApplication
doc = DocumentManager.Instance.CurrentDBDocument

# Preparing input from Dynamo to Revit
elements = UnwrapElement(IN[0])

# Do some action in a Transaction
TransactionManager.Instance.EnsureInTransaction(doc)

output = []

for element in elements:
    output.append(element.EvaluateAllParameterValues(Options("Kommentar")))

# Commit the transaction
TransactionManager.Instance.TransactionTaskDone()

# Return the output back to Dynamo
OUT = output

KR

Andreas

Hi,

you can use it to get multiple parameter values for one element in one call


import clr
import System
from System.Collections.Generic import List, ISet, HashSet

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

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

# Access the Revit application and document
app = DocumentManager.Instance.CurrentUIApplication
doc = DocumentManager.Instance.CurrentDBDocument

# Preparing input from Dynamo to Revit
element = UnwrapElement(IN[0])

iset = HashSet[ElementId]()
iset.Add(ElementId(BuiltInParameter.ALL_MODEL_INSTANCE_COMMENTS))
iset.Add(ElementId(BuiltInParameter.SCHEDULE_LEVEL_PARAM))
iset.Add(ElementId(BuiltInParameter.HOST_ID_PARAM))


lstEvalPValues = element.EvaluateParameterValues(iset)

test = [[ p.Definition.Name , p.AsValueString(doc)] for p in lstEvalPValues] 
OUT = test
4 Likes

@c.poupin ,

i have still some trouble… i feed it with a single door…

is the syntex correct ?

when i want BuildIn - and SharedParameters…

import clr
import System
from System.Collections.Generic import List, ISet, HashSet

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

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

# Access the Revit application and document
app = DocumentManager.Instance.CurrentUIApplication
doc = DocumentManager.Instance.CurrentDBDocument

# Preparing input from Dynamo to Revit
element = UnwrapElement(IN[0])

iset = HashSet[ElementId]()
iset.Add(ElementId(BuiltInParameter.DOOR_WIDTH))
iset.Add(ElementId(BuiltInParameter.DOOR_HEIGHT))
iset.Add(ElementId(BuiltInParameter.HOST_ID_PARAM))
iset.Add(ElementId(LookupParameter("Feuerwiderstandsklasse_"))


lstEvalPValues = element.EvaluateParameterValues(iset)

test = [[ p.Definition.Name , p.AsValueString(doc)] for p in lstEvalPValues] 
OUT = test

grafik

KR

Andreas

Revit 2024?

And replace

iset.Add(ElementId(LookupParameter("Feuerwiderstandsklasse_")))

with

iset.Add(LookupParameter("Feuerwiderstandsklasse_").Id)

1 Like

@c.poupin

yes Revit 2024

this is “new in Revit API 2024” i test the nodes

import clr

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

clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *

clr.AddReference('System')
from System.Collections.Generic import List

clr.AddReference('RevitNodes')
import Revit
#clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

# Access the Revit application and document
app = DocumentManager.Instance.CurrentUIApplication
doc = DocumentManager.Instance.CurrentDBDocument

# Preparing input from Dynamo to Revit
element = UnwrapElement(IN[0])

iset = HashSet[ElementId]()
iset.Add(ElementId(BuiltInParameter.DOOR_WIDTH))
iset.Add(ElementId(BuiltInParameter.DOOR_HEIGHT))
iset.Add(ElementId(BuiltInParameter.HOST_ID_PARAM))
iset.Add(ElementId(LookupParameter("Feuerwiderstandsklasse_").Id))


lstEvalPValues = element.EvaluateParameterValues(iset)

test = [[ p.Definition.Name , p.AsValueString(doc)] for p in lstEvalPValues] 
OUT = test

it does not work… i am in Revit 2024

KR

Andreas

you need to import the HashSet class

from System.Collections.Generic import List, HashSet

1 Like

@c.poupin ,

do you have selected a single door? chatGPT is just doing weard stuff :wink:

grafik

it does not work

Strange error :roll_eyes:

here my config

1 Like

@c.poupin ,

i see i have older core! i will check

grafik

KR

Andreas

@c.poupin ,

no way … i can find it… i did the hotfix so dynamo and Revit uptodate

import clr

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

clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *

clr.AddReference('System')
from System.Collections.Generic import *

clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

# Access the Revit application and document
app = DocumentManager.Instance.CurrentUIApplication
doc = DocumentManager.Instance.CurrentDBDocument

# Preparing input from Dynamo to Revit
element = UnwrapElement(IN[0])

iset = HashSet[ElementId]()
iset.Add(ElementId(BuiltInParameter.DOOR_WIDTH))
iset.Add(ElementId(BuiltInParameter.DOOR_HEIGHT))
iset.Add(ElementId(BuiltInParameter.HOST_ID_PARAM))
#iset.Add(ElementId(LookupParameter("Feuerwiderstandsklasse_").Id))


lstEvalPValues = element.EvaluateParameterValues(iset)

test = [[ p.Definition.Name , p.AsValueString(doc)] for p in lstEvalPValues] 

OUT = test

Your version of Revit is 2024 .0.2 ?

Maybe try to change the python engine (IronPython 2 or IronPython3 ) ?

@c.poupin ,

there is only CPython3

Need to Install IronPython via Package Manager

@c.poupin ,

is already installed
grafik

it’s really strange that you can’t change Python engine (I’ll check on my side)

try to re-install Revit 2024

@c.poupin ,

reinstall and rerun the Hotfix…

thanks

KR

Andreas

@c.poupin ,

finished


grafik

emty list works…
grafik

i cant detect the error

it is the same … it has the same problems with library import