]> OCCT Git - occt.git/commitdiff
0032964: Modeling Algorithms - 2d Offset sometimes 'split' straight edges SALOME_9_14_a2_V7_8_0
authorastromko <astromko@opencascade.com>
Fri, 17 May 2024 08:58:06 +0000 (08:58 +0000)
committerjfa <jfa@opencascade.com>
Fri, 8 Nov 2024 10:52:32 +0000 (10:52 +0000)
Implemented avoiding force cut of an edge in case of simple edge (that contains just 1 curve).

src/BRepFill/BRepFill_OffsetWire.cxx
tests/bugs/modalg_5/bug25704_6
tests/bugs/modalg_8/bug32964 [new file with mode: 0644]

index befe34193cf7110e03a4822fbcda2a5819d42e79..c0fbdade11e31ee6294f4f59e309d8c50549b6ee 100644 (file)
@@ -1198,7 +1198,9 @@ void BRepFill_OffsetWire::PrepareSpine()
       // Cut
       TopoDS_Shape aLocalShape = E.Oriented(TopAbs_FORWARD);
       //  Modified by Sergey KHROMOV - Thu Nov 16 17:29:29 2000 Begin
-      if (nbEdges == 2 && nbResEdges == 0)
+      Handle(BRep_TEdge) TEdge = Handle(BRep_TEdge)::DownCast(E.TShape());
+      const Standard_Integer aNumCurvesInEdge = TEdge->Curves().Size();
+      if (nbEdges == 2 && nbResEdges == 0 && aNumCurvesInEdge > 1)
         ForcedCut = 1;
       //  Modified by Sergey KHROMOV - Thu Nov 16 17:29:33 2000 End
       nbResEdges = CutEdge (TopoDS::Edge(aLocalShape), mySpine, ForcedCut, Cuts);
index 64a98dafa8d4891820c5b1a2cbf4dc437ea958cc..e9e0e2abcd137d42f74e7cd0d983a86812942dda 100644 (file)
@@ -17,7 +17,7 @@ if [catch { openoffset resoffset a 5 5 i } ] {
 checkshape result 
 checksection result
 
-  checknbshapes result -vertex 4 -edge 3 -wire 1 -face 0 -shell 0 -solid 0 -compsolid 0 -compound 0 -shape 8
+  checknbshapes result -vertex 3 -edge 2 -wire 1 -face 0 -shell 0 -solid 0 -compsolid 0 -compound 0 -shape 6
 }
 
 smallview
diff --git a/tests/bugs/modalg_8/bug32964 b/tests/bugs/modalg_8/bug32964
new file mode 100644 (file)
index 0000000..a4f3009
--- /dev/null
@@ -0,0 +1,14 @@
+puts "============="
+puts "0032964: Modeling Algorithms - 2d Offset sometimes 'split' straight edges"
+puts "============="
+
+pload MODELING
+vertex p1 -90 40 0
+vertex p2 40 40 0
+vertex p3 40 -90 0
+edge e1 p1 p2
+edge e2 p2 p3
+wire w1 e1 e2
+openoffset oo w1 1 40
+checknbshapes oo_1 -vertex 3 -edge 2 -wire 1 -shape 6
+checkview -display oo_1 -2d -path ${imagedir}/${test_image}.png