3章 CommonMPの要素モデルを作成する
3.4 要素モデルを作成する(GUIからモデルのプロパティ情報を設定できるようにする)
全頁で作成した要素モデルのプロパティ設定画面を表示してみます。
プロパティ画面には 設定項目として 「ステップ時間60秒」だけが表示されています。
ここで、この画面を使用して、モデルの各種定数等の値を設定できるようにしたいと思います。
設定できる項目は、第2章で作成した DynamicWaveModel の場合と同様とします。
(第2章でプロパティデータから設定した項目)
・XL :河道長
・NX : 分割数
・SLOPE :
勾配
・ROUGH
:
粗さ
(Factoryクラスの変更)
まずは、第2章で作成した DynamicWavePrptyInf クラスに相当するクラスが必要です。
本章では、要素モデルのプロパティ情報クラスは親クラスを使用しています。 親クラス McCellModelPropertyInfo は、汎用用途に使用できるようになっていますが、それ故に 使用するにはコツが必要です。
要素モデルのプロパティデータクラスは、画面に表示する情報と、画面で入力された情報を対応付けて設定できます。
・どのような項目が設定情報として存在するか
・その情報のデータの型は何か(整数型なのか、実数型なのか等)
・画面に表示する時にはどの様な表題とするか
・デフォルト値は何か
等を 予め プロパティデータに登録しておきます。
この登録は Factoryクラスの McCellModelPropertyIF
CreateModelProperty(HySID csLibraryID, HySObjectKind
csModelKind) メソッド内で行います。
public override
McCellModelPropertyIF CreateModelProperty(HySID csLibraryID, HySObjectKind
csModelKind) McCellModelPropertyInfo csRtnCellPrptyDt = null; if
(csModelKind.Equals(MyExerciseModelDefine.MY_DYNAMIC_MODEL_KIND) ==
true)
csRtnCellPrptyDt.SetStepTime(60); // δT設定
60秒 |
csRtnCellPrptyDt.AddInfoType("XL", "河道長",
McDefine.ValKind.DOUBLE); csRtnCellPrptyDt.SetInfo("XL", 100.0 * 1000.0); csRtnCellPrptyDt.AddInfoType("NX", "モデル内セル分割数+1", McDefine.ValKind.LONG); csRtnCellPrptyDt.SetInfo("NX", 50); csRtnCellPrptyDt.AddInfoType("ROUGH", "粗度", McDefine.ValKind.DOUBLE); csRtnCellPrptyDt.SetInfo("ROUGH", 0.03); csRtnCellPrptyDt.AddInfoType("SLOPE", "河床勾配", McDefine.ValKind.DOUBLE); csRtnCellPrptyDt.SetInfo("SLOPE", 1.0 / 2000.0); |
csPrptyInfo.GetInfo("XL", ref
m_csMyInf.XL); csPrptyInfo.GetInfo("NX", ref m_csMyInf.NX); csPrptyInfo.GetInfo("SLOPE", ref m_csMyInf.SLOPE); csPrptyInfo.GetInfo("ROUGH", ref m_csMyInf.ROUGH); |
ここで作成した要素モデル開発プロジェクト(Ex04_MyExerciseModel.lzh)
ダウンロードしたら解凍して生成されたフォルダー「MyExerciseModel」を \CommonMP\Source\HYMCO\OptionImpl\ 下に置きます。
解凍して生成されたプロジェクト:MyExerciseModel.csproj を ディバッグ用ソリューションに追加し、スタートアッププロジェクト(TestModelDeveloperMainExp)の依存関係に追加します。
またテスト用のCommonMP計算プロジェクト(Ex04_CommonMPData.lzh)
解凍して生成された、「MyExerciseStep1」フォルダーを \CommonMP\CommonMPData\ 下に置きます。
初版:2013/06/17 |