BOM to show solid (non mechanical) elements of mechanical block

I have a set of parametric mechanical blocks , each containing both component inserts and regular solids. (Maybe not the ideal structure but for various reasons this is best for me.)
When creating a BOM, the components show up fine, but I'd like to have some of the solids (with names) show up too - along with their respective parameters. I've tried the various BOM filters etc but no success yet.


  • Hi Scott,

    For the solids to appear in the Bill Of Materials, they need to be classified as a Mechanical Component.
    Since you have solids in your drawing that you want to appear in the BOM, perhaps you can use the BMFORM command to do this.

    If you launch the BMFORM command, then select a solid and accept. You will then have the option to choose how it will be saved. The Solids you have are saved locally in your file, so you can choose the "Local" option in the command dialogue. Then select an insertion point and the solid will be a Mechanical component.

    Now it will appear in the BOM. Also since it is a Mechanical component you can give it information such as description, material, etc.
    This is the best solution I can think of at the moment. Hopefully it does not negatively affect the behavior of your solids. If it does please let me know and maybe we can find another solution.

  • Hi Fredrik, thanks for getting back. Yes - unfortunately the solid is fully constrained. So it can't be formed into a component, otherwise it won't function properly. Ideally, I would like to give the solid a name which then shows up in the BOM, along with parameters I select. Is there a way to achieve this?

  • Hi Scott,

    I think it would be useful to see an example of the issue you are experiencing. Do you have a file or can you create an example, that you can share here?

    Attached are 3 files I quickly made. I made these just to test for myself. One where 2 solids (boxes) are constrained in terms of sizing and to each other.
    In another file, one of the boxes are converted to a Mechanical component, and the functionality remains the same.
    In the last file, both of the boxes are converted to Mechanical components and the functionality is the same as when they were solids. The only difference is that the Mechanical browser is structured differently.
    So I think it would be useful to see what you are experiencing.

  • Hi Fredrik, these are good examples to show the issue I have. In all 3 cases, the solid doesn't show up in the BOM, but the component always does.
    Here is an example of mine to give a better idea of what I'm doing. In this case, there are 4 components that show up in the Bom, but the door doesn't because it is just a solid. This is the part I want to show with width and height in the BOM for manufacturing purposes.

  • Hi Scott, apologies for the delayed response.
    On inspection of your models I see that you have the hole features grouped as Mechanical components and are inserted as sub-assemblies into a main assembly. The main assembly being "UpperLeft-003".
    In this main assembly I see you have created the solids that make up the panels, and you have created constraints that controls the sizes of these solids. And it works while they are solids.

    However, I believe here is where the issue lies when trying to convert them to a Mechanical solid. The way the constraints and solids are currently structured there are a lot of dependencies across solids and between constraints and parameters. As I see it, I'm afraid the best and most reliable solution is to re-structure the assembly and parts.
    Currently the main assembly contains a lot of bodies and constraints that control their sizes, as well as constraints that assemble the bodies, as well as parameters to control some of these values. Out of all of these dependencies and connections, some will lose their dependency when the components involved are formed as a component. And in turn loses some of their functionality.

    I would suggest to create each panel as a part itself. F.ex. you open a new drawing for the door, and here you can create the constraints to control the size of this door. Then you repeat this for each of the remaining panels. This way you can insert the panels in the main assembly and constrain them together. And you can connect the parameters in the main assembly with the constraints/parameters in the panel part. This will create a much tidier Main assembly that will contain each part as a mechanical component, the assembly constraints, and parameters to control the sizing of the assembly. Also this will will allow you to see each panel in the BOM Manager where you can extract specific values for each part.

    The result of doing it this way will ensure a much more reliable and stable assembly, for BOM creation and potential future changes of the assembly.

    I hope this explanation is understandable, if not please let me know and I will try to clarify or create some examples.

  • Hi Fredrik, thanks so much for taking the time to look at this - much appreciated.

    I know my assembly is is not a typical construction and I'm very open minded about any changes that could make it function better.
    However: I did try the method you suggest early on, and had problems.

    1) If I make the cabinet sides as individual parts, for ex, I can't then add hole features to them ie. shelf holes or drawer slide holes. The hole features only work on solids so I would have to open the part and add the holes there. This gives less flexibility for making changes.
    2) If I do open each part and add the holes there, I will have level 2 nested components. Previously this gave me a lot of trouble with the nested components not changing with the main component when inserted, or behaving unpredictably.

    I'm open to the possibility that it was mistakes on my end that caused some of these problems, and I do want the BOM to show the individual parts so I'll give it another try with the way you suggest. Hopefully it works but either way I will report back. If not, my original question was is there a way to list solids in BOM. Still curious if there is a workaround there.

  • Hi Scott,

    Hi Scott,

    Apologies again for the delayed response. I wanted to create an example of how I would create your model, but I have not been able to allocate the time for this....

    1) Indeed you would need to open the part to add the holes. I can see how it might give less flexibility for placement and managing the holes, however it will create a very rigid and structured set-up when done correctly. One of the reasons it works this way is because of the generation of the BOM table. The BOM will recognize the hierarchical component structure which can be retrieved in the BOM table. So the best way is to create constraints that control each of the components and the placements of the holes for example. Then you can create parameters that the constraints will be linked to, and when the component is inserted in an assembly you can still manage these parameters and link them to parameters in the assembly file and/or in other sub assemblies/components that are inserted.
    2) I am afraid I am not familiar with or have not experienced the issues you describe here. Do you have any examples of this?

    To answer your original question, a solid needs to be a mechanical component to appear in the BOM Manager. What I have described through these posts is the most reliable way to do this and keep the functionality expected. So as long as the parts are mechanical components, perhaps you can find a compromise when working with the constraints and parameters, however this is difficult for me to imagine what would work best other than what I have suggested I'm afraid.

  • ScottC
    edited October 6

    Hi Fredrik, I followed your suggestion and created separate mechanical components for each part. Attached is the resulting box. I think I've discovered where my problems lie.

    From my previous post: "If I do open each part and add the holes there, I will have level 2 nested components. Previously this gave me a lot of trouble with the nested components not changing with the main component when inserted, or behaving unpredictably."

    So, in this new sub assembly, there are several nested arrays. I have a suppress parameter to turn them off when inserting and moving in the final assembly. All is well when I have them turned off. If I turn on the nested arrays though, and edit one or all of the sub assemblies, things can go awry. Parts lose connection unpredictably, and I can get the dreaded "invalid node" message. I thought it was my method of construction of these sub assemblies that was causing problems, but now I suspect it's this: Changing the parameters of a nested array in multiple sub assemblies.

    Do you have any thoughts on using arrays this way? Is it too much for the program to calculate? Or what is causing these problems? If I could do away with the arrays I would but I need to vary the number of elements and this is the only way I know of to do this.

    Scott 488.2K
  • Hi Scott, keep in mind that beta release notes are shared in confidence with beta testers.

  • Hi Owen, my mistake. I'm not a beta tester - I just did a search and found the info. I know for next time though - thanks for the heads up.

  • Hi Scott,

    I can see there is a problem with the structure in the models you share. There are a lot of constraints and parameters that depend on each other, which can create some complex geometries, but it also makes it easier to create "corrupted" constraint dependencies. It is a bit overwhelming and time consuming to analyze every constraint and parameter connection in your drawing to point out what are the causes for this.

    So I created a much simpler example with some mechanical components, constraints, parameters and arrays. I think the models I have shared still show a good way to structure the components.

    In the main assembly "Parametric cabinet" you will see I only have a few parameters. These parameters are linked to parameters found in each sub-part of the assembly. Meaning that I can control the behavior of the parts, from the assembly. Also in the assembly I have constraints that control the placement of the parts, meaning that I have no constraints in the assembly that control the geometry of each part.
    In each part is where you will find the constraints that control their geometry, as well as parameters that can be linked to the assembly. The Arrays are also located in the parts and controlled within the part, or with parameters that can be linked to the assembly.

    I hope this helps?

  • Thanks Fredrick - this does help and I'll try to incorporate your ideas into a simpler assembly, without dependent constraints.

Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!