パーツ リストを取得する

AeccPipeSettingsRoot には、ドキュメント内の使用可能なすべてのパーツ タイプ リストの読み込み専用コレクションである PartLists プロパティも含まれています。各リストは、パーツ ファミリの読み込み専用コレクションである AeccPartList 型のオブジェクトです。 パーツ ファミリはパーツの幅広いカテゴリで、GUID (Globally Unique Identification)値によって識別されます。パーツ ファミリは、パイプまたは構造物のいずれかのパーツだけで構成できます。パーツ ファミリには、パーツの特定のサイズであるパーツ フィルタの読み込み専用コレクション(AeccPartSizeFilter)が含まれます。パーツ ファミリは、パーツのさまざまな側面を定義するフィールドのコレクションである AeccPartSizeFilter.PartDataRecord プロパティによって定義されます。

次の例では、ドキュメント内のすべてのパーツのリストを出力します。

Dim oSettings As AeccPipeSettingsRoot
Set oSettings = oPipeDocument.Settings
' Get a reference to all the parts lists in the drawing.
Dim oPartLists As AeccPartLists
Set oPartLists = oSettings.PartLists
Debug.Print "Number of part lists: "; oPartLists.Count
 
Dim oPartList As AeccPartList
For Each oPartList In oPartLists
   Dim oPartFamily As AeccPartFamily
   Dim oSizeFilters As AeccPartSizeFilters
   Dim oSizeFilter As AeccPartSizeFilter
   Dim sPipeGuid As String
   Dim sStructureGuid As String
   Dim oPipeFilter As AeccPartSizeFilter
   Dim oStructureFilter As AeccPartSizeFilter
 
   Debug.Print: Debug.Print
   Debug.Print "PART LIST - "; oPartList.Name
   Debug.Print "-------------------------------------------"
 
   ' From the part list, looking at only those part families
   ' that are pipes, print all the individual parts.
   Debug.Print "  Pipes"
   Debug.Print "  ====="
   For Each oPartFamily In oPartList
      ' Look for only pipe families.
      If (oPartFamily.Domain = aeccDomPipe) Then
         sPipeGuid = oPartFamily.guid
         Debug.Print "  Family: "; oPartFamily.Name
         ' Go through each part in this family.
         For Each oPipeFilter In oPartFamily.SizeFilters
            Debug.Print "    Part: "; oPipeFilter.Name
         Next
      End If
   Next
 
   ' From the part list, looking at only those part families
   ' that are structures, print all the individual parts.
   Debug.Print
   Debug.Print "  Structures"
   Debug.Print "  =========="
   For Each oPartFamily In oPartList
      ' Look for only structure families.
      If (oPartFamily.Domain = aeccDomStructure) Then
         sStructureGuid = oPartFamily.guid
         Debug.Print "  Family: "; oPartFamily.Name
         ' Go through each part in this family.
         For Each oPipeFilter In oPartFamily.SizeFilters
            Debug.Print "    Part: "; oPipeFilter.Name
         Next
      End If
   Next
Next