Контролировать выложенную площадь набора арматуры - PullRequest
0 голосов
/ 14 ноября 2018

Я использую Revit API для создания набора арматуры для балки. По умолчанию, когда я изменяю правило макета (используя Revit API, а также пользовательский интерфейс конечного пользователя), независимо от того, где я размещаю свои арматуры, они автоматически настраиваются так, чтобы распределить всю поверхность хоста (в данном случае верхнюю грань). луча).

Однако я хочу контролировать область, в которой мои арматуры будут расположены так, чтобы они покрывали только небольшую часть, но не всю поверхность хоста, когда я меняю правило компоновки арматуры (используя Revit API). Если я использую пользовательский интерфейс конечного пользователя, я могу вручную взять ручку на краю набора арматурных стержней, а затем отрегулировать размеченную площадь после изменения правила компоновки.

Я намерен перейти от «единого» правила (по умолчанию) к правилу «с фиксированным номером». Как я могу это сделать? В худшем случае я могу использовать «одиночное» правило и разместить каждую арматуру в нужном месте.

1 Ответ

0 голосов
/ 18 ноября 2018

Команда разработчиков уже ответила на ваш вопрос на форуме 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, и распределит столбцы между этими двумя.

Чтобы получить результат, вы можете установить макет с длиной массива.равный длине вашей зоны (набор начнется с существующей панели на экране), а затем вы можете переместить элемент арматуры туда, куда хотите.

Или вы можете переместить одну полосу, где начинается зона, а затем установитьмакет с длиной массива, равной длине вашей зоны.

...