【问题标题】:Revit API: How to retrieve possible values for parameter with storage type ElementIdRevit API:如何检索存储类型为 ElementId 的参数的可能值
【发布时间】:2016-11-25 16:54:25
【问题描述】:

我有一个包含嵌套族的族,这些族由族类型类型参数控制。 (存储类型ElementId)

如何查询项目文件以检索 elementId 类型参数的可能值?

我已经窥探了族实例,以查看当我选择了不同的类型时为参数设置了哪些值。我可以找到那些 elementId,可以对其进行硬编码,并且可以正常工作。但我真的需要能够在运行时解决这个问题。

例如:我的家庭中嵌套(不共享)的家庭类型之一被命名为“循环”。我已经通过filteredElementCollector(revitDoc)搜索了主文档中的所有元素和元素类型,但找不到名为“Circular”的元素,但是,如果我要求文档获取与我的硬编码ID关联的元素,它会给我一个名为“圆形”的元素。所以我知道它在文档中!

family 文档本身的元素 ID 不正确。我怀疑当族被加载到 Revit 项目文档中时,嵌套族被赋予元素 ID,但被排除在通过过滤元素收集器访问之外。

注意:如果它们已共享但未共享,则可能会找到它们。 (如果它们是共享的,则可以通过放置的 familyinstance 的“子组件”属性找到它们,我假设我们可以从那里获取它们的类型)

【问题讨论】:

  • 您可以收集模型中的所有 FamilyInstance,循环遍历参数,并找到 ElementId 的使用 - 这不会收集所有“可能”值,而是所有“使用”值。如果您可以使用您“可能”使用的所有家庭类型创建多个实例的“图例”,那么您将能够收集所有“可能”的值。我还没有找到其他解决方案。

标签: revit-api


【解决方案1】:

恐怕您提到的硬编码解决方案是目前唯一的方法。我会围绕它添加断言和单元测试套件,以确保您真正捕捉并支持所有可能的状态。您可能需要检查标记为 API 的 Revit Idea 站愿望清单项目,并查看是否记录了合适的愿望以将其包含在内,或者是否可以为它记录新的愿望。当然,我会尽可能保持通用性。

http://forums.autodesk.com/t5/revit-ideas/idb-p/302

http://forums.autodesk.com/t5/revit-ideas/idb-p/302/label-name/api

【讨论】:

  • 嗨杰里米,感谢您确认没有其他优雅的解决方案。我一定会把它添加到 Revit Ideas 中。我想我可以暴力破解它,然后循环遍历 1-n 的元素 id,收集所有家庭符号,然后找到我正在寻找的那些。我精心设计了这个系列,所以我确切地知道我在寻找哪些,只是无法确定它们的元素 ID。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-24
  • 1970-01-01
  • 2021-02-21
  • 1970-01-01
  • 2017-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多