動的パーツ プロパティの表示と追加

個々のタイプのパイプと構造物は、標準のパイプ プロパティと構造物プロパティには格納できない、サイズ、ジオメトリ、設計、および構造などの多くの一意の属性を備えています。各パーツに適切な属性を与えるために、パイプ オブジェクトと構造物オブジェクトは動的なプロパティのセットを備えています。1 つのプロパティは、AeccPartDataField オブジェクトによって表されます。 データ フィールドは、AeccPartDataRecord 型のコレクションに格納されます。これらのコレクションには、AeccPartSizeFilterAeccPipe、および AeccStructure オブジェクトの PartDataRecord プロパティを使用してアクセスします。各データ フィールドには、内部変数名、値の文字説明、フィールドを識別するためのグローバル コンテキスト、データ タイプ、およびデータ値自体が含まれています。

次のサンプルでは、パイプ オブジェクト oPipe に含まれるすべてのデータ フィールドを列挙し、各フィールドの情報を表示します。

Dim oPartDataField As AeccPartDataField
 
Debug.Print "All data fields for this pipe:"
Debug.Print "======"
For Each oPartDataField In oPipe.PartDataRecord
   Debug.Print "Context name: "; oPartDataField.ContextString
   Debug.Print "Description:  "; oPartDataField.Description
   Debug.Print "Internal name:"; oPartDataField.Name
   Debug.Print "Value:        "; oPartDataField.Tag
   Debug.Print "Type of value:"; oPartDataField.Type
   Debug.Print "------"
Next

独自の動的プロパティを作成するには、まずそのプロパティのタイプと名前を定義するカスタム パラメータを作成します。そのためには、パイプ ネットワーク カタログ定義オブジェクト AeccPipeNetworkCatDef を使用します。このオブジェクトには、環境プロパティの AeccPipeSettingsRoot.PipeNetworkCatDef を使用してアクセスします。AeccPipeNetworkCatDef オブジェクトは、AeccPipeNetworkCatDef.DeclareNewParameter メソッドを使用して新しいパラメータを作成します。DeclareNewParameter は、パラメータのデータ タイプを記述する次の文字列を取ります。

パラメータを作成したら、AeccPipeNetworkCatDef.DeclarePartProperty メソッドを使用して、パーツで使用できるプロパティを作成できます。

注:

パラメータ名にはスペースと句読点を含めることはできません。

次の例では、パラメータを宣言し、そのパラメータに基づいて、任意のパイプ オブジェクトで使用できるプロパティを作成します。

Dim oSettings As AeccPipeSettingsRoot
Dim oPipeNetworkCatDef As AeccPipeNetworkCatDef
 
Set oSettings = oPipeDocument.Settings
Set oPipeNetworkCatDef = oSettings.PipeNetworkCatDef
oPipeNetworkCatDef.DeclareNewParameter _
  "Global Context 01", _
  "Context Description", _
  "TParam", _
  "Test Parameter", _
  aeccDoubleGeneral, _
  aeccDouble, _
  "", _
  True, _
  False
 
oPipeNetworkCatDef.DeclarePartProperty 
  "Global Context 01", aeccDomPipe, 10

パーツのドメインで使用できるこれらのプロパティの中から選択して、データ フィールドを作成できます。

' Make a data field based on the "Global Context 01"
' property and add it to a pipe object "oPipe". Set
' the value of the data field to "6.5".
Dim oPartDataField As AeccPartDataField
Set oPartDataField = oPipe.PartDataRecord.Append
  ("Global Context 01", 0)
oPartDataField.Tag = 6.5