суббота, 19 ноября 2011 г.

(Про) ENGINEER’ное огибание

Постановка задачи: есть N таблично заданных графиков (положим N=2). Шаг для графиков неодинаков. Задача – построить огибающую суммы графиков. Под «катом» текст с кучей картинок и бонус в виде видео. (осторожно - трафик!) А Вы в своей системе сможете такое?
Итого. Есть исходная таблица с двумя графиками. Первый график это столбцы AA (ось Х) и BB (ось Y). Второй график аналогично CC – ось Х, DD – ось Y. Как нетрудно заметить по столбцам АА и СС шаг по оси Х для графиков не одинаков и не постоянен.
clip_image002
Эти графики имеют разное количество точек и разные диапазоны:
clip_image004
Для дальнейшей работы эти графики конвертируются в текстовые файлы содержащие три столбца (соответсвенно ХХ, YY, ZZ). В данном случае ZZ – у нас нулевой. Разделитель – пробел или табуляция
clip_image005
Имена файлов соответственно 1.pts и 2.pts. Формат и имена соответствуют требованиям ProE.
В мультике я трачу некоторое время на то, чтобы продемонстрировать идентичность данных в таблице и текстовиках, а также то, что было написано выше про шаг, количество точек и пр..
Далее импортируем кривые в ProE. Для создания кривых надо в начале импортировать наборы точек
clip_image007
Красненький ежик – уже импортированный набор точек, оранжевый (или какой он там) – импортируемый.
Проводим кривые по точкам:
clip_image009
Все команды видны на снимке. В ходе задания кривых говорим «Здравствуй друг - старый интерфейс ProE» :)
Как итог получаем кривые идентичные исходным:
clip_image011
А далее начинаем шаманство с модулем поведенческого моделирования (Behavioral Modeling eXtension [BMX]). Который, лично я считаю основной фишкой ПроЕ и за которую готов продать душу :). Жаль никто не покупает… Наверное беру слишком дорого. Да еще и коллектив продаю, вместо одного себя… Неправильный я какой-то блоггер Обличчя, яке підморгує
Если коротко, то все что есть внутри ПроЕ может выступать в качестве параметра, который можно не просто одноразово замерить, но и создать на базе него контролируемый параметр (нет это не «светофоры/датчики») в нужном месте дерева, и даже конструктивные элементы (точки, СК, плоскости). Их можно использовать в дальнейшей логике построения и даже создавать свои типы анализов. Очень навороченные. Именно это сейчас и будет продемонстрировано.
Для того чтобы получить координаты точек нам нужна кривая. К сожалению не смотря всю продвинутость Прое думать за нас он не умеет, потому придется сделать ряд «лишних» действий, некоторые из которых в других системах просто и не сделаешь.
Логика следующая. По принципу необходимой избыточности создаем два Extrude на базе кривых, чтобы получить единую огибающую. Так как нам нужны булевы операции, а это отсыл к объемам, на базе кривых мы создаем «кубики» с криволинейной верхней гранью:
clip_image013
Обратите внимание, что для ProE работа с объемными, объемными тонкостенными и поверхностными элементами – это единый инструментарий. Одна и та же команда. А еще она не только добавлять умеет, но и вычитать. Так что не смотря на то, что в Прое часто нужно делать больше действий, некоторые вещи делаются и модифицируются быстрее.
clip_image014
После создания объема у нас проблема: верхняя поверхность ломаная, плавных переходов нет и не совсем понятно как ее всю выбрать за один раз.
Для этого мы создаем новый Sketch в котором проецируем всю грань, после чего удаляем три оставшиеся прямые линии:
clip_image016
И, как показано на картинке, вытягиваем получившуюся ломанную кривую как поверхность.
В принципе ее уже можно анализировать, но тогда результаты мы сможем только посмотреть визуально, а нам нужны цифры… Это проблема ибо хоть поверхность ломаная, но это один объект, а вот криволинейные кромки – это куча разных объектов.
Нас это не сильно расстраивает, потому что у ПроЕшки есть прикольная функция – создание сечения. Вроде бы в чем прикол? Ведь аналог есть у всех. Вот только не у всех эти сечения можно не только разрезать модель, но и отрисовывать одновременно с моделью.
clip_image018
Не у всех эти сечения потом приходят автоматом в чертеж… И уж тем более не у всех их можно использовать для создания кривой.
clip_image020
clip_image022
clip_image023clip_image024
И уж еще более «тем более» не у всех есть возможность детального анализа кривой!!!
Для этого вставляем Field Point (Полевую точку :) т.е. точку которая не имеет конкретной координаты, а принадлежит всему объекту (в данном случае кривой).
Обратите внимание, что она появляется в дереве модели:
clip_image026
Далее создаем фичер (Feature) с измерением (от нижней грани до данной точки)
clip_image028
clip_image030
А после этого объединяем наши фичеры завязанные на Field Point в единую группу.
clip_image032
Не мудрствуя лукаво группа называется по умолчанию: Local Group:
clip_image034
Далее создаем пользовательский анализ (User-Defined Analysis) для данной группы. В качестве контролируемого параметра – Distance из прошлого фичера.
clip_image036
При необходимости можем покрутить настройки анализа. Типа точность, шаг, сгущения… Также можем создать еще один фичер в дерево, тогда при каждом пересчете модели у нас будет пересчитываться и все связанное с данным анализом, и показывать изменения.
Ну а результат расчета можно, при необходимости не только узреть внутри Pro/ENGINEER,
 clip_image038
