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

Скольжение узла по балке


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

Добрый день, коллеги!

 

Может быть кто-то сможет подсказать - буду очень благодарен!

 

В общем, есть балка построенная балочными элементами (на рисунке сиреневая, вытянутая вдоль z).

К ней подходят от рамки вокруг пружины, пусть пока ограничивающие перемещения без поворотов (но в целом они должны быть также ограничены с некоторой жёсткостью).

Балка может достаточно далеко уезжать вдоль z, да и в остальных осях перемещаться и поворачиваться способна. Да и сама рамка вокруг может деформироваться.

 

Необходимо сделать так, чтобы при некотором "большом" смещении балки пружины перестраивались до ближайшего к центру рамки узла на балке.

 

Пробовал делать через слайдер, но он не имеет поворотных степеней свободы.

Пошёл через рестарт (ANTYPE,,REST) и через рождение и смерть элементов: узел пружин соединён с узлом балки через MPC. Построена вторая группа пружин (с малой жёсткостью), но она не присоединяется к балке. На каждом шаге решения узел из второй группы ищет ближайший к нему узел на балке. Если узел из первой группы удаляется выше некоторого критерия, то узел из второй группы перемещается к найденному ближайшему узлу балки ( "D,,," - шаг решения 2).

Затем на третьем шаге решения убиваем MPC первой группы и создаём MPC-связь второй группы пружин с балкой и задаю второй группе нужные жёсткости.

Всё хорошо, но вот только обе группы возвращаются в нулевое состояние (ненагруженное положение) и MPC-связь второй группы как-будто бы не создаётся.

 

Просьба подсказать идеи решения задачи.

Или прокомментировать моё решение - что может быть не так с точки зрения логики.

 

 

07.png


 

08.png

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


UnPinned posts

наверное я бы сделал такое следующим образом, создал бы свободный узел, к которому прицепил пружину. для связи свободного узла с узлом балки использовал бы комманду CP. Если нужно отвязать свободный узел от узла балки , то CPDEL (убиваем уравнение связи). Допустим что после логических и арифметических операций Вы определили необходимость привязки свобдного узла пружины к другому узлу балки - тут возможно два пути,первый -  физически передвинуть свободный узел пружины к требуемому узлу балки, что бы координаты узлов совпадали и использовать команду CP и продолжить расчет, второй - за некоторый фиктивный шаг прикладываем перемещения к свободному узлу такие, что бы в деформированном состоянии оказался рядом с требуемым узлом балки и связываем два узла командой CP. Продолжаем расчет

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

Добрый вечер!

"первый -  физически передвинуть свободный узел пружины к требуемому узлу балки, что бы координаты узлов совпадали и использовать команду CP и продолжить расчет, второй - за некоторый фиктивный шаг прикладываем перемещения к свободному узлу такие, что бы в деформированном состоянии оказался рядом с требуемым узлом балки и связываем два узла командой CP. Продолжаем расчет"

Второй путь применяю, а в первом что значит "физически передвинуть свободный узел пружины к требуемому узлу балки"? Во втором случае делал через D, а в первом?

Что-то подобное делал и с CP, код ниже (в файле).

 

Суть полученного: новый СР не создаётся, а старый не удаляется.

_08_05_04.txt

Изменено пользователем Avksent
Ссылка на сообщение
Поделиться на других сайтах

некоторые комманды работают только в /Prep7

физически =сделать так чтобы координаты узлов совпадали.

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, dronm сказал:

некоторые комманды работают только в /Prep7

Ну, они в коде реализованы в Prep7:

 

! Убиваем CP и создаём новый
FINISH  
/PREP7 
CP, , ALL, N6,Nbeam
CPDEL ,1
ALLSEL, ALL, ALL

 

первым CP создали новую связь

вторым CP - убили старую связь

 

но переходя обратно в /sol и решая задачу с рестартом эти строки игнорируются.

2 часа назад, dronm сказал:

физически =сделать так чтобы координаты узлов совпадали.

Так, собственно с помощью команды D мы и двигаем координаты. Но это "второй вариант".

Как можно ещё совместить координаты?

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

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

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

Кстати, если еще добавить скалярное произведение равное нулю, то получим условие присоединения в произвольной точке, не обязательно в узле :)

Ссылка на сообщение
Поделиться на других сайтах
4 hours ago, Avksent said:

Ну, они в коде реализованы в Prep7:

 

! Убиваем CP и создаём новый
FINISH  
/PREP7 
CP, , ALL, N6,Nbeam
CPDEL ,1
ALLSEL, ALL, ALL

 

первым CP создали новую связь

вторым CP - убили старую связь

 

но переходя обратно в /sol и решая задачу с рестартом эти строки игнорируются.

Так, собственно с помощью команды D мы и двигаем координаты. Но это "второй вариант".

Как можно ещё совместить координаты?

я ж не виноват что код не корректен, я дал идею - за воплощение идеи в жизнь я не отвечаю

после CP, , ALL, N6,Nbeam, создалось  6 CP, связалось по UX, UY, UZ,Rotx,Roty,Rotz, а удаляете только первую,

у ANSYS сложно с логикой нумерации, поэтому либо сами определяете номер CP, а потом его удалете, либо

удаляйте все

есть команды, которые пережвигают узлы в модели, меняют их координаты в конечноэлементной модели.

Рекомендация - прежде чем запускать код на исполнение, убедитесь что он работает адекватно в режиме ввода

команд в командную строку.

Хорошо бы читать описание команд, хотя бы бегло.

В общем не в коня корм

Ссылка на сообщение
Поделиться на других сайтах
22 часа назад, Avksent сказал:

Необходимо сделать так, чтобы при некотором "большом" смещении балки пружины перестраивались до ближайшего к центру рамки узла на балке.

Нельзя сразу создать 100500 пружин для всех вариантов? Лишние пружины на каждом шаге "убивать".

22 часа назад, Avksent сказал:

Всё хорошо, но вот только обе группы возвращаются в нулевое состояние (ненагруженное положение)

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

Сохранять в переменные/таблицы или во внешний текстовый файл, конечно.

22 часа назад, Avksent сказал:

Пошёл через рестарт (ANTYPE,,REST) и через рождение и смерть элементов

Не помню, что будет, если использовать не рождение, а смену материала. Можно ввести фейковый материал с близким к нулю модулем Юнга и присвоить его ненужным пружинам. Потом в конце шага запомнить в переменных НДС пружин, поменять материал и задать сохранённое НДС.

Изменено пользователем AlexKaz
Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, AlexKaz сказал:

Нельзя сразу создать 100500 пружин для всех вариантов? Лишние пружины на каждом шаге "убивать".

 

Если через EKILL, то он для пружин не работает - уже думал о таком варианте.

Можно через 37 пружины - по условию, но не хотелось бы делать "миллион" пружин и на каждую тратить ресурсы на каждом шагу решения.

 

COMBIN39 Assumptions and Restrictions
...

The element can not be deactivated with the EKILL command.

...

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

Так выключенные элементы ресурсы решателя не расходуют...

С такими сложностями не проще передвигать узел на балке?

Ссылка на сообщение
Поделиться на других сайтах
7 минут назад, AlexKaz сказал:

Так выключенные элементы ресурсы решателя не расходуют...

Разве на каждом шагу проверки не будет проверяться условие включения/выключения для каждого из миллиона элементов? Не выгоднее ли сделать условие "вручную" проверки "одного" элемента и его перенастройки на нужном шагу?


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

Изменено пользователем Avksent
Ссылка на сообщение
Поделиться на других сайтах
Только что, Avksent сказал:

Разве на каждом шагу проверки не будет условие проверяться для каждого из миллиона элементов?

Как организуете алгоритм. Если номера заранее известны, то всё можно сделать быстро.

А ленивый перебор по условию явно не оптимальный вариант.

9 минут назад, AlexKaz сказал:

