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

Оптимизация NXOpen программ с большим количеством построений


Schmellow

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

Приветствую.

Разрабатываем программу подготовки данных для специфического техпроцесса.

Вкратце суть: имеется поверхность и набор точек на ней (для тестирования генерируем равномерную сетку из точек). Задача в том, чтобы сгенерировать на поверхности набор оптимальных траекторий, покрывающих все или максимально возможное число точек. При этом у каждой точки есть как минимум 1 вектор, по которому должна лечь кривая в окрестности. Для каждого вектора число максимальных прохождений по нему конечно и также определено.

Текущее решение предполагает достаточно большое количество вспомогательных построений (определение сектора поиска, отработка возможных вариантов итд). Очистка модели от этих построений - отдельная больная тема, т.к. логика связей между объектами иногда доводит до белого каления. Но основные проблемы - производительность и потребление памяти.

На относительно большом количестве точек (скажем пара сотен) обработка чрезвычайно медлительна. Причем с каждым построением, следующее построение выполняется все медленнее и медленнее. При этом памяти отжирается невероятное количество, и судя по всему на ее использование не влияет ни ручное удаление промежуточных построений (там где это возможно). ни даже факт выгрузки программы после ее завершения.

Выясненные экспериментально вещи:

1) При запуске в batch режиме, без среды моделирования, прирост производительности примерно 30%, использование памяти уменьшается процентов на 50, однако величины затраченного времени и памяти по прежнему далеки от приемлемых.

2) Основные потери времени именно на построениях и обращениях к геометрическим объектам. Не самая простая логика и обработка собственных структур данных отрабатывается бесконечно быстро, по сравнению с рисованием..

Соответственно вопрос: имеются ли какие-то возможности по оптимизации работы с большим количеством геометрических объектов?

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


Приветствую.

Разрабатываем программу подготовки данных для специфического техпроцесса.

Вкратце суть: имеется поверхность и набор точек на ней (для тестирования генерируем равномерную сетку из точек). Задача в том, чтобы сгенерировать на поверхности набор оптимальных траекторий, покрывающих все или максимально возможное число точек. При этом у каждой точки есть как минимум 1 вектор, по которому должна лечь кривая в окрестности. Для каждого вектора число максимальных прохождений по нему конечно и также определено.

Текущее решение предполагает достаточно большое количество вспомогательных построений (определение сектора поиска, отработка возможных вариантов итд). Очистка модели от этих построений - отдельная больная тема, т.к. логика связей между объектами иногда доводит до белого каления. Но основные проблемы - производительность и потребление памяти.

На относительно большом количестве точек (скажем пара сотен) обработка чрезвычайно медлительна. Причем с каждым построением, следующее построение выполняется все медленнее и медленнее. При этом памяти отжирается невероятное количество, и судя по всему на ее использование не влияет ни ручное удаление промежуточных построений (там где это возможно). ни даже факт выгрузки программы после ее завершения.

Выясненные экспериментально вещи:

1) При запуске в batch режиме, без среды моделирования, прирост производительности примерно 30%, использование памяти уменьшается процентов на 50, однако величины затраченного времени и памяти по прежнему далеки от приемлемых.

2) Основные потери времени именно на построениях и обращениях к геометрическим объектам. Не самая простая логика и обработка собственных структур данных отрабатывается бесконечно быстро, по сравнению с рисованием..

Соответственно вопрос: имеются ли какие-то возможности по оптимизации работы с большим количеством геометрических объектов?

Очевидно, что надо отказываться от создание геометрических объектов, а переходить на вычисления (вектора, координаты и т.д.)
Ссылка на сообщение
Поделиться на других сайтах

Этот вариант приходил в голову, и он честно говоря не самый приятный. Откровенно неясно, как перенести некоторые вещи, опирающиеся на построения (например проецирование сплайна на поверхность двойной кривизны) в аналитику. Можно ли как-то получить от NX'а аналитическое описание поверхностей и кривых?

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

Этот вариант приходил в голову, и он честно говоря не самый приятный. Откровенно неясно, как перенести некоторые вещи, опирающиеся на построения (например проецирование сплайна на поверхность двойной кривизны) в аналитику. Можно ли как-то получить от NX'а аналитическое описание поверхностей и кривых?

Можно

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

Можно

интересно, а в каком виде Вы ожидаете получить аналитическое описание???

ведь тут давно всё спланй-поверхностями представляется

ну да, есть пару типов к которым можно искусственными методами привести: плоскость, сфера, цилиндр, тор, но это не поможет.

упомянута поверхность с двойной кривизной -- получите Вы набор узловых точек, а что дальше?

собственный движок 3D сплайнов писать?

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

