【问题标题】:Editing "FamilyType" mapped to a parameter编辑映射到参数的“FamilyType”
【发布时间】:2018-09-20 13:10:17
【问题描述】:

我正在尝试以编程方式更改映射到族内参数的 FamilyType(特别是创建焊接注释的参数)。在这种情况下,所讨论的 FamilyType(s) 仅在族内部,因此搜索匹配的 FamilyInstance 或 FamilySymbol 不适用(也不起作用,因为我尝试过——这些嵌入的族不会出现在浏览器中)。这些 FamilyType(s) 也不会使用 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 中尚未“公开”的众多项目之一。

更新:我已经能够找到分配给族实例的嵌入式 FamilyTypes 所需的 ElementId,但前提是该嵌入式类型已在相关族的所有 FamilyInstances 的参数之一中使用。我已经能够使用这些来启用这些特定选项的单选按钮,但我想找到“可能的”参数值。

【问题讨论】:

标签: c# revit-api


【解决方案1】:

我发现你的命名有点混乱,混合注释、细节项目和家庭实例似乎可以互换。您是否使用RevitLookupRevit Python shell 探索过您的模型?您也许可以直接看到发生了什么,以及为什么没有返回子组件。

【讨论】:

  • 我将我的 FilteredElementCollector 称为“DetailItems”,只是因为我已经在代码的其他地方使用了一个名为“Annotations”的方法。我承认这很令人困惑,因为我正在处理的家庭是注释。但是,由于这些注释是特定类别的 FamilyInstances,我不认为我将它们混淆了。我提到 FamilySymbols 是因为我尝试的其中一件事是收集 FamilySymbols 并探索它们的参数(无济于事)。正如我的更新中提到的,我已经能够获得“使用”的 ElementId,但我想要“可能的”。我以前没用过 Python。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-25
  • 2014-08-16
  • 2021-09-13
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
相关资源
最近更新 更多