diff --git a/src/BlockFix/BlockFix_UnionFaces.cxx b/src/BlockFix/BlockFix_UnionFaces.cxx index 15ed9da9b..294deb224 100644 --- a/src/BlockFix/BlockFix_UnionFaces.cxx +++ b/src/BlockFix/BlockFix_UnionFaces.cxx @@ -91,6 +91,7 @@ #include #include +#include #include #include #include @@ -814,6 +815,13 @@ bool getCylinder (Handle(Geom_Surface)& theInSurface, gp_Cylinder& theOutCylinde Handle(Geom_SurfaceOfRevolution) aRS = Handle(Geom_SurfaceOfRevolution)::DownCast(theInSurface); Handle(Geom_Curve) aBasis = aRS->BasisCurve(); + + while (aBasis->IsKind(STANDARD_TYPE(Geom_TrimmedCurve))) { + Handle(Geom_TrimmedCurve) aTc = + Handle(Geom_TrimmedCurve)::DownCast(aBasis); + aBasis = aTc->BasisCurve(); + } + if (aBasis->IsKind(STANDARD_TYPE(Geom_Line))) { Handle(Geom_Line) aBasisLine = Handle(Geom_Line)::DownCast(aBasis); gp_Dir aDir = aRS->Direction(); @@ -833,6 +841,13 @@ bool getCylinder (Handle(Geom_Surface)& theInSurface, gp_Cylinder& theOutCylinde Handle(Geom_SurfaceOfLinearExtrusion) aLES = Handle(Geom_SurfaceOfLinearExtrusion)::DownCast(theInSurface); Handle(Geom_Curve) aBasis = aLES->BasisCurve(); + + while (aBasis->IsKind(STANDARD_TYPE(Geom_TrimmedCurve))) { + Handle(Geom_TrimmedCurve) aTc = + Handle(Geom_TrimmedCurve)::DownCast(aBasis); + aBasis = aTc->BasisCurve(); + } + if (aBasis->IsKind(STANDARD_TYPE(Geom_Circle))) { Handle(Geom_Circle) aBasisCircle = Handle(Geom_Circle)::DownCast(aBasis); gp_Dir aDir = aLES->Direction();