Очевидно, что надо отказываться от создание геометрических объектов, а переходить на вычисления (вектора, координаты и т.д.)

Да Вам дело говорят

Я бы подобные алгоритмы строил с использованием расчета дистанции

от точки до объекта (нет построений)

Или если нужно проецирование (trace_ray) поищите тоже нет построений

Можете три пять процентов поиметь если заморозите изображение в процессе рисования Только не забудьте подом созданные объекты добавить к списку отображаемых

По поподу память - это общеизвестная практика в программировании

когда удаляемые объекты только помечаются как удаленные но не удаляются моментально так можно экономить ресурсы процессора

Попробуйте поиграть с UF_PART_cleanup может это Вам поможет

Может у Вас при программном создании

объектов Undo история пишется

Да по поводу аналитики кривых и поверхностей

Можно получить координаты полюсов и другую числовую информацию

для полного восстановления уравнений

Такие функции есть

Но я бы не стал идти по этому пути

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

Да Вам дело говорят

Я бы подобные алгоритмы строил с использованием расчета дистанции

от точки до объекта (нет построений)

Или если нужно проецирование (trace_ray) поищите тоже нет построений

Можете три пять процентов поиметь если заморозите изображение в процессе рисования Только не забудьте подом созданные объекты добавить к списку отображаемых

По поподу память - это общеизвестная практика в программировании

когда удаляемые объекты только помечаются как удаленные но не удаляются моментально так можно экономить ресурсы процессора

Попробуйте поиграть с UF_PART_cleanup может это Вам поможет

Может у Вас при программном создании

объектов Undo история пишется

Да по поводу аналитики кривых и поверхностей

Можно получить координаты полюсов и другую числовую информацию

для полного восстановления уравнений

Такие функции есть

Но я бы не стал идти по этому пути

Что ж, попробуем, концепцию только придется порядочно перетряхнуть.

Спасибо за советы.

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

Что ж, попробуем, концепцию только придется порядочно перетряхнуть.

Спасибо за советы.

Когда я дела одну программку и без построений никак не мог, то делал такой финт: строил, но не удалял, а отменял (Undo) так быстрее получалось.
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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

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



  • Сообщения

    • IGor2D
      По итогу...: По гарантии приехали и поправили только точность реза, остальное не смогли исправить, нужен инженер с HSG. Глючный однако китаец, пытается сам себя сломать.
    • Gmv
      По кнопке FTP стойка имеет 6 страниц для трех разных хостов. Где можно указать IP , имя, пароль 1страница. каталог 2 страница. Больше настроек не нашел.
    • gudstartup
      на фануке настраиваете доступ по ftp на соответствующей вкладке  и также расшариваете папку  вашим сервером и все прекрасно работает.
    • gudstartup
      симулятор предполагает взаимодействие как с чпу так и со станком посредством другой plc программы иначе вам придется самому управлять входами и выходами а это непросто.    
    • Gmv
      У кого есть опыт организации FTP именно на станке? Стойка 0i-MF plus   Сейчас пока сервер настроен на компе, и то не до конца. файлы видны, извлечь их или скопировать в память станка не выходит. Но операторы уже сразу возмущены,  им проще бегать с USB флешкой и нажимать одну кнопку, чем прыгать по папкам. На хаасе это реализовано классно, он создает сетевой диск и полный доступ и со стойки с пк. Хотелось бы подобного.
    • Guhl
      Я нормально проекты писал и отлаживал на эмуляторе Балт-Систем На Heidenhain, насколько я понял, работает симулятор с их сайта в связке с PLC design @gudstartup пользовался этим вот в этой ветке
    • ID_Hacker
      Ну уж балт-систем то не надо сюда. Там такое ущербное всё, что аж страшно вспомнить. Haidenhain эмулятор где взять, подскажете? А как отработать взаимодействие между NC и PLC, действия где работают и оси и механизмы электроавтоматики. Сам хочу попробовать Run my virtual machine, да всё времени нет.
    • Bot
      Данное приложение разработано на языке Visual Basic с использованием программного интерфейса NX Open API и предназначено для использования в САПР Siemens NX, начиная с версии 2000. Стиль интерфейса пользователя идентичен стилю САПР Siemens NX. View the full article
    • Jesse
      @ГЕЛА Ещё можно посчитать в балках и учесть влияние отверстия через коэффициент концентрации напряжений..) Но у вас отверстие на всю стенку, так что лучше, проще и быстрее посчитать всё это дело в оболочках как выше сказали. Скругления перехода от стенки к полке удалите и в запас считайте.
    • 5axisCNC
      Можно плоскость дна задать множеством вариантов например точка направление
×
×
  • Создать...