Уважаемые участники Форума. Участвуя в дискуссии о производительности и параметрических возможностях T-FLEX CAD, я решил подготовить краткую статью, связанную с темой обсуждения. http://isicad.ru/ru/articles.php?article_num=15302#6082 Это пример параметрической модели пружины и её оптимизации как встроенным решателем T-FLEX CAD, так и внешней программой.
В примере будут затронуты вопросы создания параметрической модели пружины, оформление её как фрагмента с переменными для удобства использования в сборках, расчёт жёсткости пружины, расчёт диаметра проволоки пружины для обеспечения требуемой жёсткости как при помощи встроенного механизма оптимизации T-FLEX CAD, так и при помощи подключения внешней программы оптимизации. Большинство вопросов будут известны пользователям T-FLEX CAD, но некоторые могут быть интересны даже для «продвинутых» пользователей.
1.Создание модели пружины Пружина сжатия создаётся в T-FLEX CAD одной операцией. Операция пружина позволяет задать все параметры, такие как длина, диаметр, диаметр проволоки, шаг, количество витков, поджатие пружины на концах и шлифовку. Для создания модели пружины в модели требуется наличие всего лишь двух 3D узлов, задающих направление и длину. Для удобства управления параметрами пружины зададим большинство значений в свойствах операции при помощи переменных. Переменные сделаем внешними с тем, чтобы управлять ими из сборки. Создание конфигураций заранее конечно не требуется.
При помощи команды «Элементы управления» создадим страницу диалога с требуемыми переменными. Теперь все параметры задаются в удобном для пользователя виде:
Создадим локальную систему координат привязки для вставки пружины в сборку, и она готова к использованию. Понятно, что количество комбинаций параметров, которые могут быть установлены в сборке, в общем случае, бесконечно.
2. Расчёт пружины Создаём КЭА-задачу статического анализа в модуле "T-FLEX Анализ". В ней выбираем тело пружины, закрепляем один конец, прилагаем силу, например, 1Н к другому концу, задаём свойства материала. Возможно, данную задачу можно решить и в модуле экспресс-анализа, входящего в состав T-FLEX CAD 3D, но в нём меньше возможностей для получения результатов.
Рассчитываем задачу, получаем эпюру перемещений. Можем расставить метки, соответствующие значениям перемещений в нужных точках. Максимальное значение отображается автоматически. При необходимости можем показать и любые другие параметры результатов расчёта. На второй картинке показаны настройки решателя.
3.Оптимизация пружины. Для примера ставим задачу оптимизации: «Рассчитать диаметр проволоки пружины, при котором максимальное перемещение при заданной нагрузке в 1Н составит 5 мм. Для решения задачи нам требуется задать критерий оптимизации. Это будет максимальное значение перемещения. Для этого в команде «Измерение» создадим переменную, получающую максимальное значение перемещения после расчёта задачи. Кликаем правой кнопкой в КЭА задачу и выбираем «Измерить». Выбираем из списка требуемый параметр и создаём переменную, которая будет получать значение при помощи функции get. Данная функция получает с объекта значение нужного нам свойства.
Теперь нам требуется подобрать значение переменной d таким образом, чтобы значение переменной Displacement получило требуемое нам значение. 3А. Решение задачи встроенной командой «Оптимизация» Входим в команду «Оптимизация», создаём новую задачу, в качестве целевой переменной задаём Displacement, в качестве управляющей d. Задаём пределы изменения для переменной d. В процессе оптимизации будет производиться как пересчёт 3D модели, так и расчёт задачи. Задаём эти опции. По сути задача является одномерной, так что выбираем наиболее простой алгоритм дихотомии.
3Б. Расчёт диаметра проволоки внешней программой оптимизации Данный пункт распишем подробнее, так как именно он являлся предметом дискуссии. Как известно, T-FLEX CAD имеет API, позволяющий автоматизировать взаимодействие пользователя с моделью. На этом API можно разрабатывать приложения, например на языке программирования C#. Для решения данной задачи я воспользовался уже имеющимся приложением, предназначенным для обеспечения взаимодействия внешних программ с открытой в T-FLEX CAD моделью. В данном случае для обмена сообщениями и внешней программой используется системный механизм DDE (dynamic data exchange). Данный механизм предполагает наличие двух программных компонентов, работающих в разных процессах – клиента и сервера. Роль сервера будет выполнять приложение TFDDEServer, написанное на OpenAPI T-FLEX CAD. Оно принимает сообщения от сторонних приложений-клиентов в виде команд и выполняет данные команды, изменяя параметры текущей модели, пересчитывая модель, производя расчёт конечно-элементных задач и т.д. Результаты расчёта сохраняются во внешний текстовый файл простого формата. Вот пример такого файла: L 100
d 1.495361328125
Coils 10
D 20
Displacement 5.00087118148804
F 1000
Клиентское приложение представляет собой очень маленькую программу TFDDEClient, которая запускается, принимая команды в командной строке и передавая эти параметры серверу для выполнения. Вот список команд, которое может выполнять данное приложение:
Нужно отметить, что довольно устаревший механизм DDE был выбран только потому, что под рукой оказалось готовое приложение, которое можно было сразу использовать. С большим успехом вместо DDE можно использовать такие более современные «традиционные» механизмы для передачи параметров между процессами, как Marshalling и WCF. При необходимости, я могу передать исходные тексты проектов TFDDEServer и TFDDEClient любому желающему. Теперь, используя связку этих двух приложений (TFDDEServer – TFDDEClient) можно использовать внешнюю программу оптимизации параметров, запускающую программу TFDDEClient через командную строку.
Команда может быть например такой: TFDDEClient.exe VAR: d=1 Данная команда устанавливает значение переменной «d» в значение 1. В качестве внешней программы оптимизации, я использовал собственную программу, написанную специально для данного случая. Она реализует одномерный алгоритм дихотомии. Понятно, что для многомерного случая её использовать нельзя, но в качестве простого примера вполне подойдёт. Исходные тексты проекта для Visual Studio 2010 приложены ниже. При запуске программы появляется диалог с настройками оптимизации. После нажатия «Выполнить» выполняются итерации расчёта.
Вот архив с исходным текстом внешней программы оптимизации. Желающие могут попробовать сделать её многомерной или подключить вместо неё свою программу.
Спасибо. Весьма познавательный пример. Неплохо было бы разместить его (да и еще ряд примеров) в разделе "Обучающие материалы", а то со временем затеряется.
Добрый день,Сергей. Я,начинающий технолог в сфере пружин.Хочу освоить программу T-FLEX для пружин.Подскажите где скачать программу с нужными компонентами(библиотеками) и с чего начать расчет построение