Get-VaultFileBOM

Gets the Bill of Materials data from the CAD BOM of the specified file.

Syntax

Get-VaultFileBom -File <String> -GetChildrenBy <ReadBomRowVersionsType> [<CommonParameters>]

Parameters

Type

Name

Description

Default value

Optional

String

File

Full path to the file

no

BomRowVersionType

GetChildrenBy

Which version of the children should be retrieved.
Possible options are LatestVersion, LatestVersion, LatestReleasedVersion and LatestReleasedVersionOfRevision

ExactVersion

yes

Return type

FileBomRow[] ← on success
empty ← on failure

Remarks

The commandlet provides the Structured file BOM and supports the following component types:

  • Normal:
     Components with type Normal have no special characteristics and are included in quantity calculations.

  • Phantom:
     Components with type Phantom are ignored in the BOM but their children are promoted and included in the quantity calculations.
    Multiple same components can end up at the same level in the bill of materials when they get promoted.
    They will end up as a single FileBomRow with summed quantities.

  • Reference:
     Components with type Reference and their children are ignored in the BOM and are treated as if they do not exist.

Read more about the different BOM structures here.

Similar to the Vault “Assign Items” functionality the cmdlet returns emtpy for iAssembly and iPart factories, because Vault has no CAD BOM information about them.
Inventor files with multiple Model States only return the BOM data of the Master Model State.

The different child component search strategies can be specified via GetChildrenBy option.
For strategies different than ExactVersion, it is possible that less FileBomRows are returned when they where removed in the detected Vault file version.
Similar as the Vault “Assign Items” functionality, new components that where added in later Vault file versions are returned without PositionNumber an with RowOrder “0”.

The cmdlet handles CAD BOMs that contain references to unresolvable Vault files and files with missing CAD BOMs by returning all the intact and the corrupted FileBomRows with all the data it can provide. Accessing other properties can lead to exceptions.
More information can be found here.

BomRowVersionType

Name

Description

ExactVersion

Get the exact version of the component.

LatestVersion

Get the latest version of the component.

LatestReleasedVersion

Get the latest released version of the component. If no released version is found, the exact version is used.

LatestReleasedVersionOfRevision

Get the latest released version from the same revision. If no released version is found in the Revision, the exact version is used.

Examples

Display the Structured file BOM for Pad Lock in Console

$file = Get-VaultFile -Properties @{Name = "Pad Lock.iam"}
$fileBom = Get-VaultFileBOM -File $file._fullPath

#Print BOM data as Table like in Inventor
$fileBom | sort-object {[int]$_.Bom_PositionNumber} | Format-Table Bom_PositionNumber,Bom_Number,Bom_Structure,Bom_Quantity,Bom_ItemQuantity,Bom_UnitQuantity,Bom_Unit

<#
Bom_PositionNumber Bom_Number Bom_Structure Bom_Quantity Bom_ItemQuantity Bom_UnitQuantity Bom_Unit
------------------ ---------- ------------- ------------ ---------------- ---------------- --------
1                  100002     Normal                   1                1                1 Each
2                  100004     Normal                   1                1                1 Each
3                  100005     Normal                   1                1                1 Each
4                  100006     Normal                   1                1                1 Each
5                  100008     Normal                   1                1                1 Each
6                  100011     Normal                   1                1                1 Each
7                  100010     Normal                   1                1                1 Each
8                  100003     Normal                   1                1                1 Each
9                  100012     Normal                   1                1                1 Each
10                 100016     Normal                   1                1                1 Each
11                 100009     Normal                   1                1                1 Each
#>

Get FileBOM data for assembly with new component in LatestReleasedVersion of Phantom

$fileBom = Get-VaultFileBOM -File "$/Designs/AssemblyWithPhantom.iam" -GetChildrenBy LatestReleasedVersion
$fileBom | Format-Table Bom_RowOrder,Bom_PositionNumber,Bom_Number,Bom_Structure,Bom_Quantity,Bom_ItemQuantity,Bom_UnitQuantity,Bom_Unit
<#
Bom_RowOrder Bom_PositionNumber Bom_Number Bom_Structure Bom_Quantity Bom_ItemQuantity Bom_UnitQuantity Bom_Unit
------------ ------------------ ---------- ------------- ------------ ---------------- ---------------- --------
0                               NewPart    Normal                   1                1                1 Each
2            5                  Part2      Normal                   2                2                1 Each
#>

Skip BomRows of unconditionally removed or erroneous file components

$fileBom = ( Get-VaultFileBOM -File "$/Designs/CorruptFileBom.iam" -GetChildrenBy LatestVersion ) | foreach {
try {
	$successfullyRetrievedBomNumber = $_ | Select-Object -ExpandProperty Bom_Number
	return $_
} catch {
	# Skip unconditionally removed or erronous file component, similar as Vault "Assign Items" functionality
}
}