[英]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以编程方式实现相同目的。
就像您需要以手动方式打开族文件一样,您可以在API中调用EditFamily
方法来这样做:
https://apidocs.co/apps/revit/2019/56e636ee-5008-0ee5-9d6c-5f622dedfbcb.htm
查看建筑编码员提到此方法的各种帖子,例如, 修改,保存和重新加载家庭 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.