我正在使用Revit API为梁创建一组钢筋。默认情况下,当我更改布局规则(使用Revit API和最终用户UI)时,无论我将钢筋放置在什么位置,钢筋都会自动调整以散布主机的整个表面(在这种情况下,顶部是的光束)。
但是,我想控制钢筋的布置区域,以便在更改钢筋布局规则(使用Revit API)时,钢筋仅覆盖主机的一小部分,而不覆盖整个主机。如果使用最终用户界面,则可以手动抓住钢筋集边缘的手柄,然后在更改布局规则后调整布局区域。
我打算从“单一”规则(默认)切换为“固定号码”规则。我怎样才能做到这一点?在最坏的情况下,我可以使用“单一”规则,并将每个钢筋放置在所需位置。
答案 0 :(得分:0)
开发团队已经在Revit API discussion forum的controlling 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);
具有以下参数:
因此,当将布局从单一布局更改为任何其他布局时,您在屏幕上看到的栏将保持其位置,并将成为集合中的第一个栏。它将根据arrayLength
和barsOnNormalSide
计算出集合中最后一个小节的位置,并在这两个小节之间分配小节。
为了获得结果,您可以设置阵列长度与区域长度相等的布局(该设置将从屏幕上的现有栏开始),然后可以将Rebar元素移动到所需的位置。
或者,您可以移动区域开始的单个条形,然后将数组长度设置为与区域长度相等的布局。