添加循环
将一个循环添加到为已创建线探测重命名的宏中。
要添加到宏中的附加代码会以简单的语言进行描述,如下所示:
- 设置最小 X 坐标,XMIN。
- 设置最大 X 坐标,XMAX。
- 设置线探测之间所需的 X 距离,XDIST。
- 初始化当前 X 位置,XLOC = XMIN + XDIST。
- WHILE (XLOC 小于 XMAX)
- 在 XLOC 处创建线探测。
- 将新线探测的标题重命名为 XLOC。
- XLOC = XLOC + XDIST
- END WHILE
为避免在宏中直接设置 XMIN 和 XMAX,请使用 Representation
类的 getRegionExtents
方法,以设置合适的值。Java API 文档中 Representation
类的这种方法显示,需要为其要获取范围的 Region
对象。
在编辑器窗口内,将先前考虑的代码段替换为现在遵循的已修改过的代码。原始代码会以纯文本形式显示,新的或修改过的代码以粗体显示。由于 Java 是区分大小写的编程语言,所以请按所示正确输入新代码。
// execute0 功能的开始处
Simulation simulation_0 =
getActiveSimulation();
Units units_0 =
simulation_0
.getUnitsManager()
.getPreferredUnits(
new IntVector(
new int[]
{0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
)
);
Scene scene_0 =
simulation_0
.getSceneManager()
.getScene("Scalar Scene 1");
PartDisplayer partDisplayer_1 =
((PartDisplayer) scene_0
.getCreatorDisplayer());
FvRepresentation fvRepresentation_0 =
((FvRepresentation) simulation_0
.getRepresentationManager()
.getObject("Volume Mesh"));
partDisplayer_1
.setRepresentation(fvRepresentation_0);
Region region_0 =
simulation_0
.getRegionManager()
.getRegion("Fluid");
// 新代码在此处开始
// 定义主变量
double dXDIST = 0.1; // 探针之间的距离
// 使用 FvRepresentation 查找 region_0 的范围
// (之前从 simulation_0 检索)。
// FvRepresentation 衍生自 Representation。
// 类并提供体积区域
// 特定 getRegionExtents 方法
// 的自有版本。
// getRegionExtents 返回六双阵列:
// [xmin,xmax,ymin,ymax,zmin,zmax]
double[] dExtents =
fvRepresentation_0
.getRegionExtents(region_0);
// 从 dExtents 检索 xmin 和 xmax
double dXMIN = dExtents[0];
double dXMAX = dExtents[1];
//设置初始 X 位置
double dXLOC = dXMIN + dXDIST;
// 开始循环
while(dXLOC < dXMAX) {
// 本部分来自录制的宏
// 再缩进两个空格并使用
// 变量 dXLOC 将所有参考更改为 0.04
LinePart linePart_0 =
simulation_0
.getPartManager()
.createLinePart(
new NeoObjectVector(
new Object[] {region_0}
),
new DoubleVector(
new double[] {dXLOC, 0.0, 0.0}
),
new DoubleVector(
new double[] {dXLOC, 0.0762, 0.0}
),
20
);
LabCoordinateSystem labCoordinateSystem_0 =
simulation_0
.getCoordinateSystemManager()
.getLabCoordinateSystem();
linePart_0
.setCoordinateSystem(labCoordinateSystem_0);
Coordinate coordinate_0 =
linePart_0.getPoint1Coordinate();
coordinate_0
.setCoordinate(
units_0,
units_0,
units_0,
new DoubleVector(
new double[] {dXLOC, 0.0, 0.0}
)
);
// 以下两部分设置每个轴上的单位,
// 以及 linePart_0 第二点的位置。
Coordinate coordinate_1 =
linePart_0
.getPoint2Coordinate();
coordinate_1
.setCoordinate(
units_0,
units_0,
units_0,
new DoubleVector(
new double[] {dXLOC, 0.0762, 0.0}
)
);
// 从此处移除冗余部分
// 更改 linePart 的名称。
// 使用当前 X 位置
// 创建新名称。 String.format 方法确保
// 数字的一致。参阅
// Java 文档了解详细信息。
String strPartName =
String.format("X = %6.4f",dXLOC);
linePart_0.setPresentationName(strPartName);
// 更新 dXLOC 并使用右括号结束循环。
dXLOC = dXLOC + dXDIST;
} // 结束循环
这完成了创建线探测的主要部分。