но и экспортировать в Excel или текстовый файл.
clip_image040
Естественно эти данные можно импортировать куда угодно, например, назад в табличный редактор (в моем случае это OO Calc) и немного подправив (вычесть высоту нашего кубика в 500мм)
clip_image042
И отмасштабировав ось Х в соответствии с исходными данными (по умолчанию в результате расчета она меняется от 0 до 1) мы получаем готовый результат. Как любят говорить некоторые продавцы и популисты: без программирования и единой строчки кода.
clip_image044
Правда, я эту фразу не люблю, ибо, а что это если не программирование, только визуальное?
При желании и остальную обработку результатов можно доверить Прое, но это мне уже было лень делать. Прелестью ProE является еще и то, что все, что было сделано – параметрично. Т.е. при изменении исходных наборов точек у нас поменяется результат. Во как :) Ну и кроме того достаточно легко автоматизировать процесс обработки множества исходных кривых при наличии таковой необходимости, но это уже не сегодня.
Естественно, что для подобного решения нужно иметь ProE, да это как колоть орехи микроскопом, причем туннельным… Но ведь работает, и поверьте реальные задачи бывают такими же заковыристыми… А Вами любимая система сможет так?

P.S. Нет я использовал ProE Wildfire 5.0, а не Creo Parametric
P.P.S. Нет это можно было сделать еще 10 лет назад в древнем 2001 ProE (возможно и раньше, но тогда я еще не знал о существовании BMX)
P.P.P.S. Нет, ProE WF 5 имеет официальную руссификацию. Более того, русификация есть и для более младших версий
P.P.P.P.S. Я не делаю разницы между языком интерфейса, но в английском мне работать привычнее (в большинстве САПР систем) потому как английские термины во многих разных программах идентичны, а в русских они пляшут.
P.P.P.P.P.S. Да я не сразу и не с первой попытки сделал данное решение. Да я потратил ЦЕЛЫХ 15 минут. Но бОльшую часть времени я рисовал исходные кривые.
P.P.P.P.P.P.S. Да я помню про «Ну и шо!», и нет - это не наезд на другие системы
P.P.P.P.P.P.S. Может теперь кто-то предложит решение для задач описанных тут?

1 комментарий:

  1. Решение задачи обработки двух таблично заданных графиков с различающимся шагом в T-Flex: http://www.tflex.ru/forum/index.php?PAGE_NAME=message&FID=15&TID=1867&MID=15438#message15438

    Первый ответ есть.

    ОтветитьУдалить

Related Posts Plugin for WordPress, Blogger...
Rambler's Top100