Dynamo Revit为族中的参数设置公式

2024-09-28 22:23:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试向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

Tags: ofthenameinfor参数ifparam
2条回答

Revit参数只能指定给族编辑器中的公式,这是第一点,因此您应该在族编辑器中为每个族运行dynamo脚本,这将浪费时间,您只需在每个族中手动编辑参数的公式即可

第二点,我甚至不认为可以自动设置某个参数的公式,必须手动设置(我在Revit API文档中没有看到任何相关内容)

实际上,您可以从主项目访问族,并且可以自动指定公式。。。。这就是我目前所做的,我在一个项目中加载我想要的所有族并运行脚本。 在做了很多工作之后,我能够找出我做错了什么,并且在我的代码中没有。。。我的密码很好。 主要的问题是,我需要将我的公式的所有依赖项排列起来。。。。就像手动模式一样。 如果我的公式是:

大小查找(我的ID、我的变量、我的默认值、ND1、ND2)

那么我需要具备以下条件:

  1. MY_ID_tbl应该存在并被分配一个有效值,在这种情况下,它应该有一个csv文件名。此外,还应加载该文件。这对于下一步很重要
  2. 我的变量应该在csv文件中定义,ND1、ND2也是如此
  3. 默认值(My_default_value)应该与csv文件中关于该变量的内容相匹配……在本例中,它是一个文本

不用说,我并没有将上面的所有内容都按它应该的方式排列好,一旦我解决了这个问题,我的setFormula代码就完成了它的工作。我必须完全改变我的过程,因为我必须首先创建my_ID_tbl并加载csv文件,我也使用dynamo,然后使用dynamo输入公式

相关问题 更多 >