BOM (Bill of Materials) - Grasshopper and Rhino

There´s been a lot of BOMs request for Rhino, I´be been researching and haven´t found any solution for what I need.
I want to share some of my experiences, and results.

This thread is for exchanging BOM definitions and ideas.

I hope it´s useful.


This is a simple BOM Generator I made.

Plug ins utilized:
Human - Treefrog - LunchBox

Instructions for Rhino File Generator

  1. Open the GH Definition
  2. Name the Objects
  3. Give Attributes to objects
  4. Assign objects in Grasshopper
  5. Stream contents from the last Pannel and save it.

Next Steps:

  1. Rename pieces with the exact same properties with the same piece name.
  2. Add Quantities
  3. Make Hi level entries.
  4. Generate Categories
  5. Format Spreadsheet
    BOM _Generator_Jamagax.3dm (258.5 KB)
    BOM (62.8 KB)

Feel Free to modify the Def and share your results.
Happy Boming!!!


One existing commercial option is the Weight/Cost tracking module of our Orca3D plug-in, which allows the user to define a library of materials (point, curve, surface, and solid materials) with weight and cost “densities” (e.g., kg/m^2 for surface objects, or $/foot for material or labor cost for curve objects). You can read more here: Weight & Cost – Orca3D, LLC . Reports can be generated, and exported to PDF or Excel. It’s been part of Orca3D since 2008.

Orca3D is focused on marine design, but this particular module will work with any type of object. If there was interest, we could look into separating it out for more general use.


I’m curious to see how many others express interest in BOMs. Having worked in an office with a bunch of SolidWorks users who regularly produced BOMs for the purchasing department, I certainly see how useful they are from a workflow aspect. It would certainly be a nice addition to Rhino.


At one point, I had a Grasshopper script to generate BoMs of all the hardware we would need for projects. Unfortunately, while I had it backed up, I think I lost that hard drive in a move…+1 for cloud storage going forward.

Basic functionality was to take the find all blocks on a layer called Hardware (actually “::Hardware::” with asterisks to get all of the possible layers), get the name of each block, find the quantity of that block in the file, and use the block name as the description, supplier, and part number codes.

So for example, if the block was called “10-24 x 1 FHCS, Tamper Resist (McMC 12345A789)”, the script would populate the description field with “10-24 x 1 FHCS, Tamper Resist”, the supplier field with “McMaster-Carr” (I had aliases set up for speed), and the part number as “12345A789”. It was super useful, except it would always change the order if I re-ran the script. I was going to implement a hardware tag somehow and sort by that, but haven’t got around to it yet…

1 Like

Hi, I always love Orca, but i´m no boat designer, so I haven´t use it.
For what I can see It will be easy to adapt the Weight and Cost module to make a BOM generator.
It will be great if the module can:

  1. Rename objects automatically by name, numbers or both with suffix and prefix. or insert CODE for name of the item.
  2. Organize in Items and parts using Hi and Low Level Items.
  3. Organize items and parts in categories.
  4. To have the option to Include “Document User Text” and/or “Attribute User Text”. - or a description for each item.
  5. Auto Calculate - Num of items - with the option to use the same name on same parts or pieces.
  6. Auto Calculate - Length, Area or Volume and Weight or Center of Gravity.
  7. Bounding Box measures per item or part.
  8. Ability to export to Excel PDF, CSV or TAB formats.
  9. Ability to insert the table in a Rhino file.
  10. Calculate Price
  11. Calculate Labor
  12. Add formulas
  13. Markup Price - Discount.

This are some of the things I need on my diary workflow.
I´ll be happy to extend my experiences with you if you like.

Thank you.


Are there any news about it?
It could be useful to develop an integrated qto plugin for rhino.
Thank you

1 Like

I bumbed into this topic since I’m also looking for a way to automate the massing of rhino models and extract quantites and fundamental properties. I have made a rough start (not ready for publishing yet), using mostly grasshopper components, but I rather write my own component to have less spaghetti on the canvas


I do use a lot of BOMs generation, so for me it can be very useful.

1 Like

This definition looks very promising; however, I had to downgrade Elefront to 4.2.2, and I have 3 white components that I suspect are Pufferfish objects but unfortunately provide no further clues. What are these components?

Sorry about the late response, they are PufferFish - RoundD (Round to Decimal Place).
I hope it works for you