Offsetting surfaces with clean (non-intersecting) joints

I have this model which was made using Grasshopper (I no longer have the Grasshopper file).
I want to offset these baked surfaces to create thickness for them with clean joints and edges, the methods I tried, created intersecting surfaces. I will be importing this file after creating the required thickness into Revit as walls and roofs (treated as generic models).

2 3

The grey surfaces are pyramids (metal panels) and the green surfaces are going to be glass.

This is an envelope for a building.

Any method using Grasshopper or Rhino is appreciated.

Thank you.

UP. It’s urgent.

If it is urgent do you not search through the commands in Rhino and components in Grasshopper in parallel? Or try to make it manually if you don’t know an automated approach?

I bet if you just type “thick” you’ll get the command.

I wonder what were these methods you have tried?

In the end, if you expect proper help here it is always good to attach a file. It may not be the whole thing but a piece big enough that any work done on it you will be able to apply on the whole thing.

I have tried offsetting the surfaces using both Rhino and Grasshopper. This is the result I get.

Also, just because it is urgent that doesn’t mean I haven’t tried doing it. If you’re implying that I did not even try and are asking questions then that’s not true. And no, typing “thick” doesn’t hint at any command, sorry.

Envelope.3dm (3.4 MB)

Here is the file. This is only my second time using the forum so excuse me if I did not know that I should expect help only if I post a file or a sample.

Thank you for your time.

1 Like

What would be the expectation? This is pretty normal result as far as I know, from the softwares I use. You’re simply thickening the surfaces.

If you have to do thickness compensation then you should consider it before making the ‘offset’. Rhino is a surface modeller, not a solid modeler like say Autodesk Inventor or DS Solidworks. (some apps of CATIAv6 also does thickness compensation)

I do not know of plugins for Grasshopper that does thickness compensation. If they don’t exist you’ll have to do quite some scripting to accomplish that.
Some hints, although they are in the Grasshopper category, they can be applied for each category.

Your surfaces when offset will not have simple edges. That is because of the basic geometry, not a limitation of the software.



@ivelin.peychev I assume you are disagreeing with my statement. How is the basic geometry a limitation of the software? Or do you mean the basic geometry limits the results of the software?

Any offset surface of IAmYousef’s base surfaces will not have the all edges of the adjacent offset surfaces meeting at a single point. That is because the base surfaces have varying angles between pairs of adjoining surfaces, not because of how software calculated the offset surfaces.

1 Like

It’s because the software doesn’t account to that - Thickness compensations. And that is because it’s just a “basic geometry” not a solid modeling tool.

See, If offsets (with solid option) and extrudes(with solid option) had the same behavior as simple curve offsets (where since Rhino6 the curves are automatically trimmed and re-joined). Then this limitation of the software would be dealt with, and he’d be able to make his model faster.

What I’m saying is that solids should be part of the basic objects in RhinoCommon API, then all this will be much easier.

What do you mean by “thickness compensation”? How is that different than calculating the opposite surface when thickness is added to a surface such as is done by OffsetSrf in Rhino with Solid=Yes? Whether the final representation of a thick object is a set of joined 2 parameter surfaces as in Rhino or is a single 3 parameter solid as in some CAD software the geometry of the opposite surface needs to be calculated.

Imagine the following image is of surfaces intersected by a plane

Now, this is how Rhino, and any other surface modeller does ‘solids’

And this is how solid modelers do it with thickness compensation:

This is like Bevels but it adjusts taking other objects into account.
If this is considered even fillets and chamfers done on solid objects would not cause so much trouble.

But all that will require significant programming to implement with the current RhinoCommon API. You can certainly implement it, but you could not modify it easily.

The difference is not because of internal representation as sets of “surfaces” of as “solids”. The difference is because of the logic the software uses when “solids”, however represented, intersect. Either behavior could be programmed with the objects represented as a set of “surfaces” or as “solids”. I don’t believe the complexity of the software would be significantly different with either representation.

Thickening (shelling) is a job best done with meshes. Check out Meshlab has many algorithms for this kind of stuff specifically for things like 3d printing that mesh verts and topology just make easier as opposed to Nurbs which have trim data and an underlying grid.

For Revit have you tried bringing it in as is and making wall thickness in Revit? Revit is pretty good at thickening these kind of things as it is a boolean based system.

In Rhino, certainly. :slight_smile:

I don’t know anything about Revit.

Well not Rhino, in general :slight_smile: meshlab isn’t Rhino but has some magic algos.

If uniform thickness is not important then using meshes is a good way to add thickness to an object.

If uniform thickness is important, such as in the original posters project where the panels will be metal and glass which (presumably) have uniform thickness, then a different method than using meshes may be needed.

If uniform thickness is important, such as in the original posters project where the panels will be metal and glass

In that case then the idea is incorrect, likely there would be some gap tolerance between each face, each face would offset in thickness on its own, and there would be some system of connection between each panel like clamps or plates, especially if different panels will be different materials.

Some examples:

In 2d the offsets of the adjacent segments of a polyline can be intersected to get a single point. It’s not so simple in 3d though. For a pair of adjacent planar faces, their parallel offsets intersect in a line, but when you have more than 3 faces around a vertex, the lines of intersection between the pairs of adjacent offset faces don’t generally intersect in one point.
This isn’t anything to do with software, it’s geometry.

1 Like