【问题标题】:Revit: Why is my wall BoundaryBox not Coinciding with its LocationCurve?Revit:为什么我的墙边界框与它的 LocationCurve 不一致?
【发布时间】:2019-05-22 21:58:51
【问题描述】:

使用 Revit API,我将一面墙分成 3 个部分。为此,我创建了 3 行:

Line.CreateBound(p1, p2)
Line.CreateBound(p2, p3)
Line.CreateBound(p3, p4)

然后我用这些连续且对齐的线条创建一堵墙。结果与预期不符,因为第三面墙与第二面墙重叠,请参见下图。

现在,这可能是一个编程错误,但我在创建 3 面墙之前打印了线条的端点,这些点以正确的顺序完全连续。打印看起来像这样(我删除了 Y 和 Z 坐标,它们是恒定的):

Now creating a new wall, from (11.811023622, ...) to (17.388451444, ...)
Now creating a new wall, from (17.388451444, ...) to (18.044619423, ...)
Now creating a new wall, from (18.044619423, ...) to (28.871391076, ...)

如果我随后使用 RevitLookup Addin 检查有问题的墙,我发现它的 LocationCurve 的原点确实位于 (18.044619423, ...)。 但是如果我查看它的 BoundingBox MinMax 属性,我可以看到它从 17.388 开始。并上升到 28.871391076。这就是插图所显示的......

此外,我在几何体中的其他一些墙壁上使用了这种分割方法,对此我没有任何问题,并且我确实获得了 3 个很好的连续墙壁!

因此,我的问题是:我是否在某处遗漏了一个属性,该属性会以某种方式将墙 BoundingBox 从其位置曲线“移动”?那会以某种方式解释这种行为吗? 我还能如何解释和纠正这一点?

非常感谢! 阿诺。

【问题讨论】:

    标签: revit-api revit


    【解决方案1】:

    也许 Revit 会以某种方式自动连接墙壁,并修改它们的几何形状以便将它们很好地连接。例如,想象一下沿 X 轴和 Y 轴的两个垂直壁,分别从 (0,0) 到 (1,0) 和 (0,1),壁厚为 0.2。 Revit 将连接它们。为此,它会将它们延伸到它们在原点相遇的角落。因此,它们的边界框都不会在 (0,0) 处结束(或在 (0,-0.1) 和 (-0.1,0) 处),如您所料。相反,它们都将在 (-0.1,-0.1) 处有一个共同的角。因此,两个边界框的最大扩展都是 1.1 而不是 1.0。我希望这个解释是清楚的。一张图片会说一千多个单词......对于使用单词代替的愚蠢尝试感到抱歉。

    【讨论】:

    • 比你杰里米。我明白你的意思;)在我的情况下,这不是发生在角落,而是连续 3 个连续的墙壁,但我猜出于某种原因可能仍会发生某种类似的行为。我会进一步调查!
    【解决方案2】:

    您可以通过将两者上的location line JoinType property 设置为JoinType.None 来防止墙3 与墙1 连接。

    【讨论】:

    • 您好,我正在尝试这个,但是在执行“myLocationCurve.JoinType.SetValue(1, JoinType.None)”时,我得到“预期的 Array[object],得到 int”。文档似乎指定它需要一个整数作为参数,所以我很困惑..关于为什么这种行为以及如何设置值的任何想法?非常感谢!
    • 好的,我必须执行“myWall.Location.JoinType[0] = JoinType.None”。但是当这样做时,在打印“myWall.Location.JoinType”之后仍然打印“Abut”而不是“None”..所以最后,它不起作用。最终我找到并使用了 WallUtils.DisallowWallJoinAtEnd,并且成功了!
    【解决方案3】:

    编辑:使用 WallUtils.DisallowWallJoinAtEnd 函数成功了!

    所以这是经过一番调查后的状态:第三面墙确实在自动扩展它的边界框,以便它连接到第一面墙。这样做,它与小墙重叠(参见下图中的“墙 2 - 这堵墙的类型不同”与墙 1 和 3(它们是相同类型),因此当墙时被忽略3 正在寻找连接的地方)在它们之间(只有 20 厘米长)。 使“墙 2”更长一点(40 厘米)有助于并防止第三面墙自动扩展到第一面墙,这就是我在这里所做的:

    那没关系。 但这并不能解决问题。我没有看到任何阻止边界框“自动扩展”的方法,或者任何控制它寻找另​​一面墙的最大距离的方法。

    我也试过先强制3种不同的类型,然后将3号墙的墙型改为与1号墙相同的墙型:当它们的墙型不同时:不扩展。当我更改墙类型时,它会扩展,即使墙已经创建。

    最后,真正奇怪的行为是,对于某些墙壁,我根本没有这个问题。这是:与我遇到问题时相同类型的 3 面墙,墙 2 的 same 长度为 20 厘米。最后这件事真的无法解释。

    【讨论】:

      猜你喜欢
      • 2019-03-08
      • 2016-10-27
      • 2022-01-04
      • 2020-06-10
      • 2019-05-14
      • 2022-01-07
      • 2021-05-26
      • 1970-01-01
      • 2018-06-03
      相关资源
      最近更新 更多