From 63e04ef7a7d83e52fc010bf95f88a9ce1d8aeebc Mon Sep 17 00:00:00 2001 From: jfa Date: Fri, 10 Feb 2023 14:38:14 +0000 Subject: [PATCH] [bos #33060] EDF 26527 - remove extra-edges doesn't work --- src/BlockFix/BlockFix_UnionFaces.cxx | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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();