mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-24 13:50:49 +03:00
0024595: STEP import missing surfaces
Modification to create natural bounds for face based on the spherical and Bspline surface and having only one bound represented by Vertex loop was made. According to the specification of ISO-10303 part 42: "If the face has only one bound and this is of type vertex_loop, then the interior of the face is the domain of the face_surface.face_geometry. In such a case the underlying surface shall be closed (e.g. a spherical_surface.)" - natural bounds are applied only in case if VertexLoop is only the one defined face bound. Update of test-cases according to the new behavior Test-case for issue #24595
This commit is contained in:
@@ -236,12 +236,7 @@ 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
|
||||
@@ -265,13 +260,14 @@ void StepToTopoDS_TranslateFace::Init
|
||||
if (GeomSurf->IsKind (STANDARD_TYPE(Geom_SphericalSurface)) ||
|
||||
GeomSurf->IsKind (STANDARD_TYPE(Geom_BSplineSurface)) )
|
||||
{
|
||||
if (!isExistOuter || FaceBound->IsKind(STANDARD_TYPE(StepShape_FaceOuterBound))) {
|
||||
if (NbBnd ==1 || 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;
|
||||
}
|
||||
}
|
||||
|
||||
if (//GeomSurf->IsKind(STANDARD_TYPE(Geom_SphericalSurface)) ||
|
||||
|
Reference in New Issue
Block a user