I wonder why the Pufferfish “Offsrf” component gives me such a strange result while the Rhino equivalent works fine.
Isn’t it the same underlying low-level tool (or whatever programmers call this) ?
Screwy Solid offset.gh (46.5 KB)
I wonder why the Pufferfish “Offsrf” component gives me such a strange result while the Rhino equivalent works fine.
Isn’t it the same underlying low-level tool (or whatever programmers call this) ?
Taking an even more basic example :
In Fusion :
I’m stricken by how Rhino can accomplish prowess on complex geometry, and somehow fail to do basic stuff like that.
Hi !
Thanks, I wasn’t aware of Sasquatch ; I’ll give it a try.
I finally used the GH Offset Surface component and built all the side walls.
That allowed me to have split at tangents which is not the case here.
Hi @osuire, Pufferfish is not meant to offset polysurfaces that way, only polysurface faces which is a different thing according to Rhinocommon, that’s why I named it offset surface and described that it can offset polysurface faces. I’ve explained that in a few topics that you’ve been in
The actual offset Brep wasn’t added until Rhino 6 (Pufferfish supports rhino 5). You can find it in many plugins like Parakeet. Also it is directly in Rhinocommon as a one liner here (R6 only) https://developer.rhino3d.com/api/RhinoCommon/html/M_Rhino_Geometry_Brep_CreateOffsetBrep.htm
Apologies again if the description may have thrown you off!
Hi Michael,
Now I remember. Ugh…
The problem is that I need this functionality in GH, and the polysurfaces I deal with will “Offset solid” kind of OK in Rhino.
OK, here’s my mini-rant to programmers who point egg-heads like me to Rhinocommon code.
I tried many times copy-pasting these in C# components, but there’s always something wrong or missing.
See, that’s exactly why I hate traditional coding : the goddamn syntax and all the little nerdy tidbits that allow it to actually work.
So if you don’t mind, could you please encase this Rhinocommon function (or class, or sub-program, or whatever you super coders call it) inside a little C# component that I can readily use ?
Here you go
brepoffset.gh (5.7 KB)
I agree it would be very nice if there was an easier way to turn a single function into a gh script component. Just creating and naming all the inputs and setting their type hints is quite a lot of clicking for something that could perhaps be automatic.
In R5, this error from C# component:
- Error (CS0117): ‘Rhino.Geometry.Brep’ does not contain a definition for ‘CreateOffsetBrep’ (line 71)
Yes, that’s expected. The function was added for R6
Hi Daniel
I don’t think @osuire means it that way. I sense it has to do with the code simply not working because you need many additional steps than just ctrl+c - ctrl+v the line of code into the component. Maybe a simple “how-to” from Rhino would be nice.
“How to”
Ah yes, perhaps I was projecting my own wishes a bit there. I dream of something that could automatically turn library functions into components, but I agree that it would be helpful to have a guide to the current process for turning a function that exists in RhinoCommon into a Gh component.
Others might chime in, but I’ll have a go…
Thank you Daniel !
You might save me a full year of studying C# right there !
So if we know the name of the function we want to call, we start typing that:
The names you give these inputs don’t affect the behaviour, as long as they are of the correct type.
We need to also create and name inputs for these on the Grasshopper component by right clicking the input names (adding more inputs if needed with the little + icon that appears when you zoom in)
We can also set the Type hint here, making sure we have all the inputs needed for the function.
When we open the script editor after doing all this, we should be able to see all these names and types we’ve just created at the top like this:
The one extra little complication here is these last 2 arguments which have the keyword ‘out’ before them. We need to create these variables first so the function can assign to them. We know they are both of type double array, so we can do this by adding this line at the start:
Brep[] outBlends,outWalls;
This is just a very short and incomplete guide, but hopefully of some use to get started with.
Hi Daniel,
Could you add an option to force crease splitting at tangents ?
The CreaseSplitting option is “Enabled” in Rhino, but it seems to be ignored here.
Can you post the geometry?
Hi Daniel,
FYI for the brep Brep.Faces.SplitFacesAtTangents should be called.
I’m not familiar with C# for else I’d add it myself.
-Willem
Not in front of a computer right now, but if you make a random closed polyline, and fillet the corners, you will get an example.