C# 调用Ansys APDL编写的命令(带参和不带参宏文件调用)

C# 调用Ansys APDL编写的命令(包括带参和不带参宏文件调用)

前言

APDL的全称是ANSYS Parametric Design Language,也被叫做ANSYS参数化设计语言。APDL不仅是优化设计和自适应网格划分等ANSYS经典特性的实现基础,也为日常分析提供了便利。APDL就是对ANSYS进行二次开发的语言,但是,APDL命令仅仅适用于ANSYS软件本身,不具有外延性。那么如何将APDL命令和常用的开发语言(例如C#)相结合,进而将APDL命令与其他工程相耦合,开发出定制的软件呢?本文介绍如何利用C#调用APDL命令文件。

一、C#执行APDL命令文件

1、APDL命令文件(将数组中的数据写出到data1.txt文件中)如下
在这里插入图片描述

finish
/clear
/prep7

*create,dataWrite,mac !创建宏文件
*cfopen,data1,txt !创建写出文件

!自定义数组并填充值
*dim,writeData,,20,5
*do,i,1,20
	*do,j,1,5
		writeData(i,j)=5*(i-j)+j
	*enddo
*enddo

*vwrite,writeData(1,1),writeData(1,2),writeData(1,3),writeData(1,4),writeData(1,5)
(5f8.2) !定义数据格式(每行写5个数据,每个数据共有8位(包括小数点),其中小数点后有2位)
*cfclose
*end
datawrite !运行宏文件

2、C#执行上面的APDL命令文件

if (APDLtoCSharp.RunAPDLFile(@"F:\FluentLearn\APDL\CODE\数据写出.txt ",
                                      @"F:\FluentLearn\APDL\CODE\test\test.out ",
                                      @"F:\FluentLearn\APDL\WorkDir"))
            {
                MessageBox.Show("命令执行完成!","提示");
            }

3、执行得到data1.txt数据如下
在这里插入图片描述

4、RunAPDLFile方法代码

    /// <summary>
    /// APDL转到C#执行类
    /// </summary>
    public class APDLtoCSharp
    {
        /// <summary>
        /// 执行APDL命令文件
        /// </summary>
        /// <param name="apdlFilePath">待执行的APDL命令文件路径(绝对路径)</param>
        /// <param name="outFilePathName">APDL执行过程的输出文件路径名(路径+文件名.txt)</param>
        /// <param name="workingDirectory">工作目录路径(存放宏文件等)</param>
        /// <param name="ansysPath">ansys可执行文件路径(默认为C:\Program Files\ANSYS Inc\v191\ansys\bin\winx64\ANSYS.exe)</param>
        /// <param name="jobName">工作名(默认为file)</param>
        /// <returns></returns>
        public static bool RunAPDLFile(string apdlFilePath, string outFilePathName, string workingDirectory, string ansysPath = @"C:\Program Files\ANSYS Inc\v191\ansys\bin\winx64\ANSYS191.exe", string jobName = "file")
        {
            bool result = false;

            try
            {
                ProcessStartInfo startinfo = new ProcessStartInfo();
                string commond = String.Empty;
                commond += "-b -p "; 
                commond += "-j " + jobName;
                commond += " -np -db -m";
                commond += " -i " + apdlFilePath;
                commond += " -o " + outFilePathName;
                startinfo.Arguments = commond;
                startinfo.WindowStyle = ProcessWindowStyle.Normal;
                startinfo.FileName = ansysPath;
                startinfo.WorkingDirectory = workingDirectory;
                Process ProAnsys = Process.Start(startinfo);
                ProAnsys.WaitForExit();
                ProAnsys.Close();
                result = true;
            }
            catch(Exception ex)
            {
                MessageBox.Show("RunAPDLFile函数执行失败!\n "+ex.Message.ToString(),"提示");
            }
            return result;
            
        }
    }

二、C#执行APDL带参宏文件

1、如带参宏文件"dataWrite.mac"命令如下

*cfopen,data1,txt !创建写出文件
        
!自定义数组并填充值
*dim,writeData,,20,5
*do,i,1,20
	*do,j,1,5
		writeData(i,j)=arg1*(i-j)+j
	*enddo
*enddo
        
*vwrite,writeData(1,1),writeData(1,2),writeData(1,3),writeData(1,4),writeData(1,5)
(5f8.2) !定义数据格式(每行写5个数据,每个数据共有8位(包括小数点),其中小数点后有2位)
*cfclose

2、正常在ANSYS中调用上面宏文件的命令如下

dataWrite,5 !传入参数为5,调用dataWrite宏文件

3、因此,我们可以利用C#首先创建一个文件,文件中的内容为调用带参宏文件的命令,然后,再利用RunAPDLFile方法调用刚刚C#创建的文件,示例代码如下

           int arg1=5;
            using (StreamWriter sw = new StreamWriter(@"F:\FluentLearn\APDL\CODE\macroFile.txt"))
            {
                sw.WriteLineAsync("dataWrite,"+arg1.ToString());  //创建内容为执行APDL带参宏文件命令的文件
            }
            if (APDLtoCSharp.RunAPDLFile(@"F:\FluentLearn\APDL\CODE\macroFile.txt",
                                      @"F:\FluentLearn\APDL\CODE\test\test.out ",
                                      @"F:\FluentLearn\APDL\WorkDir"))  //执行上一步创建的APDL文件
            {
                MessageBox.Show("命令执行完成!","提示");
            }

注意,上述方法执行带参宏文件,必须保证宏文件存放在指定的工作目录文件夹下

猜你喜欢

转载自blog.csdn.net/qq_34720818/article/details/107942719