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

ANSYS Main Menu disassembling


Борман

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

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

Будем создавать пункт меню в ANSYS APDL. Этапы создания следующие...

1. Создание самого элемента меню

2. Обработка нажатия на этот пункт. Вызов диалога SELECT  и диалога ввода данных.

3. Работа макроса с этими данными.

 

Микро-задача такова..

Написать пункт меню, по которому сначала выбирается точка, потом в текстовом поле вводится вектор dx,dy,dz. И на эти приращения строится линия. Странно что такого до сих пор нет :)

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


UnPinned posts
1 hour ago, Борман said:

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

8 hours ago, Борман said:

Хочу напИсать длинный пост. Есть ли ограничение на кол-во картинок

 

Давай уже обещанный длиннопост с картинками!

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

1. СОЗДАНИЕ ЭЛЕМЕНТА МЕНЮ.

Будем делать свою отдельную ветку в препроцессоре, по понятным причинам. Есть такая фишка, что при входе в препроцессор меняется значение одного ключевого слова (KEYWORD), можно придумать свой KEYWORD, и менять его командой KEYW, Keyword, KEY. В зависимости от значений KEYWORD можно менять видимость пунктов меню, но мы этим  не будет заниматься.

Итак, для начала надо сделать папку, где все будет лежать. У меня в папке D:\Work\MYSYS\GUI будут лежать файлы GUI, а в папке D:\Work\MYSYS\MACRO будут лежать макросы, которые мы напишем.

Для доступа к этой папке из ANSYS надо в файле ANSYS Inc\vXX\ansys\apdl\start.ans прописать

/psearch,'d:\Work\MYSYS\MACRO'

В папку D:\Work\MYSYS\GUI положить два пустых файла BORMENU.GRN и BORFUNC.GRN - с ними мы будем работать. В существующий файл ANSYS Inc\vXX\ansys\gui\en-us\UIDL\menulist.ans дописать пути

d:\Work\MYSYS\GUI\BORMENU.GRN
d:\Work\MYSYS\GUI\BORFUNC.GRN

Настоятельно рекомендуется делать копии оригинальных файлов ANSYS. С неправильно собранными файлами оболочка не запустится, и придется где то искать оригинальные или работающие файлы. И делать так придется ОЧЕНЬ часто. 

Ищем файл ANSYS Inc\vXX\ansys\gui\en-us\UIDL\UIMENU.GRN. В этом файле содержится описание всего меню ANSYS MAPDL. Ищем в нем этот фрагмент, и добавляем идентификатор новой ветки меню.

image.png

Men - служебное слово. Остальное - ваша фантазия. С этим файлом закончили.

Описание нашего меню будет в наших файлах BORMENU.GRN и BORFUNC.GRN

 

Редактируем файл BORMENU.GRN

image.png

Смысл чисел в строках :I и :S мне непонятен, но они ни на что не влияют.

:N - идентификатор нового пункта

:T - признак того, что описывается "дерево" (Menu), а не команда (Cmd)

:A - название пункта меню

Fnc_LINETO - идентификатор того, что в этом дереве содержится. Это может быть окончательная команда (Fnc_) или продолжение меню (Men_). В данном случае при открытии дерева нам видна команда для выполнения.

 

Редактируем файл BORFUNC.GRN

image.png

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

 

После того, как ANSYS эти файлы прочитает и скомпилирует - в них будет добавлена служебная информация в самый конец, могут быть изменены эти непонятные числа. Про это можно не задумываться. Главное при первой компиляции сделать в конце пустуй строчку, тогда все пройдет хорошо. Потом про это не думать.

 

Вот что должно получиться на этом шаге.

image.png

 

Продолжение следует....

 

 

 

Ссылка на сообщение
Поделиться на других сайтах
1 hour ago, Борман said:

Главное при первой компиляции сделать в конце пустуй строчку, тогда все пройдет хорошо.

Прямо чувствую, сколько за этой строкой скрыто страданий... Лайк.

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

Прямо чувствую, сколько за этой строкой скрыто страданий... Лайк.

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

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

2. СОЗДАНИЕ ДИАЛОГОВ

Эта часть исключительно мутная, но она не ломает ANSYS. Эти формы либо работают, либо работают неправильно... в отличие от п.1, косяки в котором ломают оболочку.

Напомню затею..

В 08.09.2020 в 17:13, Борман сказал:

Написать пункт меню, по которому сначала выбирается точка, потом в текстовом поле вводится вектор dx,dy,dz. И на эти приращения строится линия. Странно что такого до сих пор нет :)

 

Будут последовательно вызываться диалог выбора точек, а за ним диалог ввода координат вектора. Это все прописывается в файле BORFUNC.GRN. Сначала выбираем точку.

image.png

На тройки цифр внимания не обращаем.

Cmd_P - это признак того, как команда выглядит в меню ANSYS. Так принято, что если первая операция осуществляет выбор объектов, то она изображается стрелочкой. Так и сделаем image.png

Далее имя пункта меню (LineTO). Признак целевого объекта (Typ_KEYP) - точки. Текстовые поля и две единички проще показать на натуре

image.png

Результат выбора будет положен в переменную pt_. Далее вызывается диалог ввода координат вектора, который описывается функцией Fnc_LINETO_1.

А вот и она...

image.png

Форма условно разделяется на поля Fld_, у нас будут поля статического текста (Label) и три числовых поля под координаты (Real3). В итоге получается вот что.

image.png

Можно заполнить поля значениями по умолчанию, только я забыл как. 

В результате всех действий введенные числа кладутся в структуру CPAR, из которой их потом можно выдернуть и передать непосредственно в обработчик логики - макрос - который мы назвали LNTO.

Отмечу, что аппарат создания формочек достаточно большой, и называется он страшным словом ANSYS UIDL.

 

Осталось немного.

 

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

3. МАКРОС

Он может вызываться как из GUI, так и из командной строки и из командного файла. Называется он LNTO.mac , лежит в каталоге, заданном командой

/psearch,'d:\Work\MYSYS\MACRO'

в файле ANSYS Inc\vXX\ansys\apdl\start.ans. Макрос вызывается как LNTO.

Вот он...

image.png

 

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

По хорошему, значение lastpt_ надо инициализировать как ноль в файле start.ans. В целом, это обычный макрос.

 

А это пример его работы...

image.png

 

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

Создание своих пунктов в Main Menu - очень полезная штука. Только это не disassembing. Для этого, собственно, и разработан User Interface Design Language (UIDL) и есть достаточное описание в "UIDL Programmers's Guide".

Надо сказать, что  в ANSYS хорошо настраиваются не только  Main Menu, но и Toolbar, Utitlity Meny, View Bar, Status Bar. Для этого используются языки UIDL, APDL, TCL/TK

Для примера, в какой-то версии был сделан MechToolbar, он и сейчас доступен.  Введите в start.ans две строки:

KEYW, SHOWMTB,1

/mstart, mtool, on 

и будет совсем другой внешний вид.

 

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

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

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

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

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

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

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

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

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

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

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




×
×
  • Создать...