【发布时间】:2021-02-12 06:04:06
【问题描述】:
我正在尝试将公式添加到 Revit 族中的参数。 目前我在一个项目中有多个家庭。我从该项目中运行 Dynamo,然后使用 Dynamo 标准节点提取我想要修改的族。
然后我使用一个 python 脚本节点遍历每个选定的族并找到我感兴趣的参数,并为其分配一个公式。 这似乎很好,直到我注意到它没有分配公式,而是将其作为字符串输入 - 就像在引号中一样。果然,我使用的代码只适用于文本类型参数。
有人可以阐明如何使用发电机将公式分配给参数吗?
见下面代码中的第 32 行
谢谢
for family in families:
TransactionManager.Instance.ForceCloseTransaction()
famdoc = doc.EditFamily(family)
FamilyMan = famdoc.FamilyManager
found.append(family.Name)
TransactionManager.Instance.EnsureInTransaction(famdoc)
check = 0
# Loop thru the list of parameters to assign formula values to them... these are given as imput
for r in range(len(param_name_lst)):
# Loop thru the list of parameters in the current family per the families outter loop above.
for param in FamilyMan.Parameters:
#for param in FamilyMan.get_Parameter(param_name_lst[r]):
# for each of the parameters get their name and store in paramName.
paramName = param.Definition.Name
# Check if we have a match in parameter name.
if param_name_lst[r] in paramName:
if param.CanAssignFormula:
canassignformula.append(param_name_lst[r])
else:
cannotassignformula.append(param_name_lst[r])
try:
# Make sure that the parameter is not locked.
if FamilyMan.IsParameterLocked(param):
FamilyMan.SetParameterLocked(param,False)
locked.append(paraName)
# Enter formula value to parameter.
FamilyMan.SetFormula(param, param_value_lst[r])
check += 1
except:
failed.append(paramName)
else:
continue
【问题讨论】: