BOM Rhino 7

Hey All,

How’s the development of a BOM table going? Anyone?

Apologies if there’s a dedicated thread to this.



What would the entity/object definition be to qualify for being on the BOM list? Any PolySurface, Named PolySurface, Block? Other criteria?

Would be interesting to give it a try if having a concrete definition on what entities to put in the list. Should one explicitly add items to the BOM or populate it “implicitly” based on some criteria?

// Rolf


I think taking a look at what @Gijs has done is a good place to start. I have not taken a good look at how this works yet, but it appears from the comments that he is using blocks. Ideally, I would like to use both block, polysurface.

workflow something like:

a. BOMGENERATE command

b. Pop-up window comes up says, “how many table columns do you need” I input “5” for example
and then it creates 5 fields for me. Then it asks me to name the column headings/titles and gives me 5 places to ender.

I say

  1. “IDENTITY #” (see @Gijs bubble call outs)
  2. “QTY”
  5. “ENVELOPE” (size/bounding box if possible)

(Ideally I’d like to have as many (columns) as I want and call them whatever I want)

I still have not gotten into USERDATA but I’m thinking the BOMGENERATE columns could also create USERDATA “stuff” which I could then “tag” or something to my objects.

It would be cool if BOMGENERATE had an option to Create either a table with columns or assign to object.
So, after you create the table. you could then run command BOMITEM click your object, and then start filling out the “rows”

  1. IDENTITY : “1” (autopopulates number for me) (then I can use this as my bubble call out)
  2. QTY : It will calculate how many of same
  3. material : I will tell it what material it is and it will begin to record a list of materials as I input -this will eventually become a drop down list
  4. DESCRIPTION: I tell it what it is
  5. ENVELOPE: it will calculate the bounding box – but I’m not sure how this is gonna work if the object is rotated, it might be nice to be able to pick a length or something - for cut length parts

Does any of this make sense?

Yes, it makes sense. :slight_smile:

@Gijs has done some impressing work.

I guess you want the BOM list to be exported (Excel or csv) as well, not only drawn on the layout?

// Rolf

Correct, I think most if not all packages will require you to have a part file in order to generate a BOM, but indeed it would be nice if also parts could be included that are just named objects. But then how do you define an object as a part. Or a group of objects… To me a block makes most sense, as it is a single countable entity, plus the required logic (counting, bounding box in plane the object was created) is already in place. Also it should be fairly easy to extend what I already made with more columns e.g. dimensions, material, version etc.

At the moment I am using bubble callouts only for the objects that have been picked by the user, but auto numbering is probably a safer way for the generated BOM. In that case it can just populate a BOM with all available instances it can find, independent on the bubble callouts.

@RIL do you think you can make program an interactive table, like for instance in SolidWorks? Do you use other packages beside Rhino that you can study as reference?

For CAD I use only Rhino.

// Rolf

Where I can find this? I am interested to create some BOMs inside Rhino and I need a viable solution.

I made that up as a way to describe what I mean, sorry for the confusion

Yes Gijs has !

Good to know, it’s difficult for me to explain.
Yes, export would be nice.

Yea, that’s interesting about the names! Would this interfere with blocks within blocks within blocks?

Is there a way to add more INPUT into the property of an object whether polysrf or block? see screenshot
or is that an internal rhino thing? I would love to add my own “text” properties to that panel!

I’ve always wondered if you could use USERDATA to have additional fields like “NAME” that I can always see in properties of said object? So I don’t always have to double-click on a block or some selection command.

In my head, this all then could be used to generate boms/tables

No this is not possible. Your only option is to use the user text fields. If you already assigned key/values to all your objects, then the Attribute User Text panel should display all the information you need when selecting an object.


Just a collection of BOM related items.

And it isn’t particularly difficult to write a company specific solution in rhinoscript or rhinopython user attribute user text.

1 Like

Thank you so much.

I had no clue Peter’s tools had the BOM. It looks great, will be looking into this soon. Obsessed with some of his other stuff.


Also take a look at TABL_

I don’t know how easy it is to work with this but maybe you can add your button feature to work with this and also be able to add more custom fields to this…?

I would love to use this right away, however the NAME FIELD does not generate on a block within a block which is the problem.

Also, there’s a checkbox for “comments” which I’m not sure where that is - but maybe I can use this for my description and get rid of name even though I would love to have my part# under name - but I work exclusivly with blocks, so crying just a little bit here.


Is it open source?

No clue but it’s a free license. Does that mean no?

Oh wait!

I left a comment in this thread…