Invisible face in solid

Hi.
this solid brep is created (in grasshopper) and it is valid, however one face is always invisible even though the normal is facing outward. any idea?

Several things you could try: Check that your document tolerance is set to something sensible, if not, correct the situation then recreate the object and bake it.
Next, if that didn’t fix things, use SelBadObjects to see if it is “bad”, i.e. invalid. If so, use the What or List command to see more information about why it is invalid. This can help in pinpointing the problem.

If it is valid, explode it and select the face that is invisible (maybe work in wireframe mode if that is easier). Then untrim the boundary with ‘keep trimming objects’ ON, and re-trim with the edge curves. This will re-create the face and create its render mesh. Hopefully this will fix it. If not, please post your file so others can take a look what is going on.

1 Like

Thanks Menno, the object is valid and SelBadObjects does not return anything. The screenshot is from the exploded brep. After un-trim, the face showed up!.
I am posting the code which I use to generate the brep. There are few commented lines which they fix the problem if I uncomment them. What I concluded that Brep.JoinBreps() takes the original face orientation and generates an non-oriented mesh while the resulted solid is properly oriented.

public static Brep[] CreateSolidExtrusion (IEnumerable<Curve> planarCurves,Vector3d vector, double tolerance)
        {
            var cap1 = Brep.CreatePlanarBreps(planarCurves,tolerance);
            if (cap1 == null)
                return new Brep[0];
            //foreach (Brep b in cap1)
            //    if (b.Faces[0].NormalAt(0, 0) * vector > 0)
            //        b.Flip();
            var cap2 = cap1.Select(b =>
                  {
                      Brep copy = b.DuplicateBrep();
                      //copy.Flip();
                      copy.Translate(vector);
                      return copy;
                  }).ToArray();
            var allSurfaces = cap1.Concat(cap2).ToList() ;            
            allSurfaces.AddRange(planarCurves.Select(c => Extrusion.CreateExtrusion(c, vector).ToBrep()));
            return Brep.JoinBreps(allSurfaces, tolerance);
        }