Иногда бывает необходимо создать семейство, которое будет строится по двум точкам с заданным уклоном.
Например, такое простенькое семейство канала для прокладки инженерных коммуникаций:
Это семейство понадобилось одному моему ученику, и мы сделали его на курсе минут за 20~30.
Основная его фишка не в том, что оно строится по уклону, а в том, что я могу задать, что именно буду указывать: градус или высоту на окончании (уклон).
Вот про это и поговорим.
Любое семейство, которое строится по двум точкам (как балка) следует делать на основе шаблона "Метрическая система, типовая модель на основе линий.rft"
Внутри шаблона - вспомогательная линия, именно на ней "сидит" параметр "Длина", который отвечает за общую длину семейства.
Сначала разберемся с принципом.
Нам нужно построить геометрию с контролируемым уклоном. Значит, нужно нарисовать вспомогательную линию, заблокированную в начальной точке, и запараметризовать ее уклон. А потом по этой линии строить всю геометрию.
Приступим:
Например, такое простенькое семейство канала для прокладки инженерных коммуникаций:
Это семейство понадобилось одному моему ученику, и мы сделали его на курсе минут за 20~30.
Основная его фишка не в том, что оно строится по уклону, а в том, что я могу задать, что именно буду указывать: градус или высоту на окончании (уклон).
Вот про это и поговорим.
Любое семейство, которое строится по двум точкам (как балка) следует делать на основе шаблона "Метрическая система, типовая модель на основе линий.rft"
Внутри шаблона - вспомогательная линия, именно на ней "сидит" параметр "Длина", который отвечает за общую длину семейства.
Сначала разберемся с принципом.
Нам нужно построить геометрию с контролируемым уклоном. Значит, нужно нарисовать вспомогательную линию, заблокированную в начальной точке, и запараметризовать ее уклон. А потом по этой линии строить всю геометрию.
Приступим:
- Переходим на фасад СПЕРЕДИ. Скрываем все ненужное, оставляем только вспомогательную линию. Рисуем еще 2 вспомогательные линии, чтобы получился треугольник. При построении блокируем зависимости.
- Добавляем параметр Высота. С его помощью потом будет задавать высоту на конце. Для этого выделим катет треугольника (вспомогательную линию), и преобразуем появившийся временный размер в постоянный. Потом добавим к нему параметр.
- Проверяем:
- Теперь немного тригонометрии. Мы уже сделали заготовку семейства по двум точкам с указанием высоты на конце. Теперь нужно сделать так, чтобы можно было задавать уклон в градусах. Пока уклоном у нас управляет высота катета, значит, выразим ее через тангенс угла и длину:
Высота = Tan(Угла) * Длина - Держим эту формулу в уме, и подумаем вот над чем: как сделать переключатель между высотой на конце и углом? Правильный ответ: используя параметр типа "Да/Нет" и формулу с условием.
Логика такая: если выбран тип "По углу", то высота вычисляется по формуле с тангенсом, а если нет - то задается в параметре. Реализуем: - Добавим параметр "По углу", чтобы переключать им метод построения:
- Добавим параметр "Высота на конце", им будем управлять высотой на конце (уклоном):
- Добавим параметр "Угол", им будем управлять углом уклона:
- Перенесем параметр "Высота" в раздел "Прочее" (просто для красоты)
и напишем формулу для переключения методов расчета:
if(По углу, tan(Угол) * Длина, Высота на конце)
Это значит: если для параметра "По углу" галка стоит, то Высота считается по углу, а если галка не стоит, то приравнивается к параметру "Высота на конце". - Проверяем:
- Сейчас добавляем геометрию: создаем элемент сдвига, используя вспомогательную
линию как траекторию: - Как-то так.
Но у именно такого способа построения есть один минус: если я хочу нарисовать горизонтальный участок (вообще без уклона), у меня не получится: катет с параметром "Высота" превратится в 0 и будет ошибка. Что делать? Строить по-другому, снова позвав тригонометрию.
Рассуждения такие: нам не нужна дальняя линия, но без нее нормально не привяжешь наклонную... или привяжешь, если будешь управлять ее длиной и углом?
Рассуждения такие: нам не нужна дальняя линия, но без нее нормально не привяжешь наклонную... или привяжешь, если будешь управлять ее длиной и углом?
- Скроем объемное тело.
- Удалим катет с параметром "Высота", чтобы не было ошибок при нулевом уклоне. Вместо него добавим 2 параметра: угол и длину гипотенузы.
- А теперь запараметризуем новые параметры. Для гипотенузы напишем формулу по длине катетов, из школьного курса. Для угла более сложную формулу, с условием: если вычисление по углу, то угол задается вручную (приравнивается к параметру "Угол"), а если по высоте, то угол высчитывается по формуле, через арктангенс.
Собственно, все. Новое семейство работает еще лучше, у него нет ограничений по "горизонтальности".
Скачать, если кому надо, можно тут.
Надо было еще смещение профиля сделать параметрическим?! Типа ось слева, справа или по центру! )))
ОтветитьУдалить)))))
УдалитьАлексей, Вы Идеальны ))
Удалитьну, собсно, параметризация профиля к теме поста не относится, тут упражнения по тригонометрии для 7 класса ;) Так что это лишнее ;)
Удалить