编辑" FamilyType"映射到参数

时间:2018-04-10 19:39:04

标签: c# revit-api

我正在尝试以编程方式更改映射到Family内部参数的FamilyType(特别是创建Weld Annotations的参数)。在这种情况下,所讨论的FamilyType只在该系列中,因此搜索匹配的FamilyInstance或FamilySymbol不适用(也不起作用,因为我尝试过 - 这些嵌入式系列不会出现在浏览器中)。这些FamilyType也不会出现使用GetSubComponentIds - 父焊接系列不报告任何子组件。搜索" ParameterType"该参数返回" FamilyType",但如果我找不到ElementId,我也不知道应该对该参数应用什么值。

FilteredElementCollector DetailItems = new FilteredElementCollector(doc);
DetailItems.OfClass(typeof(Autodesk.Revit.DB.FamilyInstance));
List<string> Many_Annotations = new List<string>();
foreach (FamilyInstance One_Instance in DetailItems)
{
    ICollection<ElementId> Subbies = One_Instance.GetSubComponentIds();//insists that there are NONE with sub-elements?
    if (Subbies != null)
    {
        foreach (ElementId One_Id in Subbies)//apparently a nested component (parameter controlled) is NOT a sub-component?
        {
            FamilyInstance One_Sub = doc.GetElement(One_Id) as FamilyInstance;
            Many_Annotations = MyNamespace.Class.Unique_Strings(One_Sub.Name, Many_Annotations);
        }
   }
}

上面的代码总是会产生一个空列表。我知道这可能是Revit中尚未曝光的许多项目之一&#34;。

更新:我已经能够找到分配给一个系列实例的嵌入式FamilyTypes所需的ElementId,但只有在相关系列的所有FamilyInstances中的某个参数中使用了该嵌入式类型时才能使用。我已经能够使用这些来为这些特定选择启用单选按钮,但我想找到&#34;可能&#34;参数值。

1 个答案:

答案 0 :(得分:0)

我发现你的命名有点令人困惑,混合注释,细节项和家庭实例看似可以互换。您是否使用RevitLookupRevit Python shell探索了模型?您可能能够直接看到正在发生的事情,以及为什么没有返回子组件。