С такими сложностями не проще передвигать узел на балке?

 

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Александр 36
      Добрый.Подскажите как можно вывести отображение машинного времени?
    • vanek77777
      Балабол) Тебе уже говорили как-то выше по ветке, не давай советы по cad/cam системе в которой видимо даже не работаешь) Человек задал конкретный вопрос, как назначить конкретную обработку. Если ты не можешь показать, а ты не можешь, то пройди мимо. Конкретно по вопросу выше, я помочь не могу, т.к. не было необходимости делать такую обработку. Скилл как правило не определяется знанием всего по чуть чуть (как в твоем случае). Если ты занимаешься всем (судя по твоим постам на форуме), то ты ни чем не занимаешься по сути. На этом я больше тратить время на споры с тобой и флуд не буду. 
    • maxx2000
      пробывал поставить птичку "разрешить привязку"? да забей ты на лайки- шмайки, словами ответь. Пробовал или помогло?
    • maxx2000
      охренел что ли, где я ему про 3+2 говорил?  По твоему 5 осевая стратегия всегда подразумевает непрерывное движение всех 5 осей? Что на 4 осевом станке нельзя использовать 5 осевые стратегии?   а спину вареньем не намазать?   Я ещё раз повторюсь,  создаётся  ЛСК (или как там она у вас называется у NXстрадальцев) обрабатываемого элемента, Z этой ЛСК будет автоматически довернута вдоль оси шпинделя(повернётся стол), а поскольку обрабатываемый элемент не плоский (с подвывертом) обработка будет вестись по всем осям (непрерывная 5 осевая), а наклон инструмента будет минимизирован, в зависимости от того как настроена обработка вдоль Z ЛСК элемента,  по нормали к элементу или будет разрешено резать боком. Либо не выёживаться и использовать инструмент для обработки импеллера. Чё тут непонятного? Ах да, нет картинок волшебных. Ну мои картинки тут не приветствуются, без желания понять суть, они бесполезны.   Алаверды Сделай и выложи сюда проект. Покажи на деле. Посмотрим на твою скилуху.  
    • GHEB
      Добрый день Создал некую модель, всё было хорошо, но после перезапуска программы почему то эскиз перестал привязываться к линиям: Выбираю "Эскиз" https://skr.sh/sPckC4oM2Sf Нажимаю на нужную мне плоскость https://skr.sh/sPc7M6DGRDq Выбираю линию https://skr.sh/sPcnw9t9J9u Пытаюсь начать рисовать от центра окружности https://skr.sh/sPc1Kklf8nM Пытаюсь рисовать от некой точки https://skr.sh/sPcECS6vnwL Как видно курсор не привязывается к точкам, из-за чего попасть точно не представляется возможным Тоже самое если я пытаюсь к эскизу например дорисовать линию https://skr.sh/sPcX7Wyj0e6  В настройках эскиза настроено так, пробовал "перетыкивать" не помогло: https://skr.sh/sPc1CoTvYDS Версия https://skr.sh/sPcH4esnnCK Скрин всего окна и настроек, о которых я вычитал тут:  https://skr.sh/sPcHbYP5iB4 Скрин https://skr.sh/sPcHbYP5iB4 всего окна и настроек, о которых я вычитал тут:      Нашёл "быстрые привязки, но они работают не очень хорошо для окружностей и между ними приходиться переключаться, до этого таокго не было, неудобо https://skr.sh/sPcvE3KzS3u
    • Viktor2004
      Вот этот пример работает безотказно Нажатие на F1 включает кипп-реле К50.0, нажатие F2 его выключает O8001 G240 P3 C0 G243 X2 Y0 A1 B0 (TEST PROGRAM) G240 P6 C0 G243 X7 Y[4 + 1] (SECOND SCREEN) G240 P7 C0 G243 X5 Y26 A1 B0 (K50.1) G243 X5 Y27 A1 B0 (ON) G243 X12 Y26 A1 B0 (K50.1) G243 X12 Y27 A1 B0 (OFF) IF [#8549 EQ 249] THEN G310 K50 Q1 ENDIF IF [#8549 EQ 248] THEN G310 K50 Q0 ENDIF M99  
    • gudstartup
      код клавиши обязан передаться приложению экран которого активен на данный момент времени а у вас получается что он неактивен и какое то другое приложение этот код забирает
    • vanek77777
      Не тебе судить об уровне моих знаний и умений) тебе конкретно написали выше, сделай и выложи сюда проект. Покажи на деле. Языком трепать ты горазд. Человек изначально спросил, как сделать в непрерывных 5 осях, а ты ему про 3+2 закатку. Зачем ему именно в 5 осях крутить это уже его дело. 
    • Viktor2004
      не знаю. Я на видео показал что код нажатой клавиши лишь кратковременно мигает в момент ее нажатия. Это в переменной #8549. Как его ловить со 100% успехом я не знаю Если из программы все удалить и оставить только нажатие кнопки, тогда работает
    • gudstartup
      куда же он девается из буфера клавиатуры ведь если код не считывать то он должен там находиться иначе неизбежен пропуск нажимаемых кнопок а это неправильно 
×
×
  • Создать...