After cussing LODs for months I have decided to give in and see if I can make them work for me. I have an assembly that I am designing that has 3 possible options for manufacturing. Looks like a good place to use LODs to suppress items from the other options. Now I am attempting to make a drawing with a Parts List for one of the options but even with the components selected as referance and suppressed in the LOD shown in the drawing , all the components are showing in the Parts List. Short of setting the parts to suppressed or referance in the default or master LOD, what do I need to do to remove these parts from the parts list?
Solved! Go to Solution.
I think you need to be using View Representations rather than LOD. Parts Lists have a Filter option for the Assembly View Represenation, but not for the LOD.
Also, just a warning on the View Rep filter - it will only take things out of the list that are completely gone in that view rep, and won't adjust quantities.
For example: you have View Reps A and B. You have a part number 12345, of which there are a total of 5. Two are in Rep A, three in Rep B. Even with the filter on in the parts list, the list will show the total, which is 5. Unless something has changed (haven't used the filters in any version later than 2010), the only way to correct the quantities is with a manual override in the parts list.
What jtylerbc said is just fine, but you have to deal with the limitations that he/she mentioned. That said, you should be able to get it to work with LODs. We have a model that has several options, and we use component suppression (through iLogic, so it also sets the suppressed components to Reference BOM structure) to control the various options.
The drawing parts list (and indeed the assembly BOM) doesn't know what LODs are. It only knows the current state of the model.*
So, to get your parts list to show the way you want, you have to make sure your model is set to the correct LOD before you open the drawing. If you don't, the parts list will just show whichever state your model is in, regardless of whichever LOD your drawing views are set to.
You didn't mention if you were using iLogic to control all of this, but it sounds like it would be a nightmare to control without it. Note that the LOD doesn't keep track of the BOM structure of individual components, so if you are manually switching LODs between different options, you have to manually change the BOM structure of each component.
*I suspect that this is the underlying reason why there are so many conflicts with LODs when both the drawing and the model are open, and also with trying to edit the BOM on assemblies with LODs.
Edit: For our multi-option model that I mentioned, we only use one LOD under which all of the component suppression takes place. This makes dealing with the parts lists MUCH easier, as our model is always saved in the correct LOD. We just have to open the model, set our options, save it, close it, then open the drawing and the parts list is correct.
Given what I said above, I hate dealing with the issues of LODs--conflicts between drawings and assemblies, and trying to edit the BOM when an LOD is active.
It has given us so much headache over the years, that we are considering alternatives. We are investigating using view reps, but also using iLogic to set the BOM structure to reference for all invisible parts. This gives the benefits of component suppression, without the LOD issues. It might be a little extra coding, but it might be worth it.
Check out the following thread for more insight into this approach.
WOW just WOW, just when I thought LODs might actually be useful and I could use them..
I haven't had time to learn Ilogic and don't have the time to mess with it during our normal projects. I thought I bought a program where the programing was done for me, not one where I have to finish what was left undone.
I am simply trying to give my employer a couple of semi-accurate options so he can decide which one he would like to persue and have me finish up. I would like to nat have to go back and rework every BOM I give him so that what is in the option is what shows in the parts list.
I know these steps are fast and only take a little time but my boss does things on the back of a napkin and expects me to be almost as fast.
Thank you for your information guys, I was mistaken when I thought LODs were something that would be useful for me. I will have to look into view reps and see if I can get some benifit from them.
Like jtylerbc said, view reps have NO effect on the quantities displayed in the parts list. To use them effectively for what you described, you will also have to set the BOM structure of your hidden parts to reference. And, like I said, this whole process would be much more manageable through iLogic.
A note of advice--learn iLogic. If you work for short-sighted people who won't invest in training, then do it on your own time--it's completely worth it. iLogic is by far the best feature added to Inventor since 3D. It is extremely powerful, and your design work will be so much better and faster than ever.
Not sure if this will help, but you may want to look at iAssemblies... The way this might work is that you set up a "master" assembly with everything in it, then you create your different versions with sets of parts surpressed. I did a quick test for this (on IV 2009) and when you do drawings of the different versions, the BOM will show all the parts in the assembly. However it will show a quantity of zero for the components in that assembly that are suppressed for that version. I'm not sure if there is a way to filter these out of the BOM or not, but this may at least get you part of the way there.
As mentioned above, the iAssembly tools are the correct choice for creating configurations. LOD's are intended for memory manangment.
With that in mind, try this:
' set a reference to the assembly component definintion. ' This assumes an assembly document is open. Dim oAsmCompDef As AssemblyComponentDefinition oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition 'Iterate through all of the occurrences Dim oOccurrence As ComponentOccurrence For Each oOccurrence In oAsmCompDef.Occurrences 'check for and skip virtual components If Not TypeOf oOccurrence.Definition Is VirtualComponentDefinition Then 'set BOM as default if the component is visible If Component.Visible(oOccurrence.Name) = True Then Component.InventorComponent(oOccurrence.Name).BOMS
tructure = _ BOMStructureEnum.kDefaultBOMStructure 'set BOM as reference if the component is not visible ElseIf Component.Visible(oOccurrence.Name) = False Then Component.InventorComponent(oOccurrence.Name).BOMS tructure = _ BOMStructureEnum.kReferenceBOMStructure End If Else End If Next
This will set the BOM structure so that the visible component occurences won't list in the BOM.
I hope this helps.
Best of luck to you in all of your Inventor pursuits,
Did you find this reply helpful ? If so please use the Accept as Solution or Kudos button below.
OK OK, I will try to find the time to learn Ilogic. It will have to be on my own as I am at least a man short of being staffed at work but I will try to get at it.
Thank you for your help.
you never cease to amaize me with what you are able to do to help. Thank you my friend. I will give your programing a try and see if I can learn from it.
I tried your code as I have the same problem regarding the BOM.
I got this error message (attached)