使用 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 发现它们是Sketch
、SketchPlane
,以及与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 是 Sketch
和 SketchPlane
。以上是关于使用 Revit API 移动天花板或地板图案的主要内容,如果未能解决你的问题,请参考以下文章