Flattened Bill of material

Flattened Bill of material

Anonymous
Not applicable
3,323 Views
20 Replies
Message 1 of 21

Flattened Bill of material

Anonymous
Not applicable

Dear All

I have question, why Inventor doesn't support (have) options inside of Bill of material to export it as Flattened list?

To describe more what is Flattened list...That is a list which summarize all component parts accross multiple assemblies used in that 3D Model.

Example: If I have 3 Assemblies
ASY-123x

Wich has following parts and qty:
Part-1 (QTY=1)
Part-2 (QTY=1)

And when I want to export the BoM list, I would like to have there that I must have qty of Part-1 and Part-2, 3pcs per that 3D model not only 1. Only says that I have ASY-123x 3pcs in that 3D Model without calculation parts which are in that Assembly. And it waste me time to renumber all of them.

This is just example, mine Assemblies has over 600 parts. And it's pain... with this kind of BoM which Inventor has.

Also I've tried addon "BOM Tools Pro" and still doesn't help because it's almost the same.

0 Likes
3,324 Views
20 Replies
Replies (20)
Message 2 of 21

Sergio.D.Suárez
Mentor
Mentor

Hi, excuse me for not interpreting it correctly, could you explain a little more what you are trying to achieve? have you tried to export the list of only parts? regards


Please accept as solution and give likes if applicable.

I am attaching my Upwork profile for specific queries.

Sergio Daniel Suarez
Mechanical Designer

| Upwork Profile | LinkedIn

0 Likes
Message 3 of 21

Anonymous
Not applicable

I guess that when you have your 3 assemblies in 1 MAIN assembly, the BOM will count 3 pcs instead of 1 pc.

0 Likes
Message 4 of 21

johnsonshiue
Community Manager
Community Manager

Hi Eli,

 

I think I know what you are looking for. You want to have a mixed view of Structured and PartOnly. Essentially, you want to see the total number of individual parts you need and also the total number of subassemblies.

This actually can be confusing also. For example, you have three subassemblies of the same definition. Each has two parts. Should it show 3 subassemblies with 6 parts? Or, 3 subassemblies with 2 parts each?

I recalled you brought up this issue before but we have not found a good solution to address the confusion yet.

Many thanks!

 



Johnson Shiue ([email protected])
Software Test Engineer
Message 5 of 21

Anonymous
Not applicable

Hi @johnsonshiue 

That's what I'm looking for. I would like to have that view of mixed structured and parts only. I saw somewhere they call it "Flattened BoM"...
It doesn't matter if it shows on 1 place 6pcs of parts. Or on 3 places in BoM with 2 pcs each. 
I just want to have it in total 6pcs.

It's pitty that Inventor doesn't have third option something like this.
I don't want to go through complete BoM and change the QTY of parts.

When I'm doing Specification (Calculation) of material, I have to put inside BoM manually
Thickness (Sheet metal parts)
Mass (All steel parts)
Length (Tubes, L profiles, Bars)

Etc.

And that's the reason I need to have exact number of pcs of parts.


I hope in future Inventor will make something like this as an option inside of BoM.

0 Likes
Message 6 of 21

Anonymous
Not applicable

HI @Anonymous 

Yes something like that. To show me real number of pcs. Not only 1.

0 Likes
Message 7 of 21

Anonymous
Not applicable

Hi @Sergio.D.Suárez 

I just replied down in comments. You can see exactly what I'm talking about.

Regards

0 Likes
Message 8 of 21

johnsonshiue
Community Manager
Community Manager

Hi Eli,

 

Indeed, unfortunately, Inventor does not support such BOM view yet. To avoid confusion, I think your desirable BOM view is like total sum at each level. "Flattened" means you dissolve subassemblies, which is PartsOnly. I guess some of the users are confused with the term "Flattened." You just want to be able to see the total number of items at each level. You don't care about how each subassembly contains how many parts.

This is a very interesting request. I will have to work with project team to understand the feasibility. I don't see a simple solution yet.

Many thanks!



Johnson Shiue ([email protected])
Software Test Engineer
0 Likes
Message 9 of 21

Frederick_Law
Mentor
Mentor

Create Structured BOM from main assembly.

Expand the Sub-assemblies in BOM to show parts.

You should see part with QTY in that sub-assembly.

Repeat for all sub-assembly.

BOM.jpg

Message 10 of 21

johnsonshiue
Community Manager
Community Manager

Hi! That is not what Eli wants. For example, you have ASMB -> 2 X Sub1 -> PartA and PartB. He would like to see the following.

Sub1 X 2

PartA X 2

PartB X 2

 

inventor cannot do it at the moment.

Many thanks!



Johnson Shiue ([email protected])
Software Test Engineer
0 Likes
Message 11 of 21

Frederick_Law
Mentor
Mentor

Like this:

BOM-02.jpg

Cheater, cheater ..... Smiley Tongue

0 Likes
Message 12 of 21

johnsonshiue
Community Manager
Community Manager

Hi! Yes, I think that is what Eli wants. My argument is that the PartsList can also be confusing. If I were the one purchasing parts, I may end up buying duplicates. But, Eli has a point. As long as the convention is clear, there is no reason not to support it. I don't think it should be technically challenging. It is just present the same data in a different way or from a different perspective. It is like looking at the assembly on a per level basis.

Many thanks!



Johnson Shiue ([email protected])
Software Test Engineer
0 Likes
Message 13 of 21

Frederick_Law
Mentor
Mentor

A better cheat:

BOM-03.jpg

Add Virtual Component to assembly with same name as assembly.

Part only BOM will show "Assembly" with parts.

BOM-04.jpg

Of course it could create other problem.

See how it works for you.

0 Likes
Message 14 of 21

Sergio.D.Suárez
Mentor
Mentor

I have lost a bit, so I apologize if this contribution does not help.
I modified an ilogic rule that I had, maybe it could serve as an approach to a possible solution. This rule is executed in an assembly.
Supposedly, this rule searches in each reference file, if it is a part it will take the amount of the BOM only parts, and if it is an assembly it will take the amount of the BOM model data, it will search among its children until finding the assembly.
Create in a notebook first the quantity, then the name of the file, then the description, and finally the partnumber. I suppose that looking for a similar approach could reach the desired result. regards

 

Public Class RWEI_0001A
	Shared oTextSave As String = "C:\Users\Public\Documents\iLogicBuffer.txt"
	
Sub Main() 
	Dim oDashes As String = ""
	Dim iL_NO As String = "RULENAME"
	Dim iL_Name As String = "EXPORT Flattened Bill of material"
	Dim iL_FullName As String = "Rule " & iL_NO & ": " & iL_Name
	Dim oDoc As Document = ThisApplication.ActiveDocument
			
	oDelete_ex_Notepad(oTextSave, iL_NO)
	oHL1 = "FILE REFERENCE TREE RAN FROM: " & oDoc.FullFileName
	oWrite_HeaderLines(oTextSave, oHL1)
	oHL2 = iL_FullName
	oWrite_HeaderLines(oTextSave, oHL2)
	For i = 1 To Len(iL_FullName)
		oDashes = oDashes & "-"
	Next i
	oWrite_DashLine(oTextSave, oDashes)
	
    ' Get the active assembly. 
    Dim oAsmDoc As AssemblyDocument 
    oAsmDoc = ThisDoc.Document
	Dim oBOM As BOM
	oBOM = oAsmDoc.ComponentDefinition.BOM
	oBOM.StructuredViewFirstLevelOnly = False
	oBOM.StructuredViewEnabled = True
	oBOM.PartsOnlyViewEnabled = True
	For Each doc As Document In oAsmDoc.AllReferencedDocuments
		If doc.DocumentType = Inventor.DocumentTypeEnum.kAssemblyDocumentObject Then
		Dim oBOMView As BOMView
		oBOMView = oBOM.BOMViews.Item(1)'Model data
		  Call ListItems(oBOMView.BOMRows, 0, doc)
		End If
		If doc.DocumentType = Inventor.DocumentTypeEnum.kPartDocumentObject Then	
		Dim oBOMView As BOMView
		oBOMView = oBOM.BOMViews.Item(3)'Only Parts				
		  Call ListItems(oBOMView.BOMRows, 0, doc)
		End If
	Next
	Process.Start("Notepad.exe", oTextSave)
End Sub 


Sub ListItems(Rows As BOMRowsEnumerator, indent As Integer, doc As Document)
Dim oBOMRow As BOMRow
For Each oBOMRow In Rows
	Dim rDoc As Inventor.Document
	rDoc = oBOMRow.ComponentDefinitions.Item(1).Document
	Dim rDocName As String = rDoc.DisplayName 
	If rDocName <> doc.DisplayName Then
	    If Not oBOMRow.ChildRows Is Nothing Then
	        Call ListItems(oBOMRow.ChildRows, indent + 1,doc )
	    End If
	Else
		
		oDescrip = iProperties.Value(doc,"Project", "Description")
		oPartNumber = iProperties.Value(doc, "Project", "Part Number") 
		oQty = oBOMRow.ItemQuantity
		
		oData_X = oQty & " | " & rDocName  & " | " & oDescrip &  " | " & " | "  & oPartNumber
		oWrite_Data(oTextSave, oData_X)	
		
	End If
Next

End Sub

Sub oWrite_Data(oTextSave As String, oData As String)
	oWrite = System.IO.File.AppendText(oTextSave)
	oWrite.WriteLine(oData)	
	oWrite.Flush()
	oWrite.Close
End Sub

Sub oWrite_HeaderLines(oTextSave As String, oHeaderLine As String)
	oWrite = System.IO.File.AppendText(oTextSave)
	oWrite.WriteLine(oHeaderLine)	
	oWrite.Flush()
	oWrite.Close
End Sub
	
Sub oWrite_DashLine(oTextSave As String, oDashes As String)
	oWrite = System.IO.File.AppendText(oTextSave)
	oWrite.WriteLine(oDashes)	
	oWrite.Flush()
	oWrite.Close
End Sub

Sub oDelete_ex_Notepad(oTextSave As String, iL_NO As String)		'To delete oTextSave if existing.
 	If System.IO.File.Exists(oTextSave) = True Then
   	System.IO.File.Delete(oTextSave)
	MessageBox.Show("Existing (if any) File Deleted", iL_NO)
	End If
End Sub
End Class

 


Please accept as solution and give likes if applicable.

I am attaching my Upwork profile for specific queries.

Sergio Daniel Suarez
Mechanical Designer

| Upwork Profile | LinkedIn

Message 15 of 21

Anonymous
Not applicable

Hello @Sergio.D.Suárez 

I just tried your iLogic rule but it doesn't work.

However guys, Thank you for you answer and I hope one day @johnsonshiue and your team will make something regarding this type of option in Bill of material. This would be great to see in future updates or in new Inventor 2021.
However, If use this type of Bill of material which I have now when I export from Inventor, and if I go to shop to buy them, I will miss 50% of parts. The biggest problem if those parts are used in multiple places in Assembly, so it will calculate only as 1. So I will go and buy 1 but acutally for example I need 5 haha.

I hope you understand me, however thank you again for answers, I have to edit everything manually.

Best regards

Eli

0 Likes
Message 16 of 21

Frederick_Law
Mentor
Mentor

When I need to order material/part for multiple assemblies (same or different), I put them all in a assembly.

eg: 2 assm1, 3 assm2, 1 assm3,

Some job I need spare parts, so I put them in the assembly.

 

Then create part only BOM to give a list of all the parts.

0 Likes
Message 17 of 21

swalton
Mentor
Mentor

We use a "Flattened BOM" to solve two problems.  Larger companies may use an ERP type system to solve these problems, but we don't have one.

 

Problem 1:  How many 1/4-20 x 1" long bolts do I need to build the entire design?  If that bolt is scattered across 8 different sub-assemblies, how do I get an accurate count?  Parts-only lists solve this issue ipt files, but the online documentation implies that they don't for sub-assemblies.  

 

Problem 2: How many of each sub-assembly do I need to build/stock/store as I am assembling the top level assembly?  What if a sub-sub-assembly is used in 3 or 4 other sub-assemblies? Parts-only lists do not address this issue at all.  Structured Parts lists do not address this issue at all.

 

What I would like, and what I think the OP wants is an out-of-the-box BOM tab or Parts List that shows each component once-and-only-once with a total used quantity across the entire model tree.

Steve Walton
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

EESignature


Inventor 2025
Vault Professional 2025
Message 18 of 21

thenottakenname
Advocate
Advocate

I got around this by having to do a little extra front-work. I'm part of a piping company, and we wanted our parts list to list out the lengths of pipe used in an assembly to make life for the shop workers easier. We only have one part number for each size of pipe, so when we went to populate the parts list with an iProperties->length column, it would group everything together and show an error under length. We didn't want to fully expand the parts list, as we still want valves and the like grouped.

 

What we're doing now, although not entirely ideal, is opening a master pipe part file, save as -> save copy as (as save copy as also changes the part number) and giving it a tag on the end. i.e. -- 4000-5122 (J1), J being the spool, and 1 being the first time it's used in that spool. It separates all pipe so their lengths show, while keeping everything else grouped.

 

Again, not ideal, but it saves some grief.


Aaron Wilson
---------------------------------------
Inventor Professional 2022
AutoCAD 2020
Message 19 of 21

blair
Mentor
Mentor

Sounds like the Poster, is looking for Inventor to act as an ERP Software. Where you have your parts structure for the items you wish to build. You then create your Job for the required quantity to build, then run your Quantity Required report or have the system generate the Purchase Orders required for the scheduled build.


Inventor 2020, In-Cad, Simulation Mechanical

Just insert the picture rather than attaching it as a file
Did you find this reply helpful ? If so please use the Accept as Solution or Kudos button below.
Delta Tau Chi ΔΤΧ

Message 20 of 21

johnsonshiue
Community Manager
Community Manager

Hi Guys,

 

This is a very interesting discussion. Indeed, I think what Eli wants is more like an ERP system, essentially untangle the BOM from the assembly structure. For each "level", the quantity has to be right. For any given subassembly, the number of sub should be total regardless of levels and occurrences. For any given part, the quantity should also be total.

I just notice that OpenBOM has an app on Inventor App store for free. I have never used it before. It might be interesting to try.

Many thanks!



Johnson Shiue ([email protected])
Software Test Engineer