четверг, 26 декабря 2013 г.

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

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



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

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

Для начала придумаем формулу для "Количества". Самое простое:
Количество = Длина раскладки / Шаг

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

Поэтому рекомендую такую формулу:

Количество = (Длина раскладки - (Шаг / 2)) / Шаг
.
Тогда при шаге 300мм минимальный отступ от края будет 150мм.


Всё это интересно, но какой толк от формул, если массив все равно не располагается по центру раскладки? Продолжаем танцы с бубном.

Очевидно, что положение первого элемента массива может меняться (на картинках выше видно). Значит, нужен дополнительный параметр "Начальный отступ", типа "Длина":

Начальный отступ = (Длина раскладки - Длина массива) / 2

Понятно: расстояние, не занятое массивом, делим пополам, и получаем равное расстояние до начала и конца. Вот только параметра "Длина массива" у нас нет. Пишем что-то самое логичное:
Начальный отступ = (Длина раскладки - Количество * Шаг) / 2

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

Начальный отступ = (Длина раскладки - (Количество - 1) * Шаг) / 2
Это - как раз то место, ошибку в котором я сразу не смог заметить. Потому что "Количество" в массиве Ревита - это количество элементов, а не количество промежутков между ними.

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

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

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


Количество и расстояние задавайте любое. Назначаем параметры:
По тому же принципу назначаем "Шаг" и "Длину раскладки". Назначаем параметр количества:

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

Но ничего не работает!
Что я сделал не так? Видно, что ошибка появляется тогда, когда изменяется количество стержней. Оказалось, что причина - в галочке "Добавить в конец". На самом деле, она обычно включена, но у меня почему-то была отключена, и новые элементы массива добавлялись не в конец, а в начало - и все мои привязки к первому элементу становились некорректны. Галочка должна быть включена:

Теперь всё работает, как надо. Только добавим "Равенство размеров" на среднюю опорную плоскость:

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

Как-то так.


6 комментариев:

  1. Спасибо! Очень полезный блог! Так держать!

    ОтветитьУдалить
  2. Спасибо! Побольше таких "плюшек"

    ОтветитьУдалить
  3. Здравствуйте. При создании подобного семейства столкнулся со следующей проблемой. Когда меняю тип семейства швеллера (его сечение), то шпильки оказываются на разных отметках. Как ни пытался привязать их к опорной плоскости, ничего не получилось.

    ОтветитьУдалить
    Ответы
    1. Вы пробовали оставить от массива только два элемента и привязать каждый к одной плоскости?

      Удалить
    2. Пробовал привязывать по отдельности, пробовал перемещать начало координат элемента группы (предварительно сделав одну шпильку группой). Если выровнять сбившиеся элементы, то выскакивает ошибка при попытке изменить сечение. Сейчас вот думаю, может надо отдельно массив шпилек сделать и уже его вложить в семейство со спаренным швеллером

      Удалить
    3. Скиньте семейство на почту

      Удалить