CFD应用中的二次开发最费时的事情无异于几何参数化建模。在实际应用过程中,有时为了节省时间,常选择成熟的CAD软件作为几何建模工具。此时CAD软件是否支持脚本调用就显得比较重要了。当然有时候为了使开发出来的软件显得更优雅,如果调用的程序能够在后台执行那就更完美了,毕竟谁都不希望在软件使用的过程中弹出个第三方软件的操作界面。SpaceClaim(或Disconvery)能够很好的支持脚本执行,并且也可以通过命令开关实现后台运行。
比如下面所示的在SpaceClaim中通过录制得到的脚本代码:
# Python Script, API Version = V251
# 草绘圆
origin = Point2D.Create(MM(0), MM(0))
result = SketchCircle.Create(origin, MM(15))
# EndBlock
# 实体化草绘
mode = InteractionMode.Solid
result = ViewHelper.SetViewMode(mode, None)
# EndBlock
# 拉伸 1 个面
selection = FaceSelection.Create(GetRootPart().Bodies[0].Faces[0])
options = ExtrudeFaceOptions()
options.ExtrudeType = ExtrudeType.Add
result = ExtrudeFaces.Execute(selection, MM(20), options)
# EndBlock
# 保存文件
DocumentSave.Execute(r"D:cylinder.scdocx", FileSettings1)
# EndBlock
录制完毕后将其保存为文件d:cylinder.scscript
。
假设本机上SpaceClaim的安装路径为:C:Program FilesANSYS Incv251scdmSpaceClaim.exe
。
-
如果想要在命令行中利用SpaceClaim运行脚本,可以使用下面的命令:
"C:Program FilesANSYS Incv251scdmSpaceClaim.exe" /RunScript="d:cylinder.scscript"
-
如果想要在脚本运行完毕后自动关闭SpaceClaim,可以使用下面的命令
"C:Program FilesANSYS Incv251scdmSpaceClaim.exe" /RunScript="d:cylinder.scscript" /ExitAfterScript=True
-
如果想要在后台启动SpaceClaim并运行脚本,且在脚本运行完毕后自动退出,可以使用下面的命令:
"C:Program FilesANSYS Incv251scdmSpaceClaim.exe" /RunScript="d:cylinder.scscript" /Headless=True /ExitAfterScript=True
-
如果想要在程序中调用SpaceClaim并运行脚本,可以编写下面的代码(以C#为例)
using System;
using System.Diagnostics;
publicclassSpaceClaimLauncher
{
public static void LaunchSpaceClaim(string scriptPath, bool headless = true, bool exitAfterScript = true)
{
// SpaceClaim.exe的路径
string spaceClaimPath = @"C:Program FilesANSYS Incv251scdmSpaceClaim.exe";
// 构建命令行参数
string arguments = $"/RunScript="{scriptPath}"";
if (headless)
arguments += " /Headless=True";
if (exitAfterScript)
arguments += " /ExitAfterScript=True";
try
{
// 创建进程启动信息
ProcessStartInfo startInfo = new ProcessStartInfo
{
FileName = spaceClaimPath,
Arguments = arguments,
UseShellExecute = false,
CreateNoWindow = true
};
// 启动进程
using (Process process = Process.Start(startInfo))
{
Console.WriteLine($"SpaceClaim已启动,进程ID: {process.Id}");
// 如果需要等待进程完成,可以取消下面这行的注释
// process.WaitForExit();
}
}
catch (Exception ex)
{
Console.WriteLine($"启动SpaceClaim时出错: {ex.Message}");
}
}
// 示例用法
public static void Main()
{
// 调用函数启动SpaceClaim并运行指定脚本
LaunchSpaceClaim(@"d:cylinder.scscript");
}
}
注:以上C#代码为Claude 3.7生成,可以运行,但未做更严格的测试。
”
(完)

本篇文章来源于微信公众号: CFD之道
评论前必须登录!
注册