Did we ever get a solution to substitute Rhinoworks? Do we have a target audiance for such plugin?


I was chatting with two other colleges from other companies here in the region, talking about Software solutions and etc. And we got to an agreement, the only thing lacking in Rhino is the ability to make mechanical assemblies to check for interference and stuff.

I know we have Bongo, but it seen like it is more about animation than assemblies, like, you cannot move the part to a position based on the restrictions you give it. Only make then behave in some way based on the relations you give them.

So I have two questions:

Did we ever got something similar, to create assemblies and check for interference and position objects based on other objects in a way that could be easily moved around without breaking stuff apart, and move doors and handles and pistons while the anchor object stays in place?

If we do not have such plugin solution, would you have interest if someone would develop such plugin? Would your workflow benefit from it?


1 Like

I suspect that any Rhino user who does mechanisms would love to have something like this. Trouble is I think the majority of users don’t do mechanisms. Lots of architects, jewelers, industrial designers, but my personal opinion is that mechanical designers are a small minority of Rhino users.

@bobmcneel, @brian: Am I even close on this? Do you keep any stats on these kinds of categories? Are you willing to share with users?

A solution similar to Rhinoworks would be so useful for mechanical design.

1 Like

We are actually actively looking into the idea of developing the constraint/connections work developed for Bongo 3.0 into a general mechanical constraints system for Rhino 8+. I’m not going to promise anything because it is very early days, but if you want to see what we’re working on, take a look at the Bongo 3.0 WIP.



There have been a few very recent updates to Bongo which might be able to handle some of the cases you’re referring to. First, you can manipulate the individual pieces and update the rest of the structure based on them. Here’s an example:

I’ve also recently added the ability to set parameters like joint angles or translations as well. Here’s another example of an angle being set between the blue and purple parts.

Furthermore, joint limits can also be set. Interference analysis is also possible and still being improved. In addition these are fully compatible with Bongos physics system allowing the dynamics to be analyzed, collisions detected, etc. Anchors can be set with a type of connection in Bongo that clamps the object in place, or one object to another.

Can you expand a bit more on what you mean by moving a part to a position based on restrictions? If there’s a gap in Bongo to solve these types of problems I’d like to look at improving the functionality to fill it.


Think of it as a orient3pt or align concentric / axial that creates a bond between two objects, one of then being the anchor object that if I move around moves everything like it was grouped, while if I try to move the other objects they are locked in the bond you just created. So I could make each arm of the video you showed in its own file with its own layout, and have an “assembly file” where I would import every piece as a block and fit things together in a straight forward manner.
The same command that places things together already create the bonds between the objects.

Also the videos that you showed are already close to what I would expect, but could you move the fixed in place pin to, lets say, align it with a 3d object and everything goes together and still works together?

or maybe could I import that file as block into a bigger assembly and use it as a “dynamic block” ?
with simpler commands to move step by step on the movement range and check for collisions, or maybe to make a full rendering of the object in place and its functionality inside the boat.

I could see your mechanism being used as a folding table in a boat, so I could place the file you showed together with a copy of it and a table top in a file, then get this file and insert it into the boat assembly file, position in accordingly, and then press “Check collision” or something, where it would move inside the planned range, checking for collisions between the mounted table file and the boat file.

So my final file hierarchy would be, where → indicates a Rhino insert block:

Individual parts of the table mechanism with its current layouts → assembly of said mechanism with its movement → assembly of whole table, with an linear array of the mechanism and both having the same state → table inserted into boat file to check for collisions and mounting position.

I am already in love with the other stuff of Bongo 3.0 WiP being showed in the forum, it really looks like it will be a solution for these mechanical builds we all wish for. It just need to be block compatible IMO and have some way of syncing or something between selected blocks (so all doors don’t open at same time if you update the hinge or something)

The way you describe creating the bonds is quite similar to how Bongo currently works. You have to align them before creating the bond, but using the geometry to infer that may be a possibility at some point. Creating an assembly file might be out of the scope of the work in Bongo but it is an interesting idea.

There is no base pin you can attach them all to move the entire mechanism but it is a good idea. It gets a little muddy when objects are bonded together and form groups. I internally keep track of these groups but they can break and I can’t anticipate where a connection is made. I like the idea of putting them in blocks. I’ve added a +1 for the feature request here. I did some experiments with it but I can’t promise the feature will be completed or worked on further.

As for collision detection, I handle this when the connections calculation is done. When a collision is found I draw an indication in the viewport. This is still being worked on but it is able to be tested in the current WIP. I currently draw the intersection in red but this is likely to change. It should still be just as noticeable.

1 Like

I am trying to find a reseller that has bongo 2.0 student edition listed on their site so I can get access to bongo 3.0 WiP but I had no luck so far(the one that I got rhino does not have bongo listed, so I am waiting for a response and the others don’t have a webstore), I think I will have to test my luck with the international purchase via McNell Miami website and wish that the dollar does not go up until next credit card charge :stuck_out_tongue:

I used the term “group” just to try to give an idea of what I was trying to say.

This collision detection would be awesome already, maybe an additional warning log could be made, that would register the relative position of when the interference occurs, so we could select it and it would show the highlight and the position the interference took place, similar to the “Show Naked Edges” Command, but for movement collisions.

I see that the block option would be the way to go, it would be more robust as well, since ,afaik, the block is inserted referencing between the origin of the file and the block, then the mechanical bongo model would be referenced in its own origin point. if I can transform your collision mechanical assembly into a block and insert on another file (or even in the same file) so I can move and rotate it to position, it would be more than enough. It would be great if i could create the bonds between two blocks instead of poly surfaces, but lets take one step at the time.

I think the idea of a command to show the intersections is also a good idea. I logged it here. I’ve also looked more into making connection groups be instanced in blocks. Currently there are some technical issues in the way. I’m looking into it more but won’t make any promises.

Do you generally care about the self collisions in the assembly or also the other geometry in the scene? The current implementation is purely within the mechanism but I imagine it may be useful to also see if you collide with an outside part like a wall.

Do you have any example models of assemblies you can share? It’d be useful from our end to have a real model that we can use to put this stuff through its paces. The more complex the better. If you do you can upload it here or confidentially here.

1 Like

Sadly I do not have access to the most complex stuff yet, but what comes to mind is the assembly of outboard motors, checking for clearance with their range of movement, having multiple motors side by side.

It could be a good use case for blocks, since you could make 1 motor movement and the others would be copies of itself, you have two rotation freedoms and the collision check would need to happen as self intersection, intersection with other instances of itself and intersections with other bodies.

ps. Sorry for taking so long to answer, stuff got into the way