Salome HOME
[bos #33060] EDF 26527 - remove extra-edges doesn't work
authorjfa <jfa@opencascade.com>
Fri, 10 Feb 2023 14:38:14 +0000 (14:38 +0000)
committerjfa <jfa@opencascade.com>
Fri, 10 Feb 2023 14:38:14 +0000 (14:38 +0000)
src/BlockFix/BlockFix_UnionFaces.cxx

index 15ed9da9b6fa84f04c9ae06f33a1b601119d8c92..294deb2245796d062e52873a92d1bdbba6125cc8 100644 (file)
@@ -91,6 +91,7 @@
 #include <Bnd_Box.hxx>
 #include <BRepBndLib.hxx>
 
+#include <Geom_TrimmedCurve.hxx>
 #include <Geom_Curve.hxx>
 #include <Geom_Line.hxx>
 #include <Geom_Circle.hxx>
@@ -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();