Перейти к публикации

Best Fit Alignment алгоритм


avd

Рекомендованные сообщения

В NX7.5 появился хороший функционал - Best Fit Alignment. Господа подскажите где можно найти его алгоритм, хочется реализовать его в NX6. Исходно даны две кривые, одну из которых надо расположить наилучшим образом к другой с помощью перемещений и поворотов.

Ссылка на сообщение
Поделиться на других сайтах


Есть такой алгоритм. Я его реализовал на станке (!!), в Siemens 840D. Работает так - два массива (сколь угодно больших) точек совмещаются, результат - три перемещения и три поворота вдоль осей. Все сводится к системе уравнений 6x6.

А делалось это вот для <noindex>этого.</noindex> 

Ссылка на сообщение
Поделиться на других сайтах

Есть такой алгоритм. Я его реализовал на станке (!!), в Siemens 840D. Работает так - два массива (сколь угодно больших) точек совмещаются, результат - три перемещения и три поворота вдоль осей. Все сводится к системе уравнений 6x6.

А делалось это вот для <noindex>этого.</noindex> 

Как решить систему уравнений - не проблема, необходимо дать ссылку на метод вывода уравнений. Другими словами какую книжку читать
Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...

Как оказалось Best Fit Alignment есть и в NX6. Сейчас проблема в UGOpen не могу найти функцию, которая эту команду реализует.

С помощью журнала получаю следующую команду NXOpen.Facet.BestFitAlignBuilder bestFitAlignBuilder1, но как это реализовать в UGOpen?

Ссылка на сообщение
Поделиться на других сайтах

Как оказалось Best Fit Alignment есть и в NX6. Сейчас проблема в UGOpen не могу найти функцию, которая эту команду реализует.

С помощью журнала получаю следующую команду NXOpen.Facet.BestFitAlignBuilder bestFitAlignBuilder1, но как это реализовать в UGOpen?

Руками пиши в UGOpen

По поводу почитать о выводе уравнений - метод наименьших квадратов

Вообще задача сводится к поиску экстремума

То есть изначально Tебе надо Написать целевую вункцию минимум котоой будешь искать

F(6 переменных - три перемещения и 3 угла поворота)

Если речь идет ос совпадении точек то берется просто сумма квадратов разностей соответствующих точек

Кстати поиск минимума можешь попробовать произвести численно - есть куча простых алгоритмов но будет очень долго

Если вспомнить соответствующие теоремы из мат анализа то для нахождения экстремума можно использовать тот фокт что в точке экстремума все первые частные производные от F по каждой из 6 переменных должны быть равны 0.

И перейти к решению 6 уравнений - это будет метод наименьших квадратов

Есть альтернативная формулировка Гаусса

Если написать систему уравнений при совпадении A*x=Y - в матричном виде и число уравнений как правило больше чем число неизвестных

То МНК система будет такая

At*A*x=At*Y

где At - траспонированная матрица A - формула легко запоминается и программируется

Хотя примеительно к кривой представленной точками - задача совпадения кривых и множеств точек на них насчитанных не эквивалентны

Требуются еще дополнительные условия - например о распределении точек по кривой

И решений у этой задачи может быть неколько в том числе за счет выбора нумерации точек

Ссылка на сообщение
Поделиться на других сайтах

Руками пиши в UGOpen

По поводу почитать о выводе уравнений - метод наименьших квадратов

Вообще задача сводится к поиску экстремума

То есть изначально Tебе надо Написать целевую вункцию минимум котоой будешь искать

F(6 переменных - три перемещения и 3 угла поворота)

Если речь идет ос совпадении точек то берется просто сумма квадратов разностей соответствующих точек

Кстати поиск минимума можешь попробовать произвести численно - есть куча простых алгоритмов но будет очень долго

Если вспомнить соответствующие теоремы из мат анализа то для нахождения экстремума можно использовать тот фокт что в точке экстремума все первые частные производные от F по каждой из 6 переменных должны быть равны 0.

И перейти к решению 6 уравнений - это будет метод наименьших квадратов

Есть альтернативная формулировка Гаусса

Если написать систему уравнений при совпадении A*x=Y - в матричном виде и число уравнений как правило больше чем число неизвестных

То МНК система будет такая

At*A*x=At*Y

где At - траспонированная матрица A - формула легко запоминается и программируется

Хотя примеительно к кривой представленной точками - задача совпадения кривых и множеств точек на них насчитанных не эквивалентны

Требуются еще дополнительные условия - например о распределении точек по кривой

И решений у этой задачи может быть неколько в том числе за счет выбора нумерации точек

Вопрос с выводом целевой функций не стоит, это уже есть. Хотелось бы просто автоматизировать встроенную функцию. Как Вы правильно заметили "требуются дополнительные условия", в них, я так понимаю и проблема, потому что выравнивание по выведенным формулам и встроенным функционалом отличалось.

В целом задача не критична, и вполне возможно делать руками... но любознательность бывает выстреливает и рождаются подобные темы

Ссылка на сообщение
Поделиться на других сайтах

Вопрос с выводом целевой функций не стоит, это уже есть. Хотелось бы просто автоматизировать встроенную функцию. Как Вы правильно заметили "требуются дополнительные условия", в них, я так понимаю и проблема, потому что выравнивание по выведенным формулам и встроенным функционалом отличалось.

В целом задача не критична, и вполне возможно делать руками... но любознательность бывает выстреливает и рождаются подобные темы

Вот как раз целевых функций на этот случай можно кучу написать

стоит только добавить к координатам точек снятых с кривой их нормали

Анализировать в этом случае можно

1) Совпадение точек

2) Оценку величины проекции точки с одной кривой на другую кривую в окрестности ближайшей точки другой кривой

3) Совпадение направлений нормалей

А токже комбинации из этих величин

Если кривая непериодическая то с распределением скорей свего все просто

я бы просто распределил точки равномерно по длине кривой - тогда нужно проанализировать всего 2 способа нумерации

и из двух решений выбрать одно

Если решение получается другим то скорее всего и целевая функция другая

Ссылка на сообщение
Поделиться на других сайтах

Вот как раз целевых функций на этот случай можно кучу написать

стоит только добавить к координатам точек снятых с кривой их нормали

Анализировать в этом случае можно

1) Совпадение точек

2) Оценку величины проекции точки с одной кривой на другую кривую в окрестности ближайшей точки другой кривой

3) Совпадение направлений нормалей

А токже комбинации из этих величин

Если кривая непериодическая то с распределением скорей свего все просто

я бы просто распределил точки равномерно по длине кривой - тогда нужно проанализировать всего 2 способа нумерации

и из двух решений выбрать одно

Если решение получается другим то скорее всего и целевая функция другая

Спасибо за информацию :lighten:
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • hlibhlib
      Так решили?  https://disk.yandex.ru/d/ZDWZv8p_B7l6nw
    • nicomed
      Я не программист, тем более не системщик. Могу только гипотетически предполагать что разные версии NET Framework в системе... я писал под 4.7.2. Переписывать с отловом ошибок , если честно лень. Тут вообще глаза на лоб лезут. Из не стандартных Майкрософтовских библиотек использовались только библиотеки от Солид-а. Что там может хотеть автозагрузки не представляю. Обычное WPF приложение. Исходники в доступе. С похожим сталкивался к каком аспекте: Когда у себя тестировал скрытие кромок, то для того, что бы сделать все кромки опять видимыми, то переходил в режим видимости кромок в Солиде ( ) и нажимал кнопку "Сбросить все". Визуально все кромки делались видимые. Потом после использования  макроса все кромки, что до этого скрывались и проявились после нажатия кнопки - скрывались вновь.   При тестах на 2-х машинах Вин10 СВ21 - пока проблем не было.
    • maxx2000
      выдавить на экструдере и пилой шик-шик, как колбасу, а не заниматься суходрочкой. если это корпуса с интегрированным оребрением, вложиться в литье люминя под давлением.
    • Говорящий Огурец
      Во, вспомнил, где я картинки видел! :) Инструкция по эксплуатации Sandvik Coromant. Обработка титана. Техническое руководство.pdf Начиная с 91-й страницы.   Чисто интуитивно применял нечто подобное на алюминии и технических пластиках при фрезеровке ребер/стенок
    • Kelny
      Так же меню Инструменты-Параметры...-Настройки пользователя-Эскиз-Взаимосвязи/привязки
    • advocut
      @hlibhlib https://dropmefiles.com/oTuAs  Вот такая была ещё (эту разрешили). Непонятно, как вообще сказать каму, откуда заходить (надо или снаружи, или в заранее просверленные отверстия и чтобы не на бобышки), тем более тут ещё и узкое место есть, т.е. вообще два захода надо.
    • AlexKaz
      Будет только МКЭ или и аналитика + натурный эксперимент?
    • malvi.dp
      На 16 солиде (win7) работает не стабильно бывает солид крошится,  при нажатии на кнопку "закрыть" вылезает окно: Ещё почему-то попыталось добавиться в автозагрузку В 20 солиде бывает удаляет не только выделенную кромку, а и другие. При выделении силуэтной кромки на ее месте рисует около 20 линий.
    • Kelny
      Это странно, бывает, что слетают все настройки - особенно своих кнопок, но что бы панельки бегали по экрану не замечено. Хотя на первой вашей картинке похоже, что панелька с закладками не привязана к окну программы, а во втором как раз таки привязана.   Так же если откроете окно настройки панелей, то на закладке ПАНЕЛИ ИНСТРУМЕНТОВ есть галочка Заблокировать КоммандМанаджер и панели инструментов - после этого движение панелек пользователем в окне программы ограничено.
    • Борман
      Только сила А. в жидкости действует вверх до самого "конца", а вы получили действие вверх на величину деформации. Типа встали в какашку, а она сбоку вылезла выше уровня подошвы.
×
×
  • Создать...