使用 Revit API 移动天花板或地板图案

Posted

技术标签:

【中文标题】使用 Revit API 移动天花板或地板图案【英文标题】:Move a ceiling or floor pattern using the Revit API 【发布时间】:2017-06-30 19:52:18 【问题描述】:

我希望能够使用 Revit API 调整特定天花板内的图案。下面是之前和之后的截图:

我尝试使用Revit Lookup tool 来找出在使用用户界面手动移动线条后发生了哪些属性更改,但我无法确定哪些属性正在更改。除了查看Ceiling 实例之外,我还使用temporary delete transaction 发现它们是SketchSketchPlane,以及与Ceiling 实例关联的多个ModelLine。调查这些对象,我也没有发现任何变化。我错过了什么?

【问题讨论】:

基本上就是杰里米所说的。首先,您想要的这种特定行为没有 API。其次,您通过删除对象发现有与之关联的模型线,这正是您可以用来为此类工作流制定解决方法的方法。删除天花板,捕获模型线,存储它们的 ID,回滚事务以撤消删除,将 MoveElement 应用于您存储的模型线。这是我能想到的唯一方法。 您能找到解决方案吗?我正在处理类似的情况,我的研究将我带到了您尝试过但尚未成功的相同事情。 【参考方案1】:

查看MoveElement( Document, ElementId, XYZ) 方法的文档,看来您缺少的可能是元素的Location 属性。

请参阅Autodesk Docs 了解更多信息。

还有Revit API Docs。

【讨论】:

我知道ElementTransformUtils 函数MoveElement。问题是我要移动哪个元素? 如果您有权访问 ModelLine.Location 属性,您能计算出您想要的目标吗? (我在这里假设以前从未使用过该库。) 刚刚找到revitapidocs.com,它为您正在使用的 api 提供了一个非常好的文档。非常值得研究。您可以使用UniqueId 属性来识别正确的属性。 从临时删除返回的ModelLine 只是移动了整个天花板,而不是模式。【参考方案2】:

如何通过用户界面手动Align the Surface Pattern on a Model Element的描述描述了如何访问控制图案位置的“表面图案线”。您可能需要识别此特定行并将MoveElement 应用于该行。

【讨论】:

如何识别这条线?我尝试移动来自临时删除的ModelLine 元素,但这只是移动整个天花板而不仅仅是模式。临时删除产生的唯一其他元素 ID 是 SketchSketchPlane

以上是关于使用 Revit API 移动天花板或地板图案的主要内容,如果未能解决你的问题,请参考以下文章

在解决重复问题时,地板和天花板何时重要?

在二叉搜索树中查找地板和天花板

没有数学模块的Python 3中的天花板和地板等效?

网络监控系统综合布线施工有哪些标准?

Revit API:如何计算地板边缘的总点数?

Revit二次开发 零件创建