如何在 revit-api c# 中将参数添加到 revit 文档中的 revit 族元素

How to add parameters to a revit family element from revit document in revit-api c#

我正在开展一个项目,我需要在 revit 文档中加载管件(弯头)revit 族并将其共享参数更新为类型参数。

我能够完成这个任务,因为我需要访问弯曲族作为族实例。

要求的第二部分也是更新折弯的耦合族参数。 问题是我无法从 revit 文档访问耦合参数。

如果我手动尝试,耦合参数只有在我双击折弯族时才能访问,这会打开 revit 族文件。然后我可以访问弯曲两侧的两个联轴器。 我怎样才能完成上述任务,以编程方式将参数添加到 revit 文档中的 revit 族元素。

请指导我。

提前谢谢你。

我的代码:

 foreach (var item in MainModel.listElement)//List<Element>
 {
    FamilyInstance elFamInst = item as FamilyInstance;
    if (elFamInst.Symbol.FamilyName == "MainFamilyName")//Bend Family
    {
       ElementId id = item.GetTypeId();
       ElementType et = doc.GetElement(id) as ElementType;

       Family fam = elFamInst.Symbol.Family;

       if (elFamInst.SuperComponent == null)
       {
          var subElements = elFamInst.GetSubComponentIds();
          if (subElements.Count != 0)
          {
             foreach (var aSubElemId in subElements)
             {
                var aSubElem = doc.GetElement(aSubElemId);
                if (aSubElem is FamilyInstance)
                {
                   FamilyInstance subEl = aSubElem as FamilyInstance;
                   Family fm = subEl.Symbol.Family;
                   if(subEl.Symbol.FamilyName == "subFamilyName")//coupling family
                   {
                       Document docfamily = doc.EditFamily(fam);
                       if (null != docfamily && docfamily.IsFamilyDocument == true)
                       {
                          FamilyManager familyManager = docfamily.FamilyManager;
                          using (Transaction trans = new Transaction(docfamily, "param"))
                          {
                              trans.Start();
                              FamilyParameter fp = familyManager.AddParameter("Namess",BuiltInParameterGroup.PG_IDENTITY_DATA,ParameterType.Text, false);
                              familyManager.Set(fp, "JP");
                              trans.Commit();
                          }
                        }

                    }

                  }
               }
             }
          }
       }
    }

我无法实现这个结果,我还希望参数 "JP" 仅在耦合系列上设置,即名称为 "subFamilyName".

的参数

是的,您也可以通过 API 以编程方式实现相同的目的。

正如手动方式需要打开family文件一样,在API中调用EditFamily方法即可:

https://apidocs.co/apps/revit/2019/56e636ee-5008-0ee5-9d6c-5f622dedfbcb.htm

查看 The Building Coder 提到此方法的各种帖子,例如 Modifying, Saving and Reloading Families