控制钢筋组的布置区域

时间:2018-11-14 04:43:38

标签: c# revit-api revit

我正在使用Revit API为梁创建一组钢筋。默认情况下,当我更改布局规则(使用Revit API和最终用户UI)时,无论我将钢筋放置在什么位置,钢筋都会自动调整以散布主机的整个表面(在这种情况下,顶部是的光束)。

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

我打算从“单一”规则(默认)切换为“固定号码”规则。我怎样才能做到这一点?在最坏的情况下,我可以使用“单一”规则,并将每个钢筋放置在所需位置。

1 个答案:

答案 0 :(得分:0)

开发团队已经在Revit API discussion forumcontrolling the laid out area of rebar set线程中回答了您的问题:

如何从API或UI更改布局规则之间存在差异。我将解释如何通过形状驱动钢筋的API进行操作。

我们有一个Rebar元素。我们获得RebarShapeDrivenAccessor,我们将使用该类。有一个名为Normal的属性。它代表钢筋弯曲所在的平面的法线。此外,根据此向量,它将决定向哪个方向扩展集合。

函数

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

具有以下参数:

  • numberOfBarPositions-集合中有多少个条形
  • arrayLength –集合多长时间-集合中第一个小节和最后一个小节之间的距离
  • barsOnNormalSide-在法线或相反方向上将集合移到哪个部分
  • includeFirstBar-如果集合中的第一个条应可见,则为true,否则为false
  • includeLastBar-如果集合中的最后一个条应可见,则为true,否则为false

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

为了获得结果,您可以设置阵列长度与区域长度相等的布局(该设置将从屏幕上的现有栏开始),然后可以将Rebar元素移动到所需的位置。

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