I'm using I-logic to suppress components in an assembly. I've attached a screenshot with 3 suppressed components.
In the browser the parts are suppressed but in the BOM (items 6,7,9) they are not. Is there a piece of code for this?
Thanks much.
George
Supression does not remove a component from the BOM. Suppression and levels of detail are memory management tools. For example, if I have a huge assembly of tens of thousands of components, I might create a level of detail called “No Fasteners” in which all fasteners are suppressed. When I’m working with this LOD, Inventor doesn’t have to load all the fasteners into memory. The BOM, however, remains complete regardless of what LOD is active, as it should.
The proper way to remove the components from the BOM is to remove them from the assembly. If you must, an alternative: turn off visibility of unwanted components in the assembly (to hide them in assembly and drawing views), and changing each hidden occurrence's BOM structure to reference (to hide them in the BOM). If your drawing views use correct view reps and are linked, you shouldn't have too much trouble with this approach. Otherwise, you will see the unwanted components popping up in drawing views.
alewer is correct (albeit with a caveat that I'll get to in a moment) that suppression itself does not remove a component from the BOM. If you manually right-click/suppress a component, then you are only removing a component's visibility and its existence from your computer's memory. It will still exist in the Master LOD and, since the BOM references the Master LOD only, on the BOM.
However, suppression is not the topic of this thread!
The topic is instead iLogic's "Component.IsActive" function, which combines suppression with BOM Structure to alter both a component's physical visibility (via suppression) and the parts list visibility (via Reference BOM Structure). This is the workflow that gboshko is using to configure his assembly, and it DOES work as he wants it to when done correctly.
As for gboshko's problem, please see the attached screenshot. The Component.IsActive function was used to modify the activity state of each component via a set of Boolean parameters and the front end, and the BOM has updated accordingly. There's a little bit of Inventor clunkyness that requires the user to save after modifying the assembly before he can open the BOM, but the BOM always matches the assembly.
It would seem that gboshko is suppressing his components in some other way than the Component.IsActive function. Otherwise, his BOM would also function properly. If he is controlling his configuration state by switching between a variety of custom LOD's (which each has a combination of manually-suppressed components), then this is absolutely wrong.
Whether one agrees that this is the "proper" way to configure assemblies is up for debate, but it IS the way that AutoDesk intended that this function be used. It accomplishes the same as alewer recommended in his second paragraph, only it uses (suppression / LOD / BOMReference) instead of (visibility / View Rep / BOMReference). Both methods are workarounds to a persistent design flaw in Inventor, but both methods work.
Thank you all,
I've been using the method as described; Component isActive to suppress 3 components. Please see attached.
There is nothing up my sleeve.
@SteveX82 wrote:...iLogic's "Component.IsActive" function, which combines suppression with BOM Structure to alter both a component's physical visibility (via suppression) and the parts list visibility (via Reference BOM Structure). This is the workflow that gboshko is using to configure his assembly, and it DOES work as he wants it to when done correctly.
Thanks, I learned something today. Well explained.
As a test; manually unsuppress the three parts, then run your rule. We have found that if a part was manually suppressed during the development stage the ilogic suppress will not update the BOM structure. This situation is the only time I have seen the behavior you are describing.
-Shawn