Engineering typical design workflow

So I have been slowly working on features that implement more typical engineering design workflows. My goal is to integrate these as holistically and organically as possible. I want to leverage pre-existing features as much as possible. Features I would like to create:

Typical design tree:

analogous to solidworks/fusion. Sketch driven features. Haven’t done any ground work on this yet. I have thought of using the built-in history. I honestly don’t have much experience with the rhino history, as I currently use grasshopper for any history driven designs. So I might build this feature outside of the rhino history.

Parametric sketch constraints:

one of my biggest pains. I like to build the geometry first, then constrain it. My early experiments with this involve grasshopper definitions that utilize zombie kangaroo to constrain sketches, however these are not as reliable as I would like. Still figuring this out.

constraint based assemblies:

the idea I have for this is to utilize blocks and store the xforms in user text. It would be prudent to develop what ever constraint system used in the sketch constraints to also work with the blocks.

feature based parametric layout sketching:

God, I hate re-drawing dimensions. Ive played around with this a bit. it is easy to set something up with grasshopper inputs but I haven’t solved bringing this feature out into rhino proper because the rhino IDs like to change on me. Not to mention the weirdness of object space vs layout space.

extrusion tube construction:

my most fleshed out features only from current project necessity. There’s others out there like this. but are either paywalled or focused on architecture. build lines, select profile and fit the profile to the line. these are typically large assemblies so I wanted to be able to build everything off boxes and toggle box/brep display to be kind to my graphics card. still need to figure out the intersection cuts: butt, bevel, etc.

sheet metal design with bending:

also something that should be simple. just a thought currently but it should have all the typical bells and whistles of a typical sheet metal design; k-factor, corner relief, fold, unfold, etc.

If you are interested please let me know what features you would like to see included with this project. I am currently on my laptop but when I get to my desktop I will post with some grasshopper user object files that I have made for some of these features. all definitely still WIP.

2 Likes

Hi @pmpetros

One thing we need is parametric fillets. Maybe we could start with unfilleting and getting the model back to it’s non filleted state. In your plugin there could be a memory or copy held of the object before filleting would be great as well. I try to do this but I always forget at some point to keep copies. And if you could maybe a tool that unfillets and then extends surfaces and rejoins them to the original state of the model.

I’m thinking of at least getting something working for the fillet edge command and simple filleting to start with would be great for many basic designs.

Also history is a bummer because so many commands don’t support history. Like splitting a surface.

Lately I need to:
1 unroll a surface like a cup (I’m working on ceramics)
2 Design a pattern on a flat rectangular surface equal in length to the unrolled developed surface
3 flow that pattern along surf onto the unrolled surface of the cup then,
4 flow step 3 onto my non developed original surface, so far history supports all these steps, but then
5 I need to split the surface with my design and add colors/materials this is where history woefully breaks. I made need to tweak the original curves while seeing the cup surfaces update to make them adjust to the design or to the designers wish. Also any editing of original curves like moving them and other editing things will break history.

Better developing/unrolling of surfaces and doubly curved surfaces and an easier flow along surface command with less caveats would be welcomed by me. Currently applying patterns to curved surfaces using flow along surface still feels like a black art.

McNeel needs to up their game on the history side of things too and make many more commands support history and not break, I wish they would do this for V9.

RM

@3dsynergy I think the best way to handle all history would be to store the original operation in an internally linked block. Like I noted before, and what I suspect is happening when history breaks is when the UNID changes for rhino objects. It is the main reason why I have a hard time breaking out of grasshopper. One idea I haven’t had time to test is tagging each operation with a UNID. But for now I think storing the geometry made from each operation in its separate internal linked block is the way to go.

So with a fillet operation, I would imagine it would go something like this:

create sketch - create a block that contains a planar sketch

extrude - reference sketch block, extrude. create a block containing the Brep.

fillet edge - reference Brep block, reference UNID for edges in that block, fillet. create a block containing the filleted block.

with this, all previous geometry could still be referenced, I know that I have been in a situation where I have some corner that got filleted away, but still need to utilize that corner vertex for something else down the line.

This will definitely blowup the size of the rhino file, but history won’t be limited to sessions, and would open the door for iterations/configurations. BUT this will prevent the need for an external secondary data file. something I want to stay clear away from.

Thanks for the feedback!

Hi Pmpetros,

It would be fantastic if you could develop something in this direction “Parametric sketch constraints” & “constraint based assemblies”

Maybe you could use this approach, which has already been recommended here, so you don’t have to start from scratch?

2 Likes

Thanks all for the feedback. It’s growing increasingly difficult not to work on this right now. But school needs to come first for now.

In the mean time, here are some grasshopper User objects I have made for “weldments” All WIP, but all are open to edit. I made a quick and dirty example file. I really don’t have a lot of time right now. But these were all created in the intention of creating fencing and gates. Enjoy!

EDIT: the layout table component has an error that pertains to the Col widths. its a weirdness of processing tree branches. Will update later UPDATED THE TABLE COMPONENT: the Colwidths still need to be a flattened list even though the input type is tree. Scripts run at the highest logical loop through, which is this case is a tree. weird… I know, welcome to my life.

Tube Profile.ghuser (7.6 KB)

Seperate Rectangle.ghuser (3.1 KB)

Profile Dropdown.ghuser (2.2 KB)

Picket Rectangle.ghuser (3.7 KB)

klectic-python scripts.gh (76.3 KB)

Weldment.ghuser (5.9 KB)

Non-uniform offset rectangle.ghuser (3.3 KB)

Justification.ghuser (2.0 KB)

HSS Gauge.ghuser (2.3 KB)

Dimension.ghuser (10.1 KB)

Create Layout Table.ghuser (9.6 KB)

Bisect Rectangle.ghuser (4.2 KB)