Dear professionals,
could you please advise how to get out of a SharedParameterElement class a regular DB Revit Parameter in order use all the properties and method that we can use DB.Parameter class?
what are you trying exactly? is this a Parameter issue ?
like snooping Parameters
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
doc = DocumentManager.Instance.CurrentDBDocument
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
iterator = doc.ParameterBindings.ForwardIterator()
data = []
while iterator.MoveNext():
vag = iterator.Key.VariesAcrossGroups
name = iterator.Key.Name
id = iterator.Key.Id
pgs = iterator.Key.ParameterGroup
pts = iterator.Key.ParameterType
uts = iterator.Key.GetSpecTypeId()
isvis = iterator.Key.Visible
total = [name, id, pgs, pts, uts, isvis, vag]
data.append(total)
OUT = data
KR
Andreas
Hi,
you can use the Guid of SharedParameterElement
here an example
import clr
import sys
import System
from System.Collections.Generic import List
# Import RevitAPI Classes
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *
# Import DocumentManager and TransactionManager
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
elem = UnwrapElement(IN[0])
sharedParameterName = IN[1]
filterName = System.Predicate[System.Object](lambda x : x.Name == sharedParameterName)
sharedParameter = List[Element](
FilteredElementCollector(doc)\
.OfClass(SharedParameterElement)\
.ToElements()).Find(filterName)
if sharedParameter is not None:
elemType = doc.GetElement(elem.GetTypeId())
parameterElem = elemType.get_Parameter(sharedParameter.GuidValue)
OUT = sharedParameter, parameterElem, parameterElem.Definition.Name
2 Likes