Команда разработчиков уже ответила на ваш вопрос на форуме Revit API тема на , управляющая выложенной областью набора арматуры :
Существует разница междукак правило макета изменяется из API или из пользовательского интерфейса.Я объясню, как это работает с 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
Таким образом, когда изменит макет с одиночного на любой другой макет, панель, которую вы видите на экране, сохранит свою позицию и будет первой панелью в наборе.Он вычислит, где находится последний бар в наборе в соответствии с arrayLength
и barsOnNormalSide
, и распределит столбцы между этими двумя.
Чтобы получить результат, вы можете установить макет с длиной массива.равный длине вашей зоны (набор начнется с существующей панели на экране), а затем вы можете переместить элемент арматуры туда, куда хотите.
Или вы можете переместить одну полосу, где начинается зона, а затем установитьмакет с длиной массива, равной длине вашей зоны.