【问题标题】:How to get family name of System family in Revit API?如何在 Revit API 中获取系统家族的家族名称?
【发布时间】:2019-11-28 06:12:37
【问题描述】:

我想获取“系统族实例”的族名,例如墙壁、屋顶等。

我知道如何获取 Family 实例的姓氏,但我无法确定元素是否为“System Family instance”。

谢谢。

(*元素 e 是我选择的元素。)

FamilyInstance finstance = e as FamilyInstance;
FamilySymbol ftype = finstance.Symbol;
string famname = ftype.FamilyName;

请推荐使用 revit api 的解决方案。

【问题讨论】:

  • 什么是系统族实例?
  • 除家庭实例外的所有实例。如基础墙、椭圆形管道等

标签: c# api revit


【解决方案1】:

查看What's New in the Revit 2015 API并搜索ElementType API additions

新属性ElementType.FamilyName 包含描述此 ElementType 所属族的本地化字符串。对于系列符号,这将是相关系列的名称。对于系统族类型,这将是用于对相关类型进行分组的名称,例如“椭圆形管道”或“幕墙”。

【讨论】:

  • 感谢您的回答。我已经尝试过这段代码,但它不起作用。 ElementType elementType = e.GetType();字符串familyname = elementType.FamilyName;但是,如果元素是系统系列,我无法弄清楚如何将 Element e 更改为 ElementType。例如,你能告诉我短代码吗?
  • 哦!我得到了解决方案! ElementId eId = e.GetTypeId(); ElementType elementType = (ElementType)doc.GetElement(eId) as ElementType; string familyName = elementType.FamilyName;
【解决方案2】:

正如评论中提到的@pooh,给定一个元素,您需要调用Element.GetTypeId()。这是一个更易读和更可靠的答案:

   public static string GetFamilyName(Element e)
   {
      var eId = e?.GetTypeId();
      if (eId == null)
        return "";
      var elementType = e.Document.GetElement(eId) as ElementType;
      return elementType?.FamilyName ?? "";
   }

【讨论】:

    猜你喜欢
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    相关资源
    最近更新 更多