控制钢筋组的布置区域

Control the laid out area of rebar set

我正在使用 Revit API 为梁创建一组钢筋。默认情况下,当我更改布局规则(使用 Revit API 以及最终用户 UI)时,无论我将钢筋放置在何处,它们都会自动调整以展开主体的整个面(在这种情况下,梁的顶面)。

但是,我想控制钢筋的布局区域,以便在更改钢筋布局规则(使用 Revit API 时它们只覆盖主体的一小部分而不是整个面).如果我使用最终用户UI,我可以手动抓住钢筋集边缘的手柄,然后在更改布局规则后调整布局区域。

我打算从 "single" 规则(默认)切换到 "fixed number" 规则。我怎样才能做到这一点?不过,在最坏的情况下,我可以使用 "single" 规则并将每个钢筋放置在所需位置。

开发团队已经在Revit API discussion forum thread on controlling the laid out area of rebar set中回答了您的问题:

布局规则从 API 或 UI 更改的方式有所不同。我将从 API 开始解释形状驱动钢筋的工作原理。

我们有一个 Rebar 元素。我们获得了 RebarShapeDrivenAccessor,我们将使用这个 class。有个叫Normal的属性。它表示钢筋弯曲所在平面的法线。此外,基于此向量,它将决定向哪个方向扩展集合。

函数

public void SetLayoutAsFixedNumber( int numberOfBarPositions, double arrayLength, bool barsOnNormalSide, bool includeFirstBar, bool includeLastBar);

具有以下参数:

  • numberOfBarPositions - 集合中有多少根柱
  • arrayLength – 集合有多长 - 集合中第一根柱和最后一根柱之间的距离
  • barsOnNormalSide - 设置在哪个部分,在正常或相反的方向
  • includeFirstBar - 如果集合中的第一个柱应该可见则为真,否则为假
  • includeLastBar - 如果集合中的最后一个柱应该可见则为真,否则为假

因此,何时将布局从单一布局更改为任何其他布局,您在屏幕上看到的栏将保持其位置并将成为集合中的第一个栏。它将根据 arrayLengthbarsOnNormalSide 计算集合中最后一根柱线的位置,并将在这两者之间分配柱线。

为了获得结果,您可以将布局设置为数组长度等于您的区域长度(设置将从屏幕上的现有栏开始),然后您可以将 Rebar 元素移动到您想要的位置。

或者,您可以移动区域开始处的单个条,然后将布局设置为数组长度等于您的区域长度。