Orient Mesh creates Invalid Mesh


I am using grasshopper with Rhino 7 WIP.

I am doing a series of scaling and orienting for a few meshes together (separate closed meshes that don’t touch and aren’t joined or grouped) and through one of the orient buttons one of the meshes becomes invalid (why?) and then by the next orient button that mesh has just become null. Why are the orient buttons processing the meshes at all, other than to transform them? And is there a way, other than cross my fingers and pray, to ensure this doesn’t happen again?

The mesh becomes invalid through the ‘Orient Direction’ button, and then it becomes null in the ‘Rotate 3D’ button. I’ve attached an example of the issue below. I am seeing an invalid mesh with the Orient direction and then a null for that same mesh after it has gone through the rotate 3d.

orient-rotation example.gh (631.1 KB)

It’s definitely not desirable behavior, but this appears to be a Rhino rather than a Grasshopper issue. If you perform an Orient command in Rhino, the same mesh in your collection becomes invalidated, and in the same way:

This has to do with the fact that one of the faces in the mesh is smaller than tolerances can handle: (the length of the face’s boundary is 0.000000337 units). You’ll notice that any transform applied to this mesh invalidates it.

1 Like

@dave_stasiuk the updated Pufferfish Rebuild Mesh algo we talked about fixes it :smiley: (compared with Mesh Edit).

orient-rotation example Fix.gh (640.5 KB)

1 Like

Thanks @dave_stasiuk and @Michael_Pryor ! It only lets me pick one of your posts as solution but I think they are both solutions.


same is happening to me … pain in the ass

Happens for Breps with Rhino7 and Grasshopper too. But when geometries are exported to Rhino6, orientate as expected in Grasshopper.

Is there a way to fix this issue nowadays?

Hi @K4rl33,

The attached pretty much does what Rhino’s Orient command does, sans the scaling.

orient-rotation example.gh (628.7 KB)

– Dale