]> OCCT Git - occt.git/commitdiff
0032964: Modeling Algorithms - 2d Offset sometimes 'split' straight edges
authorastromko <astromko@opencascade.com>
Fri, 17 May 2024 08:58:06 +0000 (08:58 +0000)
committerdpasukhi <dpasukhi@opencascade.com>
Sun, 19 May 2024 15:03:09 +0000 (16:03 +0100)
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 ee611c1f09d794d31a150ae9616a6fcd03c7433a..dae07a5bb30f7bcd9b26294ccef1705050762df9 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