0024601: Unwanted spheres shown after Step-Import
[occt.git] / src / StepToTopoDS / StepToTopoDS_TranslateFace.cxx
index 4a8d6e8..116bc2b 100644 (file)
@@ -221,6 +221,12 @@ void StepToTopoDS_TranslateFace::Init
 //  Standard_Boolean fautcoudre =
 //    ( (NbBnd == 2) && (GeomSurf->IsUClosed() || GeomSurf->IsVClosed()) );
 
+  Standard_Boolean isExistOuter = Standard_False;
+  for (Standard_Integer i = 1; i <= NbBnd; i++) {
+    FaceBound = FS->BoundsValue(i);
+    if (FaceBound->IsKind(STANDARD_TYPE(StepShape_FaceOuterBound)))
+      isExistOuter = Standard_True;
+  }
   for (Standard_Integer i = 1; i <= NbBnd; i ++) {
 
 #ifdef OCCT_DEBUG
@@ -244,9 +250,11 @@ void StepToTopoDS_TranslateFace::Init
       if (GeomSurf->IsKind (STANDARD_TYPE(Geom_SphericalSurface)) ||
           GeomSurf->IsKind (STANDARD_TYPE(Geom_BSplineSurface)) )
       {
-        BRepBuilderAPI_MakeFace mf (GeomSurf, Precision());
-        for (TopoDS_Iterator it(mf); it.More(); it.Next()) 
-          B.Add (F, it.Value());
+        if (!isExistOuter || FaceBound->IsKind(STANDARD_TYPE(StepShape_FaceOuterBound))) {
+          BRepBuilderAPI_MakeFace mf (GeomSurf, Precision());
+          for (TopoDS_Iterator it(mf); it.More(); it.Next()) 
+            B.Add (F, it.Value());
+        }
 
         continue;
       }