<p>我正在尝试向Revit族中的参数添加公式。
目前,我在一个项目中有多个族。我从该项目中运行Dynamo,然后使用Dynamo标准节点提取要修改的族</p>
<p>然后,我使用一个python脚本节点遍历每个选定的族,找到我感兴趣的参数,并为其指定一个公式。
这似乎很好,直到我注意到它没有指定公式,而是以字符串的形式输入,就像在引号中一样。当然,我使用的代码只适用于文本类型参数</p>
<p>有人能说明如何使用dynamo为参数指定公式吗</p>
<p>参见下面代码中的第32行</p>
<p>谢谢</p>
<p/><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
<div^{cl2}$
<pre class="snippet-code-html lang-html prettyprint-override"><code>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
</code></pre>
</div>
</div>