매크로에서 Collection을 사용하는 경우 해당 Collection의 특정 클래스의 Object만 필요한 경우가 많다. 여기서는 Collection을 필터링하는 방법에 대해 설명한다.
Collection은 Object를 그룹화하는 데 사용되는 Java 클래스이다. STAR-CCM+에서 Collection은 boundary, region 또는 derived parts와 같은 object를 그룹화하는 데 사용됩니다.
다음 구문을 사용할 때…
Collection myContinuaColl = sim.getContinuumManager().getObjects();
Continuum manager에 있는 MeshContinuum과 PhysicsContinuum 모든 object들을 호출한다.
Mesh 형식의 continua만 필요한 경우, 즉 MeshContinuum 클래스의 객체만 필요한 경우 다음 구문을 사용할 수 있다.
Collection myMeshConColl = sim.getContinuumManager().getObjectsOf(MeshContinuum.class);
위의 코드를 사용하면 Collection에 MeshContinuum만 포함된다.
다른 예를 몇 개 설명해보면
1. Physics Continua만 가져오는 내용
Collection myPhysConColl = sim.getContinuumManager().getObjectsOf(PhysicsContinuum.class);
2. Derived Part만 가져오는 내용
2-1. Probe point
Collection myProbePointsColl = sim.getPartManager().getObjectsOf(PointPart.class);
2-2. Plane Section
Collection myplaneSectColl = sim.getPartManager().getObjectsOf(PlaneSection.class);
2-3. threshold
Collection myThresholdColl = sim.getPartManager().getObjectsOf(ThresholdPart.class);
대부분의 경우 추가 사용을 위해 Collection에 하나의 Object 클래스만 포함해야 함을 코드에 표시해야 한다. 항상 다음 구문을 사용하는 것이 좋다:
Collection<MeshContinuum> myMeshC ontinuaColl = sim.getContinuumManager().getObjectsOf(MeshContinuum.class);
Collection<PhysicsContinuum> myPhysContinuaColl = sim.getContinuumManager().getObjectsOf(PhysicsContinuum.class);
Collection<PointPart> myProbePointsColl = sim.getPartManager().getObjectsOf(PointPart.class);
Collection<PlaneSection> myplaneSectColl = sim.getPartManager().getObjectsOf(PlaneSection.class);
Collection<ThresholdPart>| myThresholdColl = sim.getPartManager().getObjectsOf(ThresholdPart.class);
이렇게 하면 루프를 사용하여 다음과 같이 Collection의 모든 Object를 스위프할 수 있습니다:
for(PointPart probePoint : myProbePointsColl) {
sim.println(probePoint.getPresentationName());
}