Skip to content

Commit

Permalink
feat(parameter): add storage type utils
Browse files Browse the repository at this point in the history
  • Loading branch information
marcantondahmen committed Sep 27, 2021
1 parent 7026f17 commit 8396f4c
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 0 deletions.
61 changes: 61 additions & 0 deletions revitron/parameter.py
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,67 @@ def bind(category, paramName, paramType='Text', typeBinding=False):

return True

@staticmethod
def getStorageType(name):
"""
Get the storage type of a parameter definition by name.
Args:
name (string): The parameter name
Returns:
string: The storage type
"""
from revitron import DOC
try:
parameter = ParameterUtils._findDefinition(name)
return parameter.StorageType
except:
try:
return DOC.TypeOfStorage[ParameterUtils._findBip(name)]
except:
return None

@staticmethod
def _findDefinition(name):
"""
Find a custom parameter in a document.
Args:
name (string): The parameter name
Returns:
object: The parameter object
"""
from revitron import DOC
it = DOC.ParameterBindings.ForwardIterator()
while it.MoveNext():
if it.Key.Name == name:
return it.Key
return None

@staticmethod
def _findBip(name):
"""
Find a built-in parameter by name.
Args:
name (string): The parameter name
Returns:
object: The built-in parameter
"""
from revitron import DB
for item in dir(DB.BuiltInParameter):
try:
bip = getattr(DB.BuiltInParameter, item)
if DB.LabelUtils.GetLabelFor(bip) == name:
return bip
except:
pass
return None


class ParameterNameList:
"""
A helper class for listing all parameter names in the active document.
Expand Down
12 changes: 12 additions & 0 deletions tests/test_parameter.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,5 +120,17 @@ def testParameterTemplate(self):
).render()
)

def testParameterStorageTypes(self):

self.assertEquals(
str(revitron.ParameterUtils.getStorageType('Comments')),
'String'
)
self.assertEquals(str(revitron.ParameterUtils.getStorageType('Area')), 'Double')
self.assertEquals(
str(revitron.ParameterUtils.getStorageType('Number')),
'Integer'
)


utils.run(ParameterTests)

0 comments on commit 8396f4c

Please sign in to comment.