Face normals are being reversed when exporting from Rhino to Revit

Hello Pascal.

Yes they are. Everything looks good in Rhino at the export stage…

I’ve seen this result when I have a high edge tolerance on my solid. Revit won’t take any of Rhino’s sloppy slop when it comes to loose edges and sometimes when they’re close to failing they’ll appear inside out. You can use “what” to check an objects edge tolerance or use this script: Exposing Edge Tolerances

Hi Alexander - how are you getting these sloppy edge tolerances? How are the objects made?


Admittedly it’s usually my fault and I can sometimes pin down when it happened (although it’s hard to realize until its too late). I do a lot of gumball editing of surface edges and push/pulling of faces. That doesn’t seem to create it as long as my relative tolerance is set really fine. The project I was having edge tolerance issues with had a curved&faceted thing going on that was pretty hard to keep track of.

Basically my workflow has been to export a portion of my revit model and build little pieces to reimport (cabinets, weird walls, etc.). This goes great and I can get Revit solids but it’s just been pretty trying of my Rhino skills. Enough so that I’m having hesitance recommending others try it unless they check edge tolerances throughout the modeling process.

edit: I’d also say that with boolean modeling (which is what I like to default to for solid modeling) I get 0" edge tolerances which is swell. It’s only really when I do surface modeling that I get edge tolerances, which makes sense.

I’m not sure what you mean here. This should certainly not be the case, unless by ‘surface modeling’ you mean sub-object manipulation of faces in a polysurface - that can indeed lead to some edge problems.


no I mean extracting surfaces and building new faces.

I’ve actually found subobject manipulation to be fairly reliable.

In my mind (be it true or not) I’m solid modeling with suboject manipulation and booleans but then surface modeling when I extract surfaces to build new portions of my model. It’s just a particular workflow rhino5 has gotten me into.

Pretty typical of the Level of detail I’m building to.

Thanks for the avenue for investigation Alexander & Pascal.

I’m just getting going with Rhino, so I’ll try Boolean/Solid modelling & see how I get on. I’ll also try and investigate the edge-tolerance for my test model.

No luck though. I’ve set the model tolerance to as close to zero as it will allow. I’m also pretty sure that I’m exporting a Solid model & not surfaces. Same behaviour - on a cube shaped solid, three face normals are reversed in Revit.

I read Alexander saying that setting it close to zero will lead to problems…

Hello Wim.

Thanks for your reply. My new(bie) question now is: where/how do you set the edge tolerances? I’ve set the model’s absolute tolerance for lower tolerance (trying values from 1.0 to 0.1), but the face normals are still being reversed in Revit.

Looking into Alexander’s approach I couldn’t check edge tolerances on the solid cube using the ‘What’ command. When I extract surfaces from the solid I can check the edge tolerance for a surface & they come back as 0.00, despite the absolute tolerance setting.

From there I did a boolean union on the surfaces to get back to a solid. This time the ‘what’ command does return the 0.00 edge tolerance. Exporting this & importing it into Revit still has the reversed face normals.

Nope for revit I set my relative tolerance to .0000001 . Wish I knew another way. Edwin sorry for hijacking the thread. You’re saving from rhino as an SAT and then into revit without even exploding they’re inside out? I don’t think it’s your problem but have you tried using model in place masses instead of seperate masses? This workflow I know works (not that it’s what you want)

No worries Alexander.

Yes. I’m opening a new Conceptual mass family and importing the .sat file. From there I’m loading it into the project. Exploding the model turns it into a mesh, so that’s no good.

Importing the .sat into a model-in-place mass still returns faces with reversed normals. I wonder if it’s not something to do with Revit’s Conceptual Mass somehow. Are you using this workflow for other families?

I actually haven’t tried to set the relative tolerance so low, so will try that next.

Thanks again.

exploding actually won’t turn it into a mesh. ACIS is a solid / polysurface / nurb-like representation of your object so exploding it will allow you to push pull and parametrize its surfaces. You shouldn’t have to set the tolerance so low with a simple cube. Only during certain operations will your tolerance be applied to your object. During booleans and many others the tolerance (as I understand it) is effectively 0.

I have used the workflow for several families.

Thanks Alexander. You’re right… From the in-place model I can partially explode the import, but there’s no change to the model behaviour. Two out of four faces of the cube have reversed normals. I think I’ll try it with a couple of other family types to see if I can get it to work there. At least I can exclude my own Rhino export errors after that.

Just fyi, relative tolerance comes into play almost never in Rhino - the setting is removed from the next version of Rhino.


Pascal, yes I noticed that. It seems to be used when joining to determine the allowable edge tolerance which is why turning it down decreases edge tolerances. Rhino demands tighter tolerances and wont allow “bad” edge pairs to join.

More info here:




Thanks. I’ve read through that before so I’m not sure why I convinced myself relative tolerance was what does it. Maybe i just need to play more. For what it’s worth, /most/ times I haven’t had an issue and the workflow is actually really helpful. Recently I had a stubborn object that just wouldn’t import properly into revit (read: it couldn’t ‘explode’) and so I started trying to tease the source of the issue out of rhino. Perhaps it is only my absolute tolerance that needs to be set low. I’m convinced it’s edge tolerance that needs to be kept low though so whatever dictates that.

1 Like

A post was split to a new topic: Flipped normals going into Revit