Populate Parameter Tooltip from Excel data

revit
#1

Hi All,
This is an extension to the Topic Adding Shared Parameters with data from Excel solved by @Kulkul earlier

Intent is to have Tooltips text in another Column in the Excel (source) sheet, so it gets populated when creating the (shared) parameter. Wondering if there is any method in the API to access this? Possible to do this?

Thanks,
R. Chandrasekar

1 Like

#2

Has anyone tried to populate Parameter tooltip from Excel data while adding new shared Parameters?

Thank you!

0 Likes

#3

Hi and welcome to the forum. Could you read this before posting ? Thanks :slight_smile:

0 Likes

#4

SOLVED!

API for ExternalDefinitionCreationOptions:
http://forums.autodesk.com/t5/revit-api-forum/how-to-access-shared-parameter-tooltip-in-revit-2016/td-p/6026596

[…CODE…]

_description = IN[0][7]

def ParamBindingExists(_doc, _paramName, _paramType):
map = doc.ParameterBindings
iterator = map.ForwardIterator()
iterator.Reset()
while iterator.MoveNext():
if iterator.Key != None and iterator.Key.Name == _paramName and iterator.Key.ParameterType == _paramType:
paramExists = True
break
else:
paramExists = False
return paramExists

def RemoveParamBinding(_doc, _paramName, _paramType):
map = doc.ParameterBindings
iterator = map.ForwardIterator()
iterator.Reset()
while iterator.MoveNext():
if iterator.Key != None and iterator.Key.Name == _paramName and iterator.Key.ParameterType == _paramType:
definition = iterator.Key
break
message = None
if definition != None:
map.Remove(definition)
message = "Success"
return message

def addParam(doc, _paramName, _visible, _instance, _groupName, _paramGroup, _description, k):
message = None
if ParamBindingExists(doc, _paramName, _paramType):
if not RemoveParamBinding(doc, _paramName, _paramType) == “Success”:
message = "Param Binding Not Removed Successfully"
else:
message = None

group = file.Groups.get_Item(_groupName)
if group == None:
	group = file.Groups.Create(_groupName)
if group.Definitions.Contains(group.Definitions.Item[_paramName]):
	_def = group.Definitions.Item[_paramName]
else:
	_def = group.Definitions.Create(opt)
param = doc.ParameterBindings.Insert(_def, bind, _paramGroup)
return message

#“Start” the transaction
TransactionManager.Instance.EnsureInTransaction(doc)

try:
file = app.OpenSharedParameterFile()
except:
message = "No Shared Parameter file found."
pass
k=0
while k<_paramName.Count:
builtInCategory = System.Enum.ToObject(BuiltInCategory, _category[k].Id)
cats = app.Create.NewCategorySet()
cats.Insert(doc.Settings.Categories.get_Item(builtInCategory))
if _instance[k] == “true”:
bind = app.Create.NewInstanceBinding(cats)
else:
bind = app.Create.NewTypeBinding(cats)
opt = ExternalDefinitionCreationOptions(_paramName[k], _paramType[k])
#Revit 2015 Fehler “ExternalDefinit[ i ]onCreationOptions”
opt.Visible = _visible[k]
opt.Description = _description[k]
if isinstance(_paramName[k], list):
for i in _paramName[k]:
message = addParam(doc, i, _visible[k], _instance[k], _groupName[k], _paramGroup[k], _description[k], k)
else:
message = addParam(doc, _paramName[k], _visible[k], _instance[k], _groupName[k], _paramGroup[k], _description[k], k)
k=k+1

“End” the transaction

TransactionManager.Instance.TransactionTaskDone()

1 Like

#5

Nice answer, but as a new user, you could need to read this too:

0 Likes