我正在尝试向Revit族中的参数添加公式。 目前,我在一个项目中有多个族。我从该项目中运行Dynamo,然后使用Dynamo标准节点提取要修改的族
然后,我使用一个python脚本节点遍历每个选定的族,找到我感兴趣的参数,并为其指定一个公式。 这似乎很好,直到我注意到它没有指定公式,而是以字符串的形式输入,就像在引号中一样。当然,我使用的代码只适用于文本类型参数
有人能说明如何使用dynamo为参数指定公式吗
参见下面代码中的第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
Revit参数只能指定给族编辑器中的公式,这是第一点,因此您应该在族编辑器中为每个族运行dynamo脚本,这将浪费时间,您只需在每个族中手动编辑参数的公式即可
第二点,我甚至不认为可以自动设置某个参数的公式,必须手动设置(我在Revit API文档中没有看到任何相关内容)
实际上,您可以从主项目访问族,并且可以自动指定公式。。。。这就是我目前所做的,我在一个项目中加载我想要的所有族并运行脚本。 在做了很多工作之后,我能够找出我做错了什么,并且在我的代码中没有。。。我的密码很好。 主要的问题是,我需要将我的公式的所有依赖项排列起来。。。。就像手动模式一样。 如果我的公式是:
大小查找(我的ID、我的变量、我的默认值、ND1、ND2)
那么我需要具备以下条件:
不用说,我并没有将上面的所有内容都按它应该的方式排列好,一旦我解决了这个问题,我的setFormula代码就完成了它的工作。我必须完全改变我的过程,因为我必须首先创建my_ID_tbl并加载csv文件,我也使用dynamo,然后使用dynamo输入公式
相关问题 更多 >
编程相关推荐