利用前文所述的方式录制Java代码。下文描述在IDEA中构建GUI窗体并集成流程代码的基本过程。
IDEA的友好度比NetBean强多了。
MarcoDemo
,其他参数如下图所示点击Create
按钮创建新的Project最近版本的IDEA中内置了GUI创建功能,可以利用此功能创建GUI界面。
注:内置GUI设计器制作常规的工作界面较为方便,但用于STAR CCM+开发不是很方便。建议使用JFormDesign插件进行GUI开发。
”
src
,点击菜单项New → Swing UI Desinger → GUI Form
MacorWindow
,点击按钮OK
完成创建创建几何
,选择弹出菜单Create Listener
ActionListener
File → Project Structure...
打开设置对话框Global Libraries
,右键选择STAR CCM2302
,点击菜单项Add to Modules...
Modules
设置,如下图所示,勾选STAR CCM2302
前面的复选框添加库1、自动生成UI代码
Generate...
Form main()
,自动生成main函数Run 'MacroWindow.main()'
此时软件会自动生成与界面相关的代码,其名称为$$$setupUI$$$
。这里可以修改其名称,不过每次运行时都会自动生成相同的名称。
删除main函数
。main函数在案例中是多余的,生成main函数的目的仅为产生setupUI函数。2、添加成员变量及构造函数
import star.common.Simulation;
private Simulation sim = null;
public MacroWindows(Simulation Simlocal){
$$$setupUI$$$();
this.sim = Simlocal;
...
}
这里在构造函数中添加了一个成员变量。添加完毕后如下图所示。
3、封装函数
下面回到MacroWindows类中添加功能。录制的宏文件很长而且没有参数化,这里需要将其封装成一个函数,包含两个参数:管道的长度及管道的半径。
在MacroWindows类中创建函数createPipe,将录制的java文件内容粘贴进去,注意修改代码中管道半径及长度的位置
将代码中的所有simulation_0
替换为this.sim
注释掉或直接删除Simulation this.sim = getActiveSimulation();
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);
...
}
JButton_CreateGeometry.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
double radius = 0.01;
double length = 1.0;
try{
radius = Double.valueOf(JTextField_PipeRadius.getText());
}catch (NumberFormatException ex){
radius = 0.01;
}
try {
length = Double.valueOf(JTextField_PipeLength.getText());
} catch (NumberFormatException ex) {
length = 0.1;
}
createPipe(radius, length);
}
});
下面创建一个启动类(启动类可以直接使用录制的java代码,也可以新建一个类)。
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();
JFrame frame = new JFrame("MacroWindow");
frame.setContentPane(new MacroWindow(sim).JMacroWindow);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
启动STAR CCM+,新建一个工程文件
选择菜单Tool> Options,选择Environment,设置User Macro ClassPath为前面创建工程的路径,如下图所示,点击Close按钮关闭对话框
这种开发方式比较简单,但最大的缺点是所有的源文件都是公开的。
IDEA的GUI代码并不是实时更新的,其必须在有main函数存在的情况下,运行时才会自动更新生成的GUI代码,也就是说,当界面被改变时,需要利用main函数运行一次程序才能更新GUI代码,好奇怪的操作逻辑。另外IDEA开发的界面中若存在中文字符,在STAR CCM+中运行时可能会出现乱码。
也可以在IDEA中安装插件JFormDesigner来开发GUI界面,不过这插件是收费的,网络上倒是提供了不少的解决方式,可自行搜索。下一篇文章再讲怎么使用JFormDesinger进行开发。
(完)