среда, 18 ноября 2015 г.

Семейства Revit. "Центровка массива". Частный случай

"Давненько не брал я в руки шашек!" (Н. Гоголь, Мертвые души)

Я несколько раз порывался снова вернуться к блогу, да все были дела поважнее. Например, недавно я запустил свой сайт, и, пожалуй, надо сделать об этом отдельный пост, информационный.
Вернуться к блогу меня сподвигло то, что в последнее время стало появляться много вопросов к моим старым постам. И вопрос про параметризацию массива от Дмитрия Куницы стал той самой соломинкой...

Итак, в чем вопрос? Параметризуя окно, Дмитрий хочет настраивать 1) ширину проема и 2) расстояние между средними стойками, а расстояние от крайних стоек до рамы и количество стоек должно подстраиваться. 

Таким образом, задачу можно свести к настройке центральносимметричного массива с управляющим параметром "шаг стоек". Что мы и сделаем.
1. Создадим семейство "Стойка" на шаблоне "типовая модель" (после создания семейства переведем его в категорию "Окна"). В нем сформируем и параметризуем выдавливание, как показано на картинке (добавим параметры  a, b (по типу) и h (по экземпляру). 


2. Создадим семейство окна на базе стандартного шаблона окна. Добавим в нем 2 опорные плоскости и параметризуем, как показано на картинке (добавим параметр типа "Стойки.Отступ")


3. Загрузим семейство стойки, разместим, параметризуем (назначим на параметр "h" параметр "Высота")


4. Параметризуем массив.
4.1. Создаем "массив по общей длине"
4.2. Привязываем первый и последний элементы к опорным плоскостям
4.3. Добавляем на массив параметр "Стойки.Количество"


5. Добавим параметр "Стойки.Шаг" (тип).


6. Параметризуем. 
Задача простая: я должен завязать количество стоек и отступ крайних стоек на параметр "Стойки.Шаг".
6.1. Значит, для начала я должен определить количество стоек, исходя из шага. Для этого будем делить Ширину на Шаг с округлением вниз.

rounddown(Ширина / Стойки.Шаг) + 1 
Мы добавляем "1", т.к. простым делением находим не количество стоек, а количество промежутков между ними...

6.2. Потом, нужно найти Отступ. Для этого вычтем из Ширины Шаг, умноженный на число стоек, а результат разделим на 2

(Ширина - (Стойки.Количество - 1) * Стойки.Шаг) / 2
Снова не забыли про "1", ага...



7. Наслаждаемся результатом.


8. Конечно, может получиться так, что количество стоек и шаг будет давать вот такую картину:


Это лечится, но все зависит от глобальных задач: нужно ли, чтобы Revit сам подбирал типоразмер профиля стойки в зависимости от шага / высоты, или размеры профиля вносятся пользователем, что с крайними стойками рамы и т.п.

А это уже совсем другая тема.

Файл семейства с массивом.

Больше про параметризацию массива по ссылкам: Часть 1Часть 2
Еще немного интересных статей ищите в ОГЛАВЛЕНИИ