I think you want to use StructureManagementService.CreateBomWindows:
/// <summary>
/// Opens a structure Management BOM Window
/// </summary>
/// <typeparam name="T">BOM window</typeparam>
/// <param name="action">action to do in the BOM window</param>
/// <param name="bomWindowOwner">root node for the BOM window</param>
/// <returns></returns>
public static T OpenBomWindow<T>(Func<CreateBOMWindowsResponse, T> action, ModelObject bomWindowOwner)
{
    CreateBOMWindowsResponse windowResponse = TCProgram.StructureManageServiceCad.CreateBOMWindows(new CreateBOMWindowsInfo[]
    {
        new CreateBOMWindowsInfo()
        {
            ItemRev = bomWindowOwner as Mstrong.ItemRevision,
            Item = bomWindowOwner as Mstrong.Item
        }
    });
    try
    {
        return action.Invoke(windowResponse);
    }
    finally
    {
        TCProgram.StructureManageServiceCad.CloseBOMWindows(windowResponse.Output.Select(x => x.BomWindow).ToArray());
    }
}
Once you have that method you declaration will look something like this.
OpenBomWindow(
(CreateBOMWindowsResponse bomResponse) =>
{
    Mstrong.BOMLine bomLine = bomResponse.Output[0].BomLine;
},
parentItemRev);