6章 再び要素モデルの作成
6.1 独自プロパティ画面の作成
(その1 追加モデルのスタブ作成)
前頁で触れたように、CommonMPは MVCソフトウエアパターン構造を採用しているので、要素モデルのプロパティ画面を作成するには、要素モデルDLLとは異なるDLLを作成する必要があります。 プロパティ画面の製作手順は 要素モデルの場合とほぼ同様の手順を踏みます。
@要素モデル用プロパティ画面DLL用プロジェクトを作成する。
A要素モデル用プロパティ画面スタブを作成する。
B要素モデル用プロパティ画面の実装を行う。
本ホームページでは、プロパティ画面を製作するに当り、要素モデルと、そのプロパティ画面を同時に制作してみます。
テーマ
新しい要素モデルと、このモデル専用のプロパティ画面を作成し、DLLとしてリリースする。
製作の進め方
@ 6.1.1 要素モデルスタブを作成する。
A 6.1.2 独自プロパティ画面に使用するプロパティ情報、初期化情報クラスのスタブを作成する
B 6.1.3 スタブ状態で、CommonMPに組み込んで動作させてみる。
C 6.1.4 要素モデル用プロパティ画面の開発プロジェクトを作成する
D 6.1.5 プロパティ画面のスタブを作成する。
E 6.1.6 スタブ状態で、CommonMPに組み込んで動作させてみる。
F 6.1.7 上記@〜Eで作成したスタブに処理を実装する。
以下、上記手順に従って、要素モデルプロパティ画面を作成していきます。
テーマ設定
第2章で作成した2つのモデルのうち、第3章で「DynamicWave」モデルを、CommonMPの要素モデルに移植しました。
そこで、新しい要素モデルとしては、第2章で制作したもう一つのモデル 「KinematicWave」モデルを対象とします。
この時、独自のプロパティ情報クラス、初期化情報クラスを作成し、そのクラスに応じた独自画面を作成してみます。
CommonMPの規格では、「1つのDLL内に要素モデルは1個」が原則となっていますが、学習用モデルに多量のDLLを作成すると、学習後それらを削除するのに手間がかかるので、ここでは、第3章で作成したDLLに要素モデルを追加します。
6.1.1
要素モデルのスタブ作成
第3章でも、要素モデルは最初にスタブを作成しました。 そこで、此処でも、「KinematicWave」モデルのスタブの作成から行います。既にDLLは存在していDLLの用のMicrosoft
Visual C#
の要素モデルプロジェクトのフォルダ内に存在するモデル型紙をコピーして使用します。
前回作成した「DyanamicWave」要素モデルは 未来型のモデルでした。 今回作成する「KinemacitWave」モデルも同様に現在の状態からδt秒後の状態を計算するため、未来型のモデルです。
↑ 制作する要素モデルクラスの派生関係
↑ 制作する演算データクラスの派生関係
モデルのスタブ作成は以下の手順です。
@型紙をコピーしてKinematicWave要素モデルクラスとKinematicWave演算データクラスファイルを作成します。
Aコピーして作成した2つのファイルを プロジェクトに追加します。
B追加した2つのファイルを開き namespace 名称を DLLの namespace 名に一致させます。
C要素モデルクラスと演算データクラスの名称を変更します。
DFactoryクラスの各メソッドを変更します。
@型紙をコピーして独自クラス MyKinematicWavePropertyDataクラスとMyKinematicWaveInitialDataクラスファイルを作成します。
Aコピーして作成した2つのファイルを プロジェクトに追加します。
B追加した2つのファイルを開き namespace 名称を DLLの namespace 名に一致させます。
Cプロパティデータクラスと初期化データクラスの名称を変更します。
以降、手順を説明します。
2つのクラスの型紙もサンプルに準備されています。
プロパティデータクラスの型紙
\CommonMP\Source\HYMCO\OptionImpl\MyExerciseModel\モデル型紙\PropertyData\MySpecialPropertyData.cs
初期化データクラスの型紙
\CommonMP\Source\HYMCO\OptionImpl\MyExerciseModel\モデル型紙\InitialData\MySpecialInitialData.cs
この2つのファイルをそれぞれ次のディレクトリにコピーします。
プロパティデータクラスのコピー先
\CommonMP\Source\HYMCO\OptionImpl\MyExerciseModel\Model\PropertyData
初期化データクラスのコピー先
\CommonMP\Source\HYMCO\OptionImpl\MyExerciseModel\Model\InitialData
(プロパティデータクラスコピーの例)
予定のディレクトリにコピーした後 ファイル名を変更します。
プロパティデータのソースファイル名変更
MySpecialPropertyData.cs → MyKinematicWavePropertyData.cs
初期化データのソースファイル名変更
MySpecialInitialData.cs
→ MyKinematicWaveInitialData.cs
要素モデルクラスの追加と同様の操作を行なって、上記2つのクラスを プロジェクトに追加します
↑ 2つのデータクラスをソリューションに追加する
追加した2つのファイルを開き、namespace名をDLL内のFactoryクラスのnamespace
名に変更します。
namespace
CommonMP.HYMCO.OptionImpl.MyModelLIB
↓
namespace
CommonMP.HYMCO.OptionImpl.MyExerciseModelLIB
次に、コンパイルを行った後、リファクタリング機能を用いて
プロパティlデータクラス名の変更
MySpecialPropertyData→ MyKinematicWavePropertyData
初期化データクラス名の変更
MySpecialInitialData→ MyKinematicWaveInitialDat
に変更します。
コンパイルが成功すれば、要素モデルクラスと 演算中データクラスのスタブは制作完了です。
6.1.3
ファクトリークラスの変更とスタブ組み込みの確認
追加モデルに関連するクラスのスタブが完了した所で、スタブをCmmonMP内から呼び出せるようにして、スタブの組み込みを確認します。
最初に、組み込む要素モデルの種別と名称をDefineクラス内に定義します。
public class
MyExerciseModelDefine { 。。。。。。。。 /// <summary>演習:KinematicWaveモデル種別</summary> public static readonly HySObjectKind MY_KINEMATIC_MODEL_KIND = new HySObjectKind("MyKinematicWaveModel"); /// <summary>演習:KinematicWaveモデル名称</summary> public static readonly HySString MY_KINEMATIC_WAVE_MODEL_NAME = new HySString("演習:KinematicWaveモデル"); 。。。。。。。。 } |
次に、ファクトリークラスの下記メソッドを変更します。
@CreateCalModel メソッド
引数で与えられた要素モデル種別が、Defineクラスに追加した「KinematicWave」モデル種別の時、MyKinematicWaveModelクラスのインスタンスを生成します。
下の様にコーディングします。
public override McCalModel
CreateCalModel(HySObjectKind
csModelKind) |
public override McCalInfo
CreateCalInfo(HySObjectKind
csModelKind) |
public override
McCellModelPropertyIF CreateModelProperty(HySID csLibraryID, HySObjectKind
csModelKind) |
public override
McPropertyInfoRoot CreateModelInitialInfo(HySID csLibraryID, HySObjectKind
csModelKind) |
public override
HySDataLinkedList
GetCalModelInfoList() //
DynamicWave
モデル情報追加 csModelInfo.SetManualFileName(".\\MyExerciseModel\\MyExerciseModelDoc.txt"); // <-- モデル解説書
m_csCalModelInforList.AddLast(csModelInfo); //
演算モデル情報の追加 |
初版:2013/07/12 |