diff --git a/Geo/GModelIO_OCC.cpp b/Geo/GModelIO_OCC.cpp index 77c07b6bb3d9a8c7cf95be6d1f9d8d6f9c5de9bd..d7b499185f6f022bde22525e188dddcfcd27fa81 100644 --- a/Geo/GModelIO_OCC.cpp +++ b/Geo/GModelIO_OCC.cpp @@ -108,7 +108,7 @@ void OCC_Internals::addShapeToLists(TopoDS_Shape _shape) if(fmap.FindIndex(face) < 1){ fmap.Add(face); - for(exp3.Init(exp2.Current(), TopAbs_WIRE); exp3.More(); exp3.Next()){ + for(exp3.Init(exp2.Current().Oriented(TopAbs_FORWARD), TopAbs_WIRE); exp3.More(); exp3.Next()){ TopoDS_Wire wire = TopoDS::Wire(exp3.Current()); if(wmap.FindIndex(wire) < 1){ wmap.Add(wire); diff --git a/Geo/OCCFace.cpp b/Geo/OCCFace.cpp index 471c1b166de44b817bea772a7ac37a75b28311ef..69bf0b272d2e085ba6c06ebb164455c70de6284a 100644 --- a/Geo/OCCFace.cpp +++ b/Geo/OCCFace.cpp @@ -42,7 +42,7 @@ #endif OCCFace::OCCFace(GModel *m, TopoDS_Face _s, int num) - : GFace(m, num), s(_s) + : GFace(m, num), s(TopoDS::Face(_s.Oriented(TopAbs_FORWARD))) { setup(); model()->getOCCInternals()->bind(s, num); diff --git a/Geo/OCCRegion.cpp b/Geo/OCCRegion.cpp index 44644cd995880557b9056b8296d6b9cb369c90fb..34a20d124a260bfd93a6c082548a403d4575d0c8 100644 --- a/Geo/OCCRegion.cpp +++ b/Geo/OCCRegion.cpp @@ -36,14 +36,20 @@ void OCCRegion::setup() for(exp3.Init(shell, TopAbs_FACE); exp3.More(); exp3.Next()){ TopoDS_Face face = TopoDS::Face(exp3.Current()); GFace *f = model()->getOCCInternals()->getOCCFaceByNativePtr(model(),face); - if(f){ + if(!f){ + Msg::Error("Unknown face in region %d", tag()); + } + else if (face.Orientation() == TopAbs_INTERNAL){ + Msg::Info("Adding embedded face %d", f->tag()); + embedded_faces.push_back(f); + } + else{ l_faces.push_back(f); f->addRegion(this); } - else - Msg::Error("Unknown face in region %d", tag()); } } + Msg::Debug("OCC Region %d with %d faces", tag(), l_faces.size()); }