Массив: раскладка от центра

Стандартный массив в Ревите создает начальный объект и раскладывает его копии в одну сторону с равным шагом. Но часто бывает нужно равномерно заполнить некоторое расстояние, чтобы массив раздвигался в обе стороны:

Для того, чтобы сделать такую штуку, надо немного побегать с бубном формулами.

Если точнее — я делал перемычку из швеллеров над пробиваемым проемом, и там нужно расположить болты по длине так, чтобы при изменении длины изменялось количество, но массив болтов оставался выровнен по центру.

Более того, нужно, чтобы шаг болтов тоже можно было менять.

Нужны параметры: «Длина раскладки», «Шаг» — типа «Длина»; «Количество» — «Целое». И начнем думать.

Для начала придумаем формулу для «Количества». Самое простое:

Количество = Длина раскладки / Шаг

Проверим, как будет работать формула. Ширина 1200, шаг 300, получаем 4 стержня, отступ в начале и конце — 3х300 = 150мм. Но мне не нравится, что при ширине 1050мм количество стержней получится также 4 (3,5 округлено до 4), и отступ получится лишь 75мм:

Попробуем такую формулу:

Количество = (Длина раскладки — (Шаг / 2)) / Шаг
Тогда при шаге 300мм минимальный отступ от края будет 150мм.
Всё это интересно, но какой толк от формул, если массив все равно не располагается по центру раскладки? Продолжаем танцы с бубном.
Очевидно, что положение первого элемента массива может меняться (на картинках выше видно). Значит, нужен дополнительный параметр «Начальный отступ», типа «Длина»:
Начальный отступ = (Длина раскладки — Длина массива) / 2

Расстояние, не занятое массивом, делим пополам, и получаем равное расстояние до начала и конца. Вот только параметра «Длина массива» у нас нет. Пишем что-то самое логичное:

Начальный отступ = (Длина раскладки — Количество * Шаг) / 2

…и понимаем: что-то не то. Расстояние 900мм с шагом 300мм — это 4 стержня, значит, правильная формула будет выглядеть вот так:

Начальный отступ = (Длина раскладки — (Количество — 1) * Шаг) / 2

Это — как раз то место, ошибку в котором я не сразу смог заметить. Потому что «Количество» в массиве Ревита — это количество элементов, а не количество промежутков между ними.

Создаем все параметры (нужен еще параметр длины швеллера, вписываем формулы:

Создаем массив элементов. Я работаю в семействе «Типовая модель», две опорные плоскости уже есть, создаем еще две — слева и справа:

Добавляем наш компонент, создаем массив.

Количество и расстояние задавайте любое. Назначаем параметры отступа и шага:

По тому же принципу назначаем «Шаг» и «Длину раскладки». UPD: лучше сначала ставить опорные плоскости и привязывать размеры, а элементы привязывать уже к плоскостям!

Назначаем параметр количества:

Нужно выбрать именно «невидимую линию», обозначающую массив. Можно сначала щелкнуть на любой элемент массива, затем — на линию (не на «2», а именно на линию), тогда можно будет назначить параметр. Что-то вот такое:

Но ничего не работает!

Причина — почему-то был отключен флажок «Добавить в конец» при создании массива, при этом весь массив «сдвигается» целмком и ломает зависимости. Галочка должна быть включена:

Теперь всё работает, как надо. Только добавим «EQ» на среднюю опорную плоскость, чтобы элементы разъезжались влево и вправо от центра:

Загрузим семейство в наше семейство перемычки и привяжем центральной плоскостью к середине проема: