吾生有涯 学海无涯
析模有界 知识无界

STAR CCM+二次开发|03 利用NetBean进行仿真流程开发

内容纲要

利用NetBeans创建GUI界面,并集成前面录制的操作流程代码。

1 创建工程

  • 启动Netbean
  • 选择菜单File > New Project…,启动项目创建对话框,在 其中选择项目类别为Java with Ant,选择项目为Java Application,点击Next> 按钮
  • 设置项目名称为MacroDemo取消选项Create Main Class前的复选框,点击Finish按钮创建工程

2 创建GUI界面

  • 右键选择树形节点default package,选择菜单New > Java Package...

注:之所以创建不同的包,主要是为了方便文件管理,也可以不创建包。

  • 在创建包的对话框中,指定package NameGUI,点击按钮Finish完成包的创建
  • 相同方式创建另一个包Macros

  • 右键选择节点GUI,选择菜单New > JFrame Form...

  • 如下图所示,设置类名为MacroWindows,点击Finish按钮创建窗体
  • 切换到Design视图,如下图所示
image-20230520171146851
  • 利用控件构建如图所示的GUI界面
  • 修改管道长度后的文本框变量名称。右键选择该控件,选择Change Variable Name...选项,设置名称为JTextField_PipeLength。相同的方法设置管道半径文本框名称为JTextField_PipeRadius,设置创建几何按钮的变量名称为JButton_CreateGeometry

注:变量名称很重要,后面要用到。

3 添加库

  • 鼠标右键选择模型树节点Libraries ,点击弹出菜单项Add Library...
  • 如下图所示,添加配置好的STAR CCM+的java库STARCCM2302

4 编写代码

1、添加成员变量及构造函数

  • 双击创建几何按钮进入代码编辑,如下图所示,添加引用及代码:
import star.common.Simulation;

private Simulation sim = null;
public MacroWindows(Simulation Simlocal){
initComponents();
this.sim = Simlocal;
}

这里创建了一个新的构造函数,其接受一个Simulation对象作为参数。添加完毕后如下图所示。

2、封装函数

下面回到MacroWindows类中添加功能。录制的宏文件很长而且没有参数化,这里需要将其封装成一个函数,包含两个参数:管道的长度及管道的半径。

  • 在MacroWindows类中创建函数createPipe,将录制的java文件内容粘贴进去,注意修改代码中管道半径及长度的位置
privite void createPipe(double radius, double length){
...
//创建半径为radius的圆
RadiusDimension radiusDimension_0 =
sketch_0.createRadiusDimension(circleSketchPrimitive_0, radius, units_0);
...
//设置拉伸长度为length
extrusionMerge_0.getDistance().setValue(length,units_0);
...
}
  • 将代码中的所有simulation_0替换为this.sim

  • 注释掉或直接删除Simulation this.sim = getActiveSimulation();

  • 代码粘贴后可能会存在一些引用问题,如下图所示,利用netbeans消除这些引用错误

也可以在文件头部添加下面的语句:

import star.base.neo.*;
import star.cadmodeler.*;
import star.common.*;
  • 修改MainWindows类中的JButton_CreateGeometryActionPerformed函数
private void JButton_CreateGeometryActionPerformed(java.awt.event.ActionEvent evt) {                                                    

double radius;
double length;

try {
radius = Double.valueOf(JTextField_PipeRadius.getText());
} catch (NumberFormatException e) {
radius = 0.01;
}

try {
length = Double.valueOf(JTextField_PipeLength.getText());
} catch (NumberFormatException e) {
length = 0.1;
}
createPipe(radius, length);

//自动关闭窗口
this.dispose();
}

下面创建一个启动类(启动类可以直接使用录制的java代码,也可以新建一个类)。

  • 创建Macro类RunMacro。右键选择树形节点Macro,选择菜单New > Java Class...
  • 如下图所示,创建新的类命名为RunMacro
  • RunMacro类的内容如下:
package Macro;
import GUI.MacroWindows;
import javax.swing.JFrame;
import star.common.Simulation;
import star.common.StarMacro;

public class RunMacro extends StarMacro{
@Override
public void execute() {
Simulation sim = this.getActiveSimulation();
MacroWindows mw = new MacroWindows(sim);
mw.setVisible(true);
mw.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
}

5 流程测试

  • 启动STAR CCM+,新建一个工程文件
  • 选择菜单Tool> Options,选择Environment,设置User Macro ClassPath为前面创建工程的路径,如下图所示,点击Close按钮关闭对话框
  • 选择启动宏按钮,选择宏文件RunMacro.java,运行结果如图所示。
  • 点击按钮创建几何,程序自动生成几何模型

这种开发方式比较简单,但最大的缺点是所有的源文件都是公开的。

看不明白的道友可以看视频:

6 开发总结

本案例用到了两个文件:MacroWindows.java及runMarco.java,其中MacroWindows.java负责GUI界面及功能实现,而runMarco.java仅负责调用GUI。

其实如果界面元素较为简单的话,也可以将GUI代码及功能实现代码全部卸载runMarco.java中。

同理,如果流程较为复杂,也可以创建新的类,由GUI代码负责调用。

需要注意的是,STAR CCM+调用的java文件中,必须有继承自StarMarco的类,且必须实现execute()方法。


(完)

本篇文章来源于微信公众号: CFD之道

赞(0) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《STAR CCM+二次开发|03 利用NetBean进行仿真流程开发》
文章链接:https://www.topcfd.cn/35095/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册