Официальный форум российского программного комплекса T-FLEX PLM


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Пересчёт 3D-фрагмента с внутренней БД, Логика работы T-Flex при пересчёте 3D-фрагментов, содержащих в себе БД
 
Доброго всем времени суток!
Уважаемые форумчане, очень интересует несколько вопросов. Представим себе ситуацию: сборочная 3Д-модель, которая содержит некоторое количество винтов (болтов или другого крепежа), при этом винты содержат в себе внутреннюю БД для параметризации в духе "диаметр/длина/покрытие" ну и т.д.
Вот мне интересно следующее:
1. Какую логику T-Flex использует при пересчёте таких 3Д-фрагментов, где есть параметризация с выборкой параметров из внутренней БД? Если кто-нибудь знает - распишите пожалуйста подробно по шагам.
2. Есть ли разница в скорости работы пары функций rec / val в сравнении с функцией find при выборке значений из внутренней БД? При этом считаем, что параметров выбирается около десятка. На мой взгляд пара rec / val должна работать быстрее, т.к. поиск по БД выполняется только 1 раз функцией rec, а затем по найденному номеру записи я выбираю функцией val нужные мне параметры. Но кто знает....
3. Если ли у кого-то соображения по поводу того, как максимально ускорить пересчёт 3Д-фрагмента типа винта, болта, гайки, шайбы и т.п., т.е. тех фрагментов, которые применяются массово и ввиду этого их время пересчёта критично.
Я решил таки усовершенствовать нашу базу крепежа, сделать её чуть более удобной. И возник такой интересный случай: массив из 1000 "новых" винтов стал пересчитываться в 5 раз дольше, чем массив 1000 "старых" винтов. После изысканий я случайно выяснил, что на скорость пересчёта почему-то влияет то, какая строчка из БД была выбрана при сохранении винта. Т.е. допустим я сохраняю свой винт при диаметре 3 мм и длине 10 (запись в БД №27). После этого мой массив 1000 элементов считается 25 секунд. После этого я пересохраняю винт со значением диаметра 2 мм и длиной 4 мм (запись в БД №1). После этого массив пересчитывается 5 секунд. При этом массив был сделан не в файле винта, а в сборке, куда винт вставлен как фрагмент. И в переменных винта как фрагмента в сборке была установлена запись №27 (диаметр 3 и длина 10). И я ну никак не могу понять почему так происходит. Какая логика может объяснить такое поведение? Может функции rec / val или find (кстати пробовал оба варианта - разницы не увидел) как-то особенно работают?
В общем, жду ваших комментариев по вышеописанным вопросам.
 
Похожие проблемы, с которыми в свое время сталкивался (там только были трубопроводы и арматура) решал следующим образом: делал копии фрагментов, в которых все внешние переменные отключал - например была параметрическая модель задвижки на разные диаметры труб, делал из нее несколько фрагментов на каждый диаметр трубы, который был в проекте (на 100, 150, 200) Работать было легче. Аналогично можно работать с массивами. Я например, давно для своих целей применяю фрагменты-массивы. Т.е. фрагмент, массив в котором уже создан. Например, набор крепежа для фланцевого соединения - массив из тел (не фрагментов а именно твердых тел), которые моделируют болты, шайбы и гайки , размещенные по окружности. Диаметр окружности, кол-во и толщина соединяемых фланцев - внешние переменные. Быстро и удобно.
Покопаться, можно еще чего-нибудь придумать. Надо пробовать экспериментировать. TF- jxtym bynthtcysq d 'njv gkfyt bycnhevtyn/
 
1. Если Вас интересует скорость пересчета фрагментов, то используйте конфигурации при их вставке.
Если у вас вставляемый элемент не типовой, то выбрав его один раз и вставив в сборку "на ходу", потом когда параметры "устаканились", т.е все элементы пришли в соответствие с вашим конструкторским замыслом сделайте деталировку, затем в ней конфигурацию, сохраните как первоначальный фрагмент и в сборке в свойствах фрагмента установите созданную конфигурацию. Пересчеты будут быстрыми.
2. Разница в скорости rec / val в сравнении с функцией find может проявиться только на очень больших БД.
3. Дело в том что, в случае быстрого пересчета Вы попадаете на параметры с которыми записан вставляемый файл, значения просто сравниваются и не считываются из БД и геометрия не пересчитывается, а берется сохраненная. Сделайте на все применяемые у Вас метизы конфигурации и вставляйте конфигурации. В этом случае внутри фрагмента сохраняется геометрия по вашим параметрам и в пересчетах не участвует.
И советую прислушаться к предложению Павла Перфильева. Кстати в новых библиотеках 11 версии такие файлы массивы есть. Дело в том что элемент массива пересчитыввается один раз, затем геометрия просто копируется, это гораздо быстрее.
Изменено: Diso - 15.09.2010 19:08:10
Страницы: 1