Главная страница
Навигация по странице:

  • 5.1. Запрос пользователя на ввод значения одного параметра Используя команду*ASK

  • *CSET

  • MULTIPRO

  • MULTIPRO ,start,Prompt_Num стр. 68 из 76 ANSYS Release 10.0 Documentation / APDL Programmers Guide Буквари для Инженеров

  • MULTIPRO . Ниже следует типичный пример использования команды MULTIPRO

  • *CSET . *CSET ,61,62,Help_String,Help_String *CSET

  • Буквари для Инженеров

  • Примечание Команда /UIS

  • *ABSET

  • *ABCHECK

  • Примечание Не вызывайте *ABCHECK

  • Примечание Если макрос включает функции GUI, то команда /PMACRO

  • /PMACRO , ANSYS не сможет читать журнал сеанса, чтобы воспроизвести сеанс ANSYS. 5.6. Вызов диалоговых окон из макроса

  • Буквари для Инженеров


    Скачать 1.52 Mb.
    НазваниеБуквари для Инженеров
    Анкорansys_release_10_0_documentation_apdl.pdf
    Дата16.12.2017
    Размер1.52 Mb.
    Формат файлаpdf
    Имя файлаansys_release_10_0_documentation_apdl.pdf
    ТипСправочник
    #11751
    страница9 из 10
    1   2   3   4   5   6   7   8   9   10
    Буквари для Инженеров http://cyberkolbasa.com1.ru
    *vget,y(1),node,1,loc,y
    *vget,z(1),node,1,loc,z
    *vget,sel(1),node,1,nsel ! получение выбранного набора данных
    *voper,x(1),x(1),add,arg1 ! местоположение смещения
    *voper,y(1),y(1),add,arg2
    *voper,z(1),z(1),add,arg3
    ! *do,i,1,nnode ! сохранение нового положения
    ! *if,sel(i),gt,0,then ! такая форма требует 98 сек. для 100000 узлов
    ! n,i,x(i),y(i),z(i)
    ! *endif
    ! *enddo
    *vmask,sel(1) ! требуется 3 сек. для 100000 узлов n,(1:NNODE),x(1:NNODE),y(1:NNODE),z(1:NNODE) x(1) = ! удаление параметров y(1) = z(1) = sel(1) = i= nnode=
    /go ! отмена подавления вывода команд
    Следующий пример макроса, названный bilinear.mac, создает два билинейных материала. Это полезный макрос, который может быть выполнен после выполнения ста- тического анализа. Материал 1 - свойства растяжения и Материал 2 - свойства сжатия.
    ARG1 - число итераций (значение по умолчанию - 2).
    /nop
    _niter = arg1 ! ввод количества итераций
    *if,_niter,lt,2,then
    _Niter = 2
    *endif
    *do,iter,1,_niter ! цикл с заданным числом итераций
    /post1 set,1,1
    *get,ar11,elem,,num,maxd ! получение количества элементов
    *dim,_s1,,ar11 ! массив для элемента s1
    *dim,_s3,,ar11 ! массив для элемента s3 etable,sigmax,s,1 ! s1 is in element table sigmax etable,sigmin,s,3 ! s3 is in element table sigmin
    *vget,_s1(1),elem,1,etab,sigmax ! get element maximum stress in s1
    *vget,_s3(1),elem,1,etab,sigmin ! get element minimum stress in s3
    *dim,_mask,,ar11 ! array for mask vector
    *voper,_mask(1),_s1(1),lt,0 ! true if max. stress < 0
    *vcum,1 ! accumulate compression elements
    *vabs,0,1 ! absolute value of s3
    *voper,_mask(1),_s3(1),gt,_s1(1) ! true if abs(minstr) > maxstr finish
    /prep7 ! go to prep7 for element material mods mat,1 ! set all materials to tension properties emod,all
    *vput,_mask(1),elem,1,esel ! select compression elements mat,2 ! change selected elements to compression emod,all стр. 66 из 76

    ANSYS Release 10.0 Documentation / APDL Programmer's Guide
    Буквари для Инженеров http://cyberkolbasa.com1.ru call ! select all elements finish
    _s1(1)= ! clean up all vectors (set to zero)
    _s3(1)=
    _mask(1)=
    /solve ! rerun the analysis solve finish
    *enddo ! end of iterations
    _niter= ! clean up iteration counters
    _iter=
    /gop
    5. Интерфейс с GUI
    В пределах макроса ANSYS, Вы имеете несколько способов обратиться к компо- нентам графического пользовательского интерфейса ANSYS (GUI):

    Вы можете изменить и обновить панель инструментов ANSYS (это обсуждалось выше в разделе 2.1.).

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

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

    Вы можете использовать команду
    *MSG, чтобы создать макрос выводящий тексто- вое сообщение.

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

    Вы можете позволить пользователю выбирать объекты через графическое меню выбора внутри макроса.

    Вы можете вызвать любое диалоговое окно.
    Далее рассматриваются следующие разделы:

    Запрос пользователя на ввод значения одного параметра

    Запрос пользователя с диалоговым окном

    Использование макросов для отображения ваших собственных сообщений

    Создание и поддержка строки состояния из макроса

    Интерактивный выбор в пределах макроса

    Вызов диалоговых окон из макроса
    5.1. Запрос пользователя на ввод значения одного параметра
    Используя команду
    *ASK в пределах макроса, Вы можете получить запрос Пользо- вателя на ввод значения параметра.
    Формат для команды
    *ASK
    *ASK, Par,Query,DVAL
    Где

    Par - алфавитно-цифровое имя, которое идентифицируется как скалярный пара- метр и сохранит значение введенное пользователем. стр. 67 из 76

    ANSYS Release 10.0 Documentation / APDL Programmer's Guide
    Буквари для Инженеров http://cyberkolbasa.com1.ru

    Query - текстовая строка, которую ANSYS отображает, чтобы запросить пользо- вателя. Эта строка может содержать до 54 символов. Не используйте символы, ко-
    торые имеют специальные значения, типа "$" или "!".

    DVAL - значение по умолчанию, которое присваивается параметру, если пользова- тель не вводит значении (оставляет поле пустым). Это значение может содержать строку от одного до восьми символов (заключенных в единичные кавычки) или число. Если Вы не назначите никакого значения по умолчанию, пустой пользова- тельский ответ удалит параметр.
    Команда *ASK печатает текст Query на экране и ждет ответа. Она считает ответ введенный с клавиатуры кроме тех случаев, когда ANSYS выполняется в пакетном режи- ме. (В этом случае ответ или ответы должны содержаться в следующей считываемой стро- ке или строках.) ответ может быть числом, строкой от одного до восьми символов заклю- ченной в одиночные кавычки, числовым или символьным параметром, или выражением, которое определяет численное значение. Следующий пример отображает диалоговое ок- но, которое показано ниже, затем определяет параметр PARM1 значением, которое вводит пользователь.
    *ask,parm1,'username (enclose the username in single quotes)'
    Рис. 5.1. Пример диалогового окна *ASC.
    Когда Вы используете
    *ASK в пределах макроса, ANSYS записывает ответ пользо- вателя в файл
    File.LOG на следующей строке после имени макроса.
    5.2. Запрос пользователя с диалоговым окном
    КомандаMULTIPRO'> MULTIPRO создает простое диалоговое окно многократного запроса, ко- торое может содержать до 10 запросов. Команда позволяет Вам использовать ряд UIDL команды *CSET, чтобы создать запросы, а так же определить значение по умолчанию для каждого запроса. Обратите внимание, что макрос, использующий MULTIPRO нельзя вы- звать из UIDL. Вы не можете использовать MULTIPRO в пределах цикла типа DO Loop.
    Команда MULTIPRO должна содержать:

    От одного до десяти приглашений команды *CSET

    До двух специальных команд *CSET, которые обеспечивают две строковые облас- ти для пользовательских инструкций.
    Команда имеет следующий синтаксис:
    MULTIPRO
    ,'start',Prompt_Num стр. 68 из 76

    ANSYS Release 10.0 Documentation / APDL Programmer's Guide
    Буквари для Инженеров http://cyberkolbasa.com1.ru
    *CSET,Strt_Loc,End_Loc,Param_Name,'Prompt_String',Def_Value
    MULTIPRO
    ,'end'
    Где 'start'
    Буквенная строка, которая ставиться как первый аргумент, отмечает началоконст- рукции MULTIPRO. Аргумент должен быть заключен в одиночные кавычки.
    Prompt_Num
    Требуется только если аргумент
    Def_Value опущен по крайней мере в одной ко- манде *CSET, или если Def_Value присвоено значение 0. Значение Prompt_Num это целое число равное числу последующих запросов *CSET.
    Strt_Loc,End_Loc
    Начальное значение для аргумента Strt_Loc первой команды *CSET = 1, и зна- чение для End_Loc = Strt_Loc+2 (= 3 для первой команды *CSET). Значение каждого последующего аргумента Strt_Loc = предыдущий End_Loc+1.
    Param_Name
    Имя параметра, в который будет считано значение определенное пользователем или, если пользователь не будет вводить никакого значения, значение Def_Value.
    'Prompt_String'
    Строка, которая может содержать до 32 символов, которые могут использоваться для описания параметра. Эта строка должна быть заключена в одиночные кавычки.
    Def_Value
    Значение параметра используемое по умолчанию, если пользователем не определе- но другое значение. Значение по умолчанию может быть числовым выражением, включая числовые параметры APDL. Символьные выражения не допускаются.
    'end'
    Буквенная строка, которая используется как первый аргумент для заключительной команды MULTIPRO.
    Ниже следует типичный пример использования команды MULTIPRO. multipro,'start',3
    *cset,1,3,beamW,'Enter the overall beam width',12.5
    *cset,4,6,beamH,'Enter the beam height',23.345
    *cset,7,9,beamL,'Enter the beam length',50.0 multipro,'end'
    До двух дополнительных команд *CSET могут быть добавлены к конструкции, ко- торые могут обеспечить два строки по 64 символа. Вы можете использовать их, чтобы вы- вести инструкции пользователю. Для них используется специальный синтаксис команды
    *CSET.
    *CSET
    ,61,62,'Help_String','Help_String'
    *CSET
    ,63,64,'Help_String','Help_String' стр. 69 из 76

    ANSYS Release 10.0 Documentation / APDL Programmer's Guide
    Буквари для Инженеров http://cyberkolbasa.com1.ru
    Где 'Help_String'
    Строка, которая может содержать до 32 символов. Если Вы нуждаетесь в большем количестве символов чем 32, Вы можете использовать второй параметр
    Help_String.
    Ниже следует пример конструкции MULTIPRO с использованием дополнительных справочных строк. Обратите внимание, что используется два параметра
    Help_String, чтобы преодолеть предел на 32 символа. multipro,'start',3
    *cset,1,3,dx,'Enter DX Value',0.0
    *cset,4,6,dy,'Enter DY Value',0.0
    *cset,7,9,dz,'Enter DZ Value',0.0
    *cset,61,62,'The MYOFSET macro offsets the',' selected nodes along each'
    *cset,63,64,'of the three axes. Fill in the ',' fields accordingly.' multipro,'end'
    Вышеупомянутая конструкция создает следующее диалоговое окно многократного запроса.
    Рис. 5.2. Типичное диалоговое окно для нескольких запросов.
    Вы можете проверить состояние кнопок, проверяя значение параметра _BUTTON.
    Следующие списки значения состояния кнопки:

    _BUTTON = 0 указывает, что была нажата кнопка OK.

    _BUTTON = 1 указывает, что была нажата кнопка Cancel.
    В настоящее время, кнопка Помощи не функциональна. стр. 70 из 76

    ANSYS Release 10.0 Documentation / APDL Programmer's Guide
    Буквари для Инженеров http://cyberkolbasa.com1.ru
    5.3. Использование макросов для отображения ваших собствен-
    ных сообщений
    Используя команду *MSG в пределах макроса, Вы можете вывести произвольные сообщения через подпрограмму сообщений ANSYS. Команда имеет следующий формат:
    *MSG
    ,Lab,VAL1,VAL2,VAL3,VAL4,VAL5,VAL6,VAL7,VAL8
    Где
    Lab - одна из следующих меток для управления завершением и выводом:
    INFO
    Пишет сообщение без заголовка (по умолчанию).
    NOTE
    Пишет сообщение с заголовком "NOTE".
    WARN
    Пишет сообщение с заголовком "WARNING", а также записывает его в файл ошибок
    Jobname.ERR.
    ERROR
    Пишет сообщение с заголовком "ERROR", а также записывает его в файл ошибок
    Jobname.ERR. Если оно выполняется в пакетном режиме ANSYS, то эта метка заканчивает выполнение команд на предыдущей правильной выполненной команде.
    FATAL
    Пишет сообщение с заголовком "FATAL ERROR", а также записывает его в файл ошибок
    Jobname.ERR. Эта метка также немедленно заканчивает се- анс ANSYS.
    UI
    Пишет сообщение с возглавляющим "ПРИМЕЧАНИЕМ" и отображает это в диалоговом окне сообщения.
    Аргументы с VAL1 по VAL8 это числовые или алфавитно-цифровые символьные значе- ния, которые будут включены в сообщение. Значения могут быть результатами вычисле- ний параметров. Все числовые значения допускают двойную точность (64-битовое пред- ставление действительного числа).
    Вы должны определить формат сообщения немедленно после команды
    *MSG.
    Формат сообщения может содержать до 80 символов, состоя из текстовых строк и предо- пределенных "дескрипторов данных" между строками, где должны быть вставлены число- вые или алфавитно-цифровые символьные данные.
    Дескрипторы (описатели) данных:

    %i, для целочисленных данных.

    %g, для данных двойной точности

    %c, для алфавитно-цифровых символьных данных

    %/, для прерывания строки
    Соответствующие дескрипторы данных ФОРТРАНА для первых трех дескрипто- ров - I9, 1PG16.9, и A8 соответственно. Пробел должен предшествовать каждому деск-
    риптору. Вы также должны проставлять один дескриптор для каждого указанного значе- ния (максимум восемь) в порядке указанных значений.
    Не начинайте строку формата после команды
    *MSG с
    *IF,
    *ENDIF,
    *ELSE или
    *ELSEIF. Если последний символ не пустой и заканчивается амперсандом (&), то про- грамма ANSYS считывает вторую строку как продолжение строки формата. Вы можете использовать до 10 строк (включая первую), чтобы определить информацию о формате данных. стр. 71 из 76

    ANSYS Release 10.0 Documentation / APDL Programmer's Guide
    Буквари для Инженеров http://cyberkolbasa.com1.ru
    Последовательные пробелы сжимаются в один пробел после вывода. Произведен- ный вывод может быть до 10 строк по 72 символов каждый (использование дескриптора
    %/).
    Пример ниже показывает Вам как использовать
    *MSG, который печатает сообще- ние с двумя целочисленными значениями и одним действительным значением:
    *MSG, INFO, 4Inner4 ,25,1.2,148
    Radius ( %C) = %I, Thick = %G, Length = %I
    В результате получается следующее сообщение:
    Radius (Inner) = 25, Thick = 1.2, Length = 148
    Вот пример, иллюстрирующий многострочные тексты с данными в окнах сообще- ния GUI:
    *MSG,UI,Vcoilrms,THTAv,Icoilrms,THTAi,Papprnt,Pelec,PF,indctnc
    Coil RMS voltage, RMS current, apparent pwr, actual pwr, pwr factor: %/&
    Vcoil = %G V (electrical angle = %G DEG) %/&
    Icoil = %G A (electrical angle = %G DEG) %/&
    APPARENT POWER = %G W %/&
    ACTUAL POWER = %G W %/&
    Power factor: %G %/&
    Inductance = %G %/&
    VALUES ARE FOR ENTIRE COIL (NOT JUST THE MODELED SECTOR)
    /PMACRO'>Примечание
    Команда /UIS,MSGPOP контролирует какие сообщения отображаются в диалого- вом окне сообщения, когда GUI активен.
    5.4. Создание и поддержка строки состояния из макроса
    В пределах макроса Вы можете вставить команды, чтобы определить диалоговое окно ANSYS, содержащее строку состояния, отображающую прогресс операции, кнопку
    STOP, на которую Вы можете нажать, чтобы остановить операцию, или оба этих элемен- та.
    Чтобы определить диалоговое окно состояния используйте следующую команду:
    *ABSET
    ,Title40,Item

    Title40 – текстовая строка, которая появляется в диалоговом окне со строкой со- стояния. Строка может содержать максимум 40 символов.

    Item – принимает одно из следующих значений:
    BAR
    Отображает строку состояния без кнопки STOP
    KILL
    Отображает кнопку STOP без строки состояния
    BOTH
    Отображает строку состояния и кнопка STOP
    Чтобы обновлять строку состояния, используйте команду *ABCHECK,Percent,
    NewTitle.

    Percent - целое число между 0 и 100. Это определяет позицию строки состояния.

    NewTitle – строка в 40 смволов, которая содержит информацию о прогрессе. Ес- ли Вы определяете строку для
    NewTitle, то оно заменяет строку определенную в аргументе Title40 команды *ABSET. стр. 72 из 76

    ANSYS Release 10.0 Documentation / APDL Programmer's Guide
    Буквари для Инженеров http://cyberkolbasa.com1.ru
    Если Вы устанавливаете значение KILL или BOTH, то ваш макрос должен прове- рять параметр _RETURN после каждого выполнения *ABCHECK, чтобы видеть нажал ли пользователь кнопку STOP и предпринять соответствующее действие.
    Чтобы удалить строку состояния из ANSYS GUI, используйте команду *ABFINI.
    Следующий пример макроса иллюстрирует использование строки состояния (со- стоящей из полосы прогресса и кнопки STOP). Диалоговое окно состояния, которое полу- чается, показано в следующем рисунке. Обратите внимание, что макрос проверяет состоя- ние параметра _RETURN и, если кнопка STOP нажата, отправляет сообщение "We are stopped...... ". fini
    /clear,nost
    /prep7 n,1,1 n,1000,1000 fill
    *abset,'This is a Status Bar',BOTH myparam = 0
    *do,i,1,20 j = 5*i
    *abcheck,j
    *if,_return,gt,0,then myparam = 1
    *endif
    *if,myparam,gt,0,exit
    /ang,,j nplot,1
    *if,_return,gt,0,then myparam = 1
    *endif
    *if,myparam,gt,0,exit nlist,all
    *if,_return,gt,0,then myparam = 1
    *endif
    *if,myparam,gt,0,exit
    *enddo
    *if,myparam,gt,0,then
    *msg,ui
    We are stopped.........
    *endif
    *abfinish
    Fini
    Примечание
    Не вызывайте *ABCHECK в цикле более чем ≈20 раз.
    Рис. 5.3. Типичное окно со строкой состояния. стр. 73 из 76

    ANSYS Release 10.0 Documentation / APDL Programmer's Guide
    Буквари для Инженеров http://cyberkolbasa.com1.ru
    5.5. Интерактивный выбор в пределах макроса
    Если Вы используете программу ANSYS в интерактивном режиме, то Вы можете вызвать меню выбора GUI внутри макроса. Чтобы сделать это просто включите команду выбора в макрос. Многие команды ANSYS (типа K,,P) принимают ввод значения "P" для того, чтобы использовать интерактивный выбор. Когда ANSYS сталкивается с такой ко- мандой он отображает соответствующий диалог выбора и затем, когда пользователь на- жимает OK или Cancel, продолжает выполнение макроса.
    Имейте в виду, что команды выбора не доступны во всех процессорах ANSYS, и
    Вы должны сначала переключиться на соответствующий процессор перед запросом ко- манды.
    Примечание
    Если макрос включает функции GUI, то команда /PMACRO должна быть первой командой в этом макросе. Эта команда заставляет команды макроса записываться в жур- нал сеанса (log-файл). Это важно, потому что, если Вы опустите команду /PMACRO,
    ANSYS не сможет читать журнал сеанса, чтобы воспроизвести сеанс ANSYS.
    5.6. Вызов диалоговых окон из макроса
    Когда программа ANSYS сталкивается с именем функции UIDL диалогового окна
    (типа Fnc_UIMP_Iso), то она отображает соответствующее диалоговое окно. Таким обра- зом Вы можете запустить любое диалоговое окно ANSYS, создавая функцию его имени в отдельную строку макроса. Когда Вы закрываете это диалоговое окно, программа про- должает обрабатывать макрос начиная со следующей строки после функционального за- проса.
    Имейте в виду, что множество диалоговых окон имеют множество зависимостей, включая то, что активен ли соответствующий процессор ANSYS активен и выполнены ли ранее определенные необходимые условия. Например, запуск диалогового окна для выбо- ра узлов сначала предполагает, что узлы существуют, если узлы не будут существовать, то макрос будет потерпит неудачу, когда пользователь нажимает OK или Apply.
    1   2   3   4   5   6   7   8   9   10


    написать администратору сайта