8.2 HU値オーバーライドのチェック¶
目的¶
HU値がオーバーライドされているストラクチャが存在するかチェックし、存在する場合はそのストラクチャのIDとHU値を表示する。
必要な情報¶
ストラクチャのHU値がオーバーライドされているか、オーバーライドされている場合はその割り当てられているHU値
与えられている引数¶
PlanSetup
クラスのインスタンスplan
必要な情報へのアクセス方法¶
GetAssignedHU()メソッドはbool型でHU値オーバーライドの有無を返します。またout修飾子で割り当てられているHU値を返します。
1 2 3 4 5 | //割り当てられているHU値を格納するdouble型AssignedHUを定義 double AssignedHU = new Double(); //最初のストラクチャのHU値オーバーライドの有無をisAssignedに、割り当てられているHU値をAssignedHUに取得する。 bool isAssigned = plan.StructureSet.ElementAt(0).GetAssignedHU(out AssignedHU); |
plan.StructureSet.StructuresはIEnumerableインターフェースを実装しているので、 以下のようにforeachで各Structureを順次処理可能です。
1 2 3 4 | foreach(var structure in plan.StructureSet.Structures) { //処理 } |
必要な情報の表示¶
Exercise_PlanCheck_Ex1.3.cs
を開き、関数CheckStructureFunc
内に以下のコードを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 | string HUAssigned = ""; foreach (Structure st in ss.Structures) { double AssignedHU = 0; bool isAssigned = st.GetAssignedHU(out AssignedHU); if (isAssigned) { HUAssigned += st.Id + ": " + string.Format("{0}", AssignedHU) + "HU" + "\n"; } } MessageBox.Show(HUAssigned); |
実装¶
HU値がオーバーライドされているかの判定に利用するbool型AssignedFlag、チェックをパスしなかった場合に表示する文字列をstring型HUAssignedで定義します。
1 2 | bool AssignedFlag = false; string HUAssigned = ""; |
foreachで各ストラクチャを順次処理します。 HU値オーバーライドの有無をisAssignedに、割り当てられているHU値をAssignedHUに取得し、HU値オーバーライドがある場合はそのストラクチャIDと割り当てられているHU値をHUAssignedに追加します。
1 2 3 4 5 6 7 8 9 10 | foreach (Structure st in ss.Structures) { double AssignedHU = 0; bool isAssigned = st.GetAssignedHU(out AssignedHU); if (isAssigned) { AssignedFlag = true; HUAssigned += " (" + st.Id + ": " + string.Format("{0}", AssignedHU) + "HU" + ")"; } } |
判定フラグの内容によりMakeFormatTextによりそれぞれの場合の文字列を生成します。
1 2 3 4 5 6 7 8 | if (AssignedFlag == false) { oText += "No Structure HU Overridden"; } else { oText += MakeFormatText(false, checkName, HUAssigned); } |