ANSYS-MFC生成APDL

1. 简介

对于ANSYS-MFC二次开发,两者之间的关系非常明确,从界面中读取参数并转换成APDL语言,然后调用批处理操作。

对于简单的程序设计,我们可以直接从界面中获取到参数,然后生成APDL;
而对于复杂的界面,可以将其参数保存到数据文件中,最简单的可以使用Access数据库或者xml格式的数据文件。对于Access数据库,需要在程序使用的时候对其进行定义,不利于后续程序的拓展;而xml格式的数据文件也可以向数据库文件一样使用,并且其操作速度更快,且利于功能的拓展和管理。关于xml的使用,请见链接

2. APDL生成

对于经常使用APDL的人来说,可以直接进行APDL程序的编程,而对于初学者来说,此种方法门槛太高,不利于快速入门,因为我们采用比较笨但是非常使用的方法。
首先需要用户对APDL有一点简单的理解;在进行操作ANSYS过程中,所有的操作都会被记录下来,可以点击【Main Menu】--【Session Editor】,在弹出的界面中我们可以看到操作后生成的APDL,从而在其中查找出所需要的语句。
在操作过程中,可以使用定义变量或者数据的方法来进行操作,这样生成的APDL需要修改变量即可;而如果直接到相应的位置去修改APDL,则需要花费大量的时间来查找其语句的具体位置。
例如,坐标的位置定义为变量P1,P2,P3,生成的APDL语句具体如下:

FINISH
/CLEAR
/PREP7

!定义力为变量
*SET,P1,0
*SET,P2,1
*SET,P3,2

!建立点
K,1,0,P1,0,
K,2,0,P2,0,
K,3,0,P3,0,

!连接成直线
LSTR,       1,       2
LSTR,       2,       3

设计界面

生成APDL程序

void APDLCreate::OnBnClickedButton2()
{
    UpdateData(TRUE);//更新控件的值
    CString WorkPath = _T("file.dat");//定义工作路径

    CStdioFile Writefile;
    if (!Writefile.Open(WorkPath,CFile::modeWrite|CFile::modeCreate))
    {
        return;
    }   

    //清楚上个工程的数据
    Writefile.WriteString(_T("FINISH \n"));
    Writefile.WriteString(_T("/CLEAR \n"));
    Writefile.WriteString(_T("/PREP7 \n\n"));

    //定义变量
    Writefile.WriteString(_T("*SET,P1,") + P1 +_T("\n"));
    Writefile.WriteString(_T("*SET,P2,") + P2 +_T("\n"));
    Writefile.WriteString(_T("*SET,P3,") + P3 +_T("\n\n"));

    //生成点
    Writefile.WriteString(_T("K,1,0,P1,0,\n"));
    Writefile.WriteString(_T("K,2,0,P2,0,\n"));
    Writefile.WriteString(_T("K,3,0,P3,0,\n\n"));

    //将点连接成线
    Writefile.WriteString(_T("LSTR,1,2 \n"));
    Writefile.WriteString(_T("LSTR,2,3\n"));

    Writefile.Close();

    AfxMessageBox(_T("APDL生成成功"));
}

生成的直线如下图所示

3. 调用ANSYS批处理

建议将APDL生成和调用APDL分开处理,这样可以在计算前检查APDL然后再进行计算。
批处理的生成请参考链接

猜你喜欢

转载自www.cnblogs.com/gaozihan/p/10851261.html
MFC