如何查看 ansys 命令流

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何查看 ansys 命令流相关的知识,希望对你有一定的参考价值。

查看ansys命令流有两种方法:
一、File->list->log 可以把所有操作所对应的流明令记录下来,最近的操作是最后的一段。
二、 Session Edit 在操作界面最下方,就是在GUI操作的最下方,记录的是打开ansys到最后一条操作的流明令。

ANSYS软件是美国ANSYS公司研制的大型通用有限元分析(FEA)软件,是世界范围内增长最快的计算机辅助工程(CAE)软件,能与多数计算机辅助设计(CAD,computer Aided design)软件接口,实现数据的共享和交换,如Creo, NASTRAN, Alogor, I-DEAS, AutoCAD等。
参考技术A 主菜单里面的list 里面有个log 点进去就出来了 参考技术B 看log文件就可以了,在工作目录下面有的 参考技术C 主菜单list—files—log files... 点这个就可以查看 需要的话再复制出来

Ultra Edit中编辑并一键运行Ansys命令流

文章目录

Ultra Edit是一款功能强大的文本编辑器。在使用UE编辑Ansys的Apdl命令流时,通过一定的配置即可让你的使用体验提升数倍。

一、一键运行Ansys命令流

(一)问题描述

通过Ultra Edit可以更方便地对Ansys命令流.mac文件进行编辑。但在编辑完成后,需将.mac拷贝至Ansys工作路径,或在最初就讲需保.mac文件存放在Ansys工作路径。之后需在Ansys对话框输入该文件名,对mac文件进行调用。

整个过程操作繁琐,因此通过结合python与UE运行DOS的方法,实现了在编辑好mac文件之后,一键调用mac文件的方法。并且被运行的.mac文件可在电脑中任意位置

(二)实现效果

在此演示中,笔者将运行的快捷键设为了F5,按下F5即可保存并运行当前正在编辑的.mac文件

实现原理:通过UE运行Dos命令。在Dos命令中运行.py脚本,读取正在编辑的.mac文件,并将其输入到已打开的Ansys程序中。

(三)配置方法

1.首先需确保电脑上需安装有python并将其添加至环境变量。

将Python添加至环境变量后,即可在电脑的任意位置通过cmd来执行py脚本。

具体配置可参考(相关教程)

2.创建.py文件

在C盘ProgramData目录下新建RunMac文件夹并将RunMac1.0.py保存至该目录下。
RunMac1.0.py代码位于本文附录部分。

3.在Ultra Edit中进行配置

在菜单栏-高级-用户工具-配置工具。

在工具配置界面:

输入菜单项名称,该项名称可以自定义。

命令行输入以下文字,

python C:\\ProgramData\\RunMac\\RunMac1.0.py %f

工作目录可任意选择,建议直接选择桌面。

选项窗口,勾选Dos程序,保存活动文件,先保存所有文件。

输出截面,控制命令行所运行的内容的输出方式。

选择捕获输出则会对输出内容进行记录。也可不勾选。该部分设置不会影响运行效果,仅用于设置dos输出效果。

4.功能测试

完成以上设置后,在打开Ansys程序的情况下,即可通过点击 用户工具中的运行mac,或通过快捷键Ctrl+Shift+1,运行当前正在编辑的mac文件。

5.配置快捷键​

此外,可自定义用户工具1的快捷键,如下图,为用户工具1分配快捷键 F5。即可通过按键F5,运行当前mac文件。

二、代码高亮

APDL使用到Ansys中的一种参数化的计算语言。通过代码的高亮可以让命令流具有更高的可读性。

在Ultra Edit中,你可以在编码栏,语言类型查看方式中设置代码高亮的格式,并选择"APDL (ANSYS Parametric Design Language)"。

如果你的Ultra Edit中没有APDL高亮格式,可以通过下部加号“添加其他语言”,找到APDL并确定。

三、注释 反注释

通过编码菜单下的“外部注释”与“删除注释”按钮,可以快速的对多行文本进行注释与反注释。对于不同格式的文本,根据其语法进行不同的注释。

但每次点击菜单栏的操作比较繁琐,因此可以定义快捷键:

推荐设置为:
添加注释: Ctrl+1
删除注释: Ctrl+2

修改快捷键的方法,打开设置-键映射-按下新(多个)热键-分配。设置快捷键。可定义任意快捷键。

附录

RunMac1.0.py代码如下,将其拷贝,并保存为RunMac1.0.py即可。
该代码主要功能为,根据窗口名称找到正在运行的ANSYS窗口句柄,并将命令流输入。实现对Mac文件的调用。

特别注意!!!!
考虑到ansys版本不同,大家需要将代码中第26行的 indent1 变量 修改成ansys命令流软件的窗口名称。

# -*- coding: utf-8 -*-

import win32gui
import win32con
import time
import os
import pickle
import sys

# 获取输入参数
paras = sys.argv

# 文件目录
path = 'C:\\\\ProgramData\\\\RunMac'

# 复制文件到默认位置
file1 = paras[1]
directory, name2 = os.path.split(file1)

name2 = 'temp.mac'
file2 = os.path.join(path,name2)
os.system('copy '+file1+' '+file2)

# 寻找窗口
filename = os.path.join(path,'hwnd.data')
indent1 = 'ANSYS Multi'
# 注意!!!!!需将indent1变量改成ansys命令流软件的 窗口名称,可写前两个单词
indent2 = 'Output Window'

try:
    with open(filename,'rb') as f:
        hwnd = pickle.load(f)
        hwnd1 = hwnd[0]
        hwnd2 = hwnd[1]
    title = win32gui.GetWindowText(hwnd1)
    if indent1  not in title:
        raise ValueError('提示:未找到已开启的Ansys程序 或 需添加新的窗口名')

except:
    hwnd_title = dict()
    def get_all_hwnd(hwnd,mouse):
        if win32gui.IsWindow(hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible(hwnd):
            hwnd_title.update(hwnd:win32gui.GetWindowText(hwnd))
    
    win32gui.EnumWindows(get_all_hwnd, 0)
    for h,t in hwnd_title.items():
        if indent1 in t:
            hwnd1 = h
            break
    for h,t in hwnd_title.items():
        if indent2 in t:
            hwnd2 = h
            break
    
    hwnd = [hwnd1,hwnd2]
    with open(filename,'wb') as f:
        pickle.dump(hwnd,f)

title = win32gui.GetWindowText(hwnd1)
if indent1  not in title:
    print('---------------------------------------------------------')
    print('提示:未找到已开启的Ansys程序 或 需添加新的窗口名')
    print('---------------------------------------------------------')

# 运行文件
location = file2
try:
    win32gui.ShowWindow(hwnd1, win32con.SW_MAXIMIZE)
    win32gui.ShowWindow(hwnd1,win32con.SW_SHOW)
    time.sleep(0.1)
    win32gui.ShowWindow(hwnd2, win32con.SW_MINIMIZE)
    temp = win32gui.SetForegroundWindow(hwnd1)
except:
    pass
finally:
    time.sleep(0.1)
    WM_CHAR = 0x0102
    for char in location:
        win32gui.SendMessage(hwnd1, WM_CHAR, ord(char), None)
    time.sleep(0.1)    
    win32gui.SendMessage(hwnd1, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
    win32gui.SendMessage(hwnd1, win32con.WM_KEYUP, win32con.VK_RETURN, 0)

结尾

目前可方法可基本实现实际的功能。若在配置过程中遇到问题或发现代码bug,可进一步交流探讨。

以上是关于如何查看 ansys 命令流的主要内容,如果未能解决你的问题,请参考以下文章

ansys vwrite命令 为啥每次写入都会将原来的数据删除,如何继续写入,不删除原数据??

ansys中如何查看某1个点的坐标?

急求ansys命令流解释,非常感谢!

ansys命令流vsel,r,174 eslv nsle nsel,r,loc,x,0,-10 cm,lsjm,node

ansys中如何生成模型APDL语言

请问,在ansys中用GUI模式作了完整分析后,如何直接生成相应的apdl语言流文件啊?