【问题标题】:How to add parameters to a revit family element from revit document in revit-api c#如何在revit-api c#中从revit文档向revit族元素添加参数
【发布时间】:2019-03-29 03:06:03
【问题描述】:

我正在处理一个项目,我需要在 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”的参数。

【问题讨论】:

    标签: c# revit-api


    【解决方案1】:

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

    正如您需要手动打开family文件一样,您可以在API中调用EditFamily方法来完成:

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

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

    【讨论】:

    • 感谢 Jeremy 的回复,但我可能遗漏了一些东西。如果可以澄清我的查询,我已经添加了我的代码。再次感谢您。
    猜你喜欢
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    • 2016-12-28
    相关资源
    最近更新 更多