]> OCCT Git - occt-copy.git/commitdiff
corrections
authorisn <isn@opencascade.com>
Tue, 16 Jan 2018 13:16:12 +0000 (16:16 +0300)
committerisn <isn@opencascade.com>
Thu, 18 Jan 2018 13:09:31 +0000 (16:09 +0300)
88 files changed:
src/BRepFill/BRepFill_Generator.cxx
src/BRepFill/BRepFill_Generator.hxx
src/BRepOffsetAPI/BRepOffsetAPI_ThruSections.cxx
src/BRepOffsetAPI/BRepOffsetAPI_ThruSections.hxx
src/BRepTest/BRepTest_SweepCommands.cxx
tests/thrusection/grids.list
tests/thrusection/not_solids_locked/A1
tests/thrusection/not_solids_locked/B1
tests/thrusection/not_solids_locked/C1
tests/thrusection/not_solids_locked/D1
tests/thrusection/not_solids_locked/F1
tests/thrusection/not_solids_locked/G1
tests/thrusection/not_solids_locked/H1
tests/thrusection/not_solids_locked/I1
tests/thrusection/not_solids_locked/J1
tests/thrusection/not_solids_locked/K1
tests/thrusection/not_solids_locked/L1
tests/thrusection/not_solids_locked/M1
tests/thrusection/not_solids_locked/N1
tests/thrusection/not_solids_locked/O1
tests/thrusection/not_solids_locked/P1
tests/thrusection/not_solids_locked/Q1
tests/thrusection/not_solids_locked/R1
tests/thrusection/not_solids_locked/S1
tests/thrusection/not_solids_locked/T1
tests/thrusection/not_solids_locked/U1
tests/thrusection/not_solids_locked/V1
tests/thrusection/not_solids_locked/W1
tests/thrusection/not_solids_locked/W8
tests/thrusection/solids_locked/A1
tests/thrusection/solids_locked/A2
tests/thrusection/solids_locked/A3
tests/thrusection/solids_locked/A4
tests/thrusection/solids_locked/A5
tests/thrusection/solids_locked/A6
tests/thrusection/solids_locked/A7
tests/thrusection/solids_locked/A8
tests/thrusection/solids_locked/A9
tests/thrusection/specific/N5 [new file with mode: 0644]
tests/thrusection/specific/N6 [new file with mode: 0644]
tests/thrusection/specific_locked/A1
tests/thrusection/specific_locked/A2
tests/thrusection/specific_locked/A3
tests/thrusection/specific_locked/A4
tests/thrusection/specific_locked/A6
tests/thrusection/specific_locked/A7
tests/thrusection/specific_locked/A8
tests/thrusection/specific_locked/B1
tests/thrusection/specific_locked/B2
tests/thrusection/specific_locked/B3
tests/thrusection/specific_locked/B5
tests/thrusection/specific_locked/B6
tests/thrusection/specific_locked/B7
tests/thrusection/specific_locked/B9
tests/thrusection/specific_locked/C1
tests/thrusection/specific_locked/C2
tests/thrusection/specific_locked/C4
tests/thrusection/specific_locked/C5
tests/thrusection/specific_locked/C6
tests/thrusection/specific_locked/C8
tests/thrusection/specific_locked/C9
tests/thrusection/specific_locked/D1
tests/thrusection/specific_locked/D3
tests/thrusection/specific_locked/D4
tests/thrusection/specific_locked/D5
tests/thrusection/specific_locked/D7
tests/thrusection/specific_locked/D8
tests/thrusection/specific_locked/D9
tests/thrusection/specific_locked/E1
tests/thrusection/specific_locked/E2
tests/thrusection/specific_locked/E3
tests/thrusection/specific_locked/E4
tests/thrusection/specific_locked/E6
tests/thrusection/specific_locked/E7
tests/thrusection/specific_locked/E8
tests/thrusection/specific_locked/F1
tests/thrusection/specific_locked/F2
tests/thrusection/specific_locked/F3
tests/thrusection/specific_locked/F5
tests/thrusection/specific_locked/F6
tests/thrusection/specific_locked/F7
tests/thrusection/specific_locked/F9
tests/thrusection/specific_locked/G1
tests/thrusection/specific_locked/G2
tests/thrusection/specific_locked/G4
tests/thrusection/specific_locked/G6
tests/thrusection/specific_locked/N5 [new file with mode: 0644]
tests/thrusection/specific_locked/N6 [new file with mode: 0644]

index cd8ee6dfc333b569ab0a4cd29a7deb6562dc47c3..70ead961f3b8069f35e5ca2bcfce85ba5154ce6c 100644 (file)
@@ -613,45 +613,37 @@ void BRepFill_Generator::Perform()
       Standard_Boolean degen2
         = BRep_Tool::Degenerated(anOrEd2);
 
-      if ( degen1 ) {
-        //if (!myOldNewShapes.IsBound(anOrEd1)) //?? multiple coping
-        {
-          TopoDS_Shape aLocalShape = anOrEd1.EmptyCopied();
-          Edge1 = TopoDS::Edge(aLocalShape);
-          //   Edge1 = TopoDS::Edge(ex1.Current().EmptyCopied());
-          //   aLocalShape = ex1.Current();
-          //   TopExp::Vertices(TopoDS::Edge(aLocalShape),V1f,V1l);
-          TopExp::Vertices(anOrEd1,V1f,V1l);
-          V1f.Orientation(TopAbs_FORWARD);
-          B.Add(Edge1,V1f);
-          V1l.Orientation(TopAbs_REVERSED);
-          B.Add(Edge1,V1l);
-          B.Range(Edge1,0,1);
-          myOldNewShapes.Bind(anOrEd1, Edge1);
-        }
-        //else
-        //  Edge1 = TopoDS::Edge(myOldNewShapes(anOrEd1));
+      if ( degen1 ) 
+      {
+        TopoDS_Shape aLocalShape = anOrEd1.EmptyCopied();
+        Edge1 = TopoDS::Edge(aLocalShape);
+        //     Edge1 = TopoDS::Edge(ex1.Current().EmptyCopied());
+        //     aLocalShape = ex1.Current();
+        //     TopExp::Vertices(TopoDS::Edge(aLocalShape),V1f,V1l);
+        TopExp::Vertices(anOrEd1,V1f,V1l);
+        V1f.Orientation(TopAbs_FORWARD);
+        B.Add(Edge1,V1f);
+        V1l.Orientation(TopAbs_REVERSED);
+        B.Add(Edge1,V1l);
+        B.Range(Edge1,0,1);
+        myOldNewShapes.Bind(anOrEd1, Edge1);        
       }
       else {
         Edge1 = TopoDS::Edge(anOrEd1);
       }
 
-      if ( degen2 ) {
-        //if (!myOldNewShapes.IsBound(anOrEd2))
-        {
-          TopoDS_Shape aLocalShape = anOrEd2.EmptyCopied();
-          Edge2 = TopoDS::Edge(aLocalShape);
-          //   Edge2 = TopoDS::Edge(ex2.Current().EmptyCopied());
-          TopExp::Vertices(anOrEd2,V2f,V2l);
-          V2f.Orientation(TopAbs_FORWARD);
-          B.Add(Edge2,V2f);
-          V2l.Orientation(TopAbs_REVERSED);
-          B.Add(Edge2,V2l);
-          B.Range(Edge2,0,1);
-          myOldNewShapes.Bind(anOrEd2, Edge2);
-        }
-        //else
-        //  Edge2 = TopoDS::Edge(myOldNewShapes(anOrEd2));
+      if ( degen2 ) 
+      {
+        TopoDS_Shape aLocalShape = anOrEd2.EmptyCopied();
+        Edge2 = TopoDS::Edge(aLocalShape);
+        //     Edge2 = TopoDS::Edge(ex2.Current().EmptyCopied());
+        TopExp::Vertices(anOrEd2,V2f,V2l);
+        V2f.Orientation(TopAbs_FORWARD);
+        B.Add(Edge2,V2f);
+        V2l.Orientation(TopAbs_REVERSED);
+        B.Add(Edge2,V2l);
+        B.Range(Edge2,0,1);
+        myOldNewShapes.Bind(anOrEd2, Edge2);
       }
       else {
         Edge2 = TopoDS::Edge(anOrEd2);
@@ -857,17 +849,24 @@ void BRepFill_Generator::Perform()
 
       if (!myMutableInput)
       {
-        const TopoDS_Shape* aNewEd1 = myOldNewShapes.Seek(Edge1);
-        if (aNewEd1)
-          Edge1 = TopoDS::Edge(*aNewEd1);
-        else if (aFirstWire && !degen1 && (IType != 4 || BRep_Tool::SameParameter(Edge1) || BRep_Tool::SameRange(Edge1)))
-          Edge1 = CreateNewEdge(Edge1, myOldNewShapes, Wire1, aModifWires);
-
-        const TopoDS_Shape* aNewEd2 = myOldNewShapes.Seek(Edge2);
-        if (aNewEd2)
-          Edge2 = TopoDS::Edge(*aNewEd2);
-        else if (!degen2 && (IType != 4 || BRep_Tool::SameParameter(Edge2) || BRep_Tool::SameRange(Edge2)))
-          Edge2 = CreateNewEdge(Edge2, myOldNewShapes, Wire2, aModifWires);
+        if (!degen1) //if true=>already empty-copied
+        {
+          const TopoDS_Shape* aNewEd1 = myOldNewShapes.Seek(Edge1);
+          if (aNewEd1)
+            Edge1 = TopoDS::Edge(*aNewEd1);
+          else if (aFirstWire && (IType != 4 || BRep_Tool::SameParameter(Edge1) || BRep_Tool::SameRange(Edge1)))
+            //if such expression is true and mutableInput is false => pre-copy the edge to prevent a following modifying (see code below)
+            Edge1 = CreateNewEdge(Edge1, myOldNewShapes, Wire1, aModifWires);
+        }
+
+        if (!degen2)
+        {
+          const TopoDS_Shape* aNewEd2 = myOldNewShapes.Seek(Edge2);
+          if (aNewEd2)
+            Edge2 = TopoDS::Edge(*aNewEd2);
+          else if (IType != 4 || BRep_Tool::SameParameter(Edge2) || BRep_Tool::SameRange(Edge2))
+            Edge2 = CreateNewEdge(Edge2, myOldNewShapes, Wire2, aModifWires);
+        }
       }
 
       // set the pcurves
@@ -975,9 +974,13 @@ void BRepFill_Generator::Perform()
       // complete myMap for edge1
       if (! (degen1 && IType == 4))
       {
+        TopoDS_Edge aREd = anOrEd1;
+        if (degen1)
+          aREd = Edge1; //??
         TopTools_ListOfShape Empty;
-        if (!myMap.IsBound(Edge1)) myMap.Bind(Edge1,Empty);
-        myMap(Edge1).Append(Face);
+        if (!myMap.IsBound(anOrEd1)) 
+          myMap.Bind(anOrEd1,Empty);
+        myMap(anOrEd1).Append(Face);
       }
 
       tantque = ex1.More() && ex2.More();
@@ -990,11 +993,19 @@ void BRepFill_Generator::Perform()
   }
 
   //all vertices from myShell are the part of orig. section wires
-  //add edges from the myShell which can be safely updated to reshaper?? (i.e. already empty-copied/newly created)
   if (myMutableInput)
     BRepLib::SameParameter(myShell);
   else
   {
+    TopTools_DataMapIteratorOfDataMapOfShapeShape itM(myOldNewShapes);
+    for (;itM.More();itM.Next())
+    {
+      const TopoDS_Shape& aK = itM.Key();
+      if (aK.ShapeType() != TopAbs_EDGE)
+        continue; //additional check, should be edge anyway
+      const TopoDS_Shape& aVal = itM.Value();
+      myReshaper.Replace(aK, aVal);
+    }
     BRepLib::SameParameter(myShell, myReshaper );
     myShell = TopoDS::Shell(myReshaper.Apply(myShell));
   }
@@ -1014,7 +1025,7 @@ void BRepFill_Generator::Perform()
     for (;anExpE.More();anExpE.Next())
     {
       const TopoDS_Shape& aCurE = anExpE.Current();
-      const TopoDS_Shape& aNSEdge = Modified(aCurE);
+      const TopoDS_Shape& aNSEdge = ResultShape(aCurE);
       B.Add(aNewW, aNSEdge);
     }
 
@@ -1063,7 +1074,7 @@ const TopTools_DataMapOfShapeListOfShape& BRepFill_Generator::Generated() const
 //function : Modified
 //purpose  : 
 //=======================================================================
-TopoDS_Shape BRepFill_Generator::Modified (const TopoDS_Shape& theShape) const 
+TopoDS_Shape BRepFill_Generator::ResultShape (const TopoDS_Shape& theShape) const 
 {
   const TopoDS_Shape* aDSh = myOldNewShapes.Seek(theShape);
   TopoDS_Shape aNsh = aDSh ? *aDSh : theShape;
@@ -1076,15 +1087,6 @@ TopoDS_Shape BRepFill_Generator::Modified (const TopoDS_Shape& theShape) const
   return aNsh;
 }
 
-//=======================================================================
-//function : IsModified
-//purpose  : 
-//=======================================================================
-Standard_Boolean BRepFill_Generator::IsModified (const TopoDS_Shape& theShape) const
-{
-  return myOldNewShapes.IsBound(theShape) || myReshaper.IsRecorded(theShape);
-}
-
 //=======================================================================
 //function : SetMutableInput
 //purpose  : 
@@ -1098,7 +1100,7 @@ void BRepFill_Generator::SetMutableInput(const Standard_Boolean IsMutableInput)
 //function : GetMutableInput
 //purpose  : 
 //=======================================================================
-Standard_Boolean BRepFill_Generator::GetMutableInput() const
+Standard_Boolean BRepFill_Generator::IsMutableInput() const
 {
   return myMutableInput;
 }
index 0f902bf1543ebe0059736c8f6d50b04463a3caa4..0a8883815303a2cbd36a714152b49312d5c98926 100644 (file)
@@ -58,15 +58,17 @@ public:
   //! <SSection>  of a  section.
   Standard_EXPORT const TopTools_ListOfShape& GeneratedShapes (const TopoDS_Shape& SSection) const;
 
-  //! Returns a modified shape
-  Standard_EXPORT TopoDS_Shape Modified (const TopoDS_Shape& theShape) const;
-
-  //! Check if shape have been modified
-  Standard_EXPORT Standard_Boolean IsModified (const TopoDS_Shape& theShape) const;
+  //! Returns a modified shape in the constructed shell,
+  //! If shape is not changed (replaced) during operation => returns the same shape
+  Standard_EXPORT TopoDS_Shape ResultShape (const TopoDS_Shape& theShape) const;
 
+  //! Sets the mutable input state
+  //! If true then the input profile can be modified 
+  //! inside the operation
   Standard_EXPORT void SetMutableInput(const Standard_Boolean IsMutableInput);
-
-  Standard_EXPORT Standard_Boolean GetMutableInput() const;
+    
+  //! Returns the current mutable input state
+  Standard_EXPORT Standard_Boolean IsMutableInput() const;
 
 
 protected:
index 819eada33781911ee613ca305bbfc9d7a2fc2e3e..dcf4f45f8219239d34adabcbe1925657d29a22c6 100644 (file)
@@ -515,7 +515,7 @@ void BRepOffsetAPI_ThruSections::CreateRuled()
   //?? should we clean myBFGenerator in some other places??
   myBFGenerator.Nullify();
   myBFGenerator = new BRepFill_Generator();
-  myBFGenerator->SetMutableInput(GetMutableInput());
+  myBFGenerator->SetMutableInput(IsMutableInput());
   //  for (Standard_Integer i=1; i<=nbSects; i++) {
   Standard_Integer i;
   for (i=1; i<=nbSects; i++) {
@@ -555,10 +555,8 @@ void BRepOffsetAPI_ThruSections::CreateRuled()
       TopoDS_Wire wire2 = TopoDS::Wire(myWires.Last());
 
       //myBFGenerator stores the same 'myWires'
-      if (myBFGenerator->IsModified(wire1))
-        wire1 = TopoDS::Wire(myBFGenerator->Modified(wire1));
-      if (myBFGenerator->IsModified(wire2))
-        wire2 = TopoDS::Wire(myBFGenerator->Modified(wire2));
+      wire1 = TopoDS::Wire(myBFGenerator->ResultShape(wire1));
+      wire2 = TopoDS::Wire(myBFGenerator->ResultShape(wire2));
 
       myShape = MakeSolid(shell, wire1, wire2, myPres3d, myFirst, myLast);
 
@@ -600,19 +598,19 @@ void BRepOffsetAPI_ThruSections::CreateRuled()
 
       TopTools_MapOfShape MapFaces;
       if (degen2){
-        TopoDS_Vertex Vdegen = TopoDS::Vertex(myBFGenerator->Modified(TopExp::FirstVertex(TopoDS::Edge(edge2))));
+        TopoDS_Vertex Vdegen = TopoDS::Vertex(myBFGenerator->ResultShape(TopExp::FirstVertex(TopoDS::Edge(edge2))));
         for (it.Initialize(MV.FindFromKey(Vdegen)); it.More(); it.Next()) {
           MapFaces.Add(it.Value());
         }
       }
       else {
-        for (it.Initialize(M.FindFromKey(myBFGenerator->Modified(edge2))); it.More(); it.Next()) {
+        for (it.Initialize(M.FindFromKey(myBFGenerator->ResultShape(edge2))); it.More(); it.Next()) {
           MapFaces.Add(it.Value());
         }
       }
 
       if (degen1) {
-        TopoDS_Vertex Vdegen = TopoDS::Vertex(myBFGenerator->Modified(TopExp::FirstVertex(TopoDS::Edge(edge1))));
+        TopoDS_Vertex Vdegen = TopoDS::Vertex(myBFGenerator->ResultShape(TopExp::FirstVertex(TopoDS::Edge(edge1))));
         for (it.Initialize(MV.FindFromKey(Vdegen)); it.More(); it.Next()) {
           const TopoDS_Shape& Face = it.Value();
           if (MapFaces.Contains(Face)) {
@@ -622,7 +620,7 @@ void BRepOffsetAPI_ThruSections::CreateRuled()
         }
       }
       else {
-        for (it.Initialize(M.FindFromKey(myBFGenerator->Modified(edge1))); it.More(); it.Next()) {
+        for (it.Initialize(M.FindFromKey(myBFGenerator->ResultShape(edge1))); it.More(); it.Next()) {
           const TopoDS_Shape& Face = it.Value();
           if (MapFaces.Contains(Face)) {
             myEdgeFace.Bind(edge1, Face);
@@ -1306,7 +1304,7 @@ BRepOffsetAPI_ThruSections::Generated(const TopoDS_Shape& S)
       TopTools_IndexedMapOfShape Emap;
       TopoDS_Shape aNewS = S;
       if (myIsRuled && !myBFGenerator.IsNull())
-        aNewS = myBFGenerator->Modified(S);
+        aNewS = myBFGenerator->ResultShape(S);
       const TopTools_ListOfShape& Elist = VEmap.FindFromKey(aNewS);
       TopTools_ListIteratorOfListOfShape itl(Elist);
       for (; itl.More(); itl.Next())
@@ -1340,7 +1338,7 @@ BRepOffsetAPI_ThruSections::Generated(const TopoDS_Shape& S)
             TopTools_IndexedMapOfShape EmapOfSection;
             TopoDS_Shape aWsec = myWires(IndOfSec);
             if (myIsRuled && !myBFGenerator.IsNull())
-              aWsec = myBFGenerator->Modified(aWsec);
+              aWsec = myBFGenerator->ResultShape(aWsec);
             TopExp::MapShapes(aWsec, TopAbs_EDGE, EmapOfSection);
             TopoDS_Edge NextEdge;
             for (itl.Initialize(EElist); itl.More(); itl.Next())
@@ -1367,13 +1365,12 @@ BRepOffsetAPI_ThruSections::Generated(const TopoDS_Shape& S)
     for (Standard_Integer inde = 1; itw.More(); itw.Next(),inde++)
     {
       FirstEdge = TopoDS::Edge(itw.Value());
+      if (myIsRuled && !myBFGenerator.IsNull())
+        FirstEdge = TopoDS::Edge(myBFGenerator->ResultShape(FirstEdge));
       if (inde == Eindex)
         break;
     }
 
-    if (myIsRuled && !myBFGenerator.IsNull())
-      FirstEdge = TopoDS::Edge(myBFGenerator->Modified(FirstEdge));
-
     //Find the first longitudinal edge
     TopoDS_Face FirstFace = TopoDS::Face(AllFaces(Eindex));
     FirstFace.Orientation(TopAbs_FORWARD);
@@ -1570,7 +1567,7 @@ void BRepOffsetAPI_ThruSections::SetMutableInput(const Standard_Boolean IsMutabl
 //function : GetMutableInput
 //purpose  : 
 //=======================================================================
-Standard_Boolean BRepOffsetAPI_ThruSections::GetMutableInput() const
+Standard_Boolean BRepOffsetAPI_ThruSections::IsMutableInput() const
 {
   return myMutableInput;
 }
index cbd8db5c2a8e925ba40a27e2725e53883a38bd57..dc7b8a5fb1bda06e765f6610ee9b8c73f8651960 100644 (file)
@@ -146,6 +146,9 @@ public:
   //! Returns the Face generated by each edge of the first wire
   Standard_EXPORT TopoDS_Shape GeneratedFace (const TopoDS_Shape& Edge) const;
 
+  //! Sets the mutable input state
+  //! If true then the input profile can be modified 
+  //! inside the thrusection operation
   Standard_EXPORT void SetMutableInput(const Standard_Boolean IsMutableInput);
   
   //! Returns a list of new shapes generated from the shape
@@ -154,7 +157,8 @@ public:
   //! S can be an edge or a vertex of a given Profile (see methods AddWire and AddVertex).
   Standard_EXPORT virtual const TopTools_ListOfShape& Generated (const TopoDS_Shape& S) Standard_OVERRIDE;
 
-  Standard_EXPORT Standard_Boolean GetMutableInput() const;
+  //! Returns the current mutable input state
+  Standard_EXPORT Standard_Boolean IsMutableInput() const;
   
 
 protected:
index ad7bd03578fa66918ada22f5148ebddb4deba914..635363d73de37efee6ed5d4e03b52b43ba4b7718 100644 (file)
@@ -379,7 +379,7 @@ Standard_Integer thrusections(Draw_Interpretor&, Standard_Integer n, const char*
   Standard_Integer NbEdges = 0;
   Standard_Boolean IsFirstWire = Standard_False;
   for ( Standard_Integer i = index+2; i<= n-1 ; i++) {
-    if (!strcmp(a[i],"-save"))
+    if (!strcmp(a[i],"-safe"))
     {
       IsMutableInput = Standard_False;
       continue;
@@ -997,7 +997,9 @@ void  BRepTest::SweepCommands(Draw_Interpretor& theCommands)
   theCommands.Add("gener", "gener result wire1 wire2 [..wire..]",
                  __FILE__,gener,g);
 
-  theCommands.Add("thrusections", "thrusections [-N] result issolid isruled shape1 shape2 [..shape..], the option -N means no check on wires, shapes must be wires or vertices (only first or last)",
+  theCommands.Add("thrusections", "thrusections [-N] result issolid isruled shape1 shape2 [..shape..] [-safe], " 
+    "the option -N means no check on wires, shapes must be wires or vertices (only first or last), "
+    "-safe option allows to prevent the modifying of input shapes",
                  __FILE__,thrusections,g);
 
   theCommands.Add("genthrus", "genthrus res subshape_of_profile",
index 681670312c84246ec5c65b0722a87d8490ed21b6..cb68540472d023e2d295b63af43f239ea392b40a 100644 (file)
@@ -2,5 +2,6 @@
 002 not_solids
 003 specific
 004 bugs
-005 not_solids_locked006 solids_locked
+005 not_solids_locked
+006 solids_locked
 007 specific_locked
\ No newline at end of file
index b8102c6489c3c21346ea65ea8005e59dacee43f9..91b288036f00f5e67941bfb1ca0b9af6677b8a6c 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file D1] w2
 ttranslate w2 0 20 0
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 200
index 2f0ca68fabc497c4601b358067f84cdf6eb773f2..f3d0ab2a38a2b59ca092a5be047d5c7d4df9ea20 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file D4] w2
 ttranslate w2 0 20 0
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 161.603
index 722dbf3c334f5cf3d0140d9512ed2c5d291bdc1a..18614eb8084aed8c3c364ae6e2228b1d7f408ed2 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file D1] w2
 ttranslate w2 0 20 0
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 200
index a526343aa58c3539822a0a885e51a01989a06da8..6258d60a54be2f8e87906d9b63d998ee123e0eb7 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file D4] w2
 ttranslate w2 0 20 0
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 161.603
index 3a9d0c190e3f91c8872a868176e59c59f94ef7c9..9d2da6335937dde3e655f8216f22fa9115872fc7 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file C1] w2
 ttranslate w2 0 0 40
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 2513.27
index db367bd1bded744c9c76e3fe156cd0c681967043..62ac4b45b2a0ff99869f487f0647556c882baaca 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file C1] w2
 ttranslate w2 0 0 40
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 2196.82
index bea18c1ad4d0f4bc55207d80f847c2679026045c..6f9a0396fa84006b1ca674464ce19e065aabf22b 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file C1] w2
 ttranslate w2 0 0 40
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 2513.27
index 836c4d864307e6a51205473042b6590527d3563b..2d588a4b64a5ae1399c9a72c69d4cb483f71a8e1 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file C1] w2
 ttranslate w2 0 0 40
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 2513.27
index 2e607e33fd3ef6cad2e96b43c565c2c082f2a390..7e549d57226c4a121eced7064c448d6d99eacedd 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file C1] w2
 ttranslate w2 0 0 40
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 2196.82
index 1b887cd6a4b8ed6082cbd67b25d7f29ce0def29e..de685a6751cd1d3b7e4f13138fb4dfa375c9cc51 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file C1] w2
 ttranslate w2 0 0 40
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 2020.65
index c6e09141700cd021026703130e8ecf9704d7c290..d91b0e5092dc9056b9696449c72bf88e57795a89 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file C1] w2
 ttranslate w2 0 0 40
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 2020.65
index 2a98b501c983164db1cb5f2f3cb75769ecfe750a..1891756d93466b66c627f7c05abe96cd96b097d7 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file C1] w2
 ttranslate w2 0 0 40
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 1834.5
index 9c03f099518529a6b6951eabf15eaef9c52a39fc..02316db24292e0ec242d94b785a7501281f6bf0c 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file C1] w2
 ttranslate w2 0 0 40
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 2020.65
index b20d31428819a26c954c4fab3f4748b48b953cd7..b907157c6dba0bb8c269422fbf883468b6a3cda0 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file C1] w2
 ttranslate w2 0 0 40
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 2020.65
index 1a48455680f19668ba0a21488e7a166add068a60..42d1ab3008c741b095c57b29f247a89310f6c492 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file C1] w2
 ttranslate w2 0 0 40
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 1834.5
index bc072dfaa3a625053900a7211c23eabce6b1a71d..7de395109e25a65c98a438f5cd3fef923bfeb44d 100644 (file)
@@ -2,5 +2,5 @@ restore [locate_data_file C13] w1
 restore [locate_data_file C1] w2
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 1295.31
index 5a0df7bf1f324177ab98cc6b28d0273ac2e460d1..e2f822a21a360a8cf05a25232acdf2b044d2374f 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file C10] w2
 ttranslate w2 0 0 40
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 2020.65
index 61f5a46a35c69675e81303bc7629931a48ac5e46..ebf2a14bb8a0990385ad15844fe506cf87709706 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file C11] w2
 ttranslate w2 0 0 40
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 1690.09
index b5359a7ead50e638a64505834b868340acba606c..89245176ed47d84629d9616e70b5a6293f88fc8f 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file C12] w2
 ttranslate w2 0 0 40
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 1834.5
index fd1216b6f7b5dfbf2e6e0362230b91b8954af796..286814b8bfe69ea7a4039039cff4b60b4edb04c3 100644 (file)
@@ -2,5 +2,5 @@ restore [locate_data_file C7] w1
 restore [locate_data_file C13] w2
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 762.417
index 111b2ca6e98ea3c4c9b167fdce64400af51dd421..8972a932981ca5d5cdb6101980dd79119a1f6640 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file C10] w2
 ttranslate w2 0 0 40
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 1507.96
index 06d4859ca8000e7e62a3a9d204d79ecc3997a3cd..ce47c9e2ece9e2c4e1628fee43d3555d1ecafd02 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file C11] w2
 ttranslate w2 0 0 40
 setflags w1 locked
 setflags w2 locked
-thrusections result 0 0 w1 w2 -save
+thrusections result 0 0 w1 w2 -safe
 checkprops result -s 1314
index 337bb1dc6ccf3fd5c2aec73bd2677dab55933505..6c597250ff5942aca1ce620e3fb236455ab37c1a 100644 (file)
@@ -2,5 +2,5 @@ dall
 restore [locate_data_file buc60318.rle] w 
 explode w W 
 setflags w locked
-thrusections result 0 0 w_1 w_2 w_3 w_4 w_5 -sav
+thrusections result 0 0 w_1 w_2 w_3 w_4 w_5 -saf
 checkprops result -s 254109
index 037ef2b756a9992b1451debc45a71bbde12c8b6b..2d904b742818ed4bbf726896162a49edf894026c 100644 (file)
@@ -7,5 +7,5 @@ explode f3 w
 setflags f1_1 locked
 setflags f2_1 locked
 setflags f3_1 locked
-thrusections result 1 0 f1_1 f2_1 f3_1 -save
+thrusections result 1 0 f1_1 f2_1 f3_1 -safe
 checkprops result -s 49757.1
index 2842046725993c8188d38111819f0c7c7432c360..f2cb0a91c9b13e6756da5ba782f007bec94e3315 100644 (file)
@@ -2,5 +2,5 @@ restore [locate_data_file cts21570_1.rle] w1
 restore [locate_data_file cts21570_2.rle] w2
 setflags w1 locked
 setflags w2 locked
-thrusections result 1 0 w1 w2 -save
+thrusections result 1 0 w1 w2 -safe
 checkprops result -s 29817.5
index 9e0b83a24f1d2a17a25a04d766afc4bcafb1ca2c..94c7cb78db0e9ef1893e55ff13a3a35217182909 100644 (file)
@@ -2,5 +2,5 @@ restore [locate_data_file cts21570_1.rle] w1
 restore [locate_data_file cts21570_2.rle] w2
 setflags w1 locked
 setflags w2 locked
-thrusections result 1 0 w2 w1 -save
+thrusections result 1 0 w2 w1 -safe
 checkprops result -s 29817.5
index 41e264e5758be8854d6f20ef9ec0877f0928cf59..32a3e9624ee8045a489939232e5495c7dcc30a44 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file cts21570_2.rle] w2
 orientation w1 F
 setflags w1 locked
 setflags w2 locked
-thrusections result 1 0 w1 w2 -save
+thrusections result 1 0 w1 w2 -safe
 checkprops result -s 29817.5
index ba5c43035221ab81645624e43935e0b4694dd537..b6c512093404cf594d84d5bed77442de9fb47108 100644 (file)
@@ -3,5 +3,5 @@ restore [locate_data_file cts21570_2.rle] w2
 orientation w1 F
 setflags w1 locked
 setflags w2 locked
-thrusections result 1 0 w2 w1 -save
+thrusections result 1 0 w2 w1 -safe
 checkprops result -s 29817.5
index 8cfffe962b17f7246b187e47067cc6c64ee64206..6a8b0a773c42d28211aec927457dbad9d332b7f3 100644 (file)
@@ -4,5 +4,5 @@ orientation w1 F
 orientation w2 R
 setflags w1 locked
 setflags w2 locked
-thrusections result 1 0 w1 w2 -save
+thrusections result 1 0 w1 w2 -safe
 checkprops result -s 29817.5
index 53471897953db821598ce497b024a08bb6d2e619..a76184fca5925ffa836fc9b90004d4960a0da114 100644 (file)
@@ -4,5 +4,5 @@ orientation w1 F
 orientation w2 R
 setflags w1 locked
 setflags w2 locked
-thrusections result 1 0 w2 w1 -save
+thrusections result 1 0 w2 w1 -safe
 checkprops result -s 29817.5
index 4b3c95202a1563a16ee44f31b67a93421d28e1c0..a24d8473f36b4b2b79582b09ed7552c8df6347dd 100644 (file)
@@ -5,5 +5,5 @@ orientation w2 R
 orientation w1 R
 setflags w1 locked
 setflags w2 locked
-thrusections result 1 0 w1 w2 -save
+thrusections result 1 0 w1 w2 -safe
 checkprops result -s 29817.5
index 553f83545c3695b1eee7d3b997c2a2f44518965a..3fafcc58c2de4122a71cb96fc595c54aaff6dc0f 100644 (file)
@@ -5,5 +5,5 @@ orientation w2 R
 orientation w1 R
 setflags w1 locked
 setflags w2 locked
-thrusections result 1 0 w2 w1 -save
+thrusections result 1 0 w2 w1 -safe
 checkprops result -s 29817.5
diff --git a/tests/thrusection/specific/N5 b/tests/thrusection/specific/N5
new file mode 100644 (file)
index 0000000..2f65269
--- /dev/null
@@ -0,0 +1,18 @@
+puts "========"
+puts "OCC28642"
+puts "========"
+puts ""
+#########################################
+# BRepOffsetAPI_ThruSections/BRepFill_Generator are modifying the input shape sections
+#########################################
+
+#check "closed" thrusection (first profile is same as the last)
+polyline p1 0 0 0 1 0 0
+polyline p2 2 1 0 2 2 0
+polyline p3 3 0 0 4 0 0
+polyline p4 2 -1 0 2 -2 0
+thrusections result 0 0 p1 p2 p3 p4 p1
+
+checkprops result -s 10.1587
+checknbshapes result -vertex 2 -edge 3 -wire 1 -face 1 -shell 1 -solid 0 -compsolid 0 -compound 0 -shape 8
+
diff --git a/tests/thrusection/specific/N6 b/tests/thrusection/specific/N6
new file mode 100644 (file)
index 0000000..1e15372
--- /dev/null
@@ -0,0 +1,18 @@
+puts "========"
+puts "OCC28642"
+puts "========"
+puts ""
+#########################################
+# BRepOffsetAPI_ThruSections/BRepFill_Generator are modifying the input shape sections
+#########################################
+
+#check "closed" thrusection (first profile is same as the last)
+polyline p1 0 0 0 1 0 0
+polyline p2 2 1 0 2 2 0
+polyline p3 3 0 0 4 0 0
+polyline p4 2 -1 0 2 -2 0
+thrusections result 0 1 p1 p2 p3 p4 p1
+
+checkprops result -s 6
+checknbshapes result -vertex 8 -edge 12 -wire 4 -face 4 -shell 1 -solid 0 -compsolid 0 -compound 0 -shape 29
+
index a25d7c7390a5caffc4b1cf6d25e8f0370abfa786..d1bd04931601d175a66d34cddca4908a4b4dd636 100644 (file)
@@ -41,7 +41,7 @@ setflags w1 locked
 setflags v4 locked
 setflags v5 locked
 
-thrusections result ${issolid} ${isruled} v4 w1 v5 -save
+thrusections result ${issolid} ${isruled} v4 w1 v5 -safe
 
 
 checkprops result -s 490.101
index 801df566eecbc5a158ee56b2c4f2fd7206b5b6b0..67c60d1b49db7683c9ce9050dd3c140f018d1cb1 100644 (file)
@@ -41,7 +41,7 @@ setflags v5 locked
 
 set issolid 1
 set isruled 1
-thrusections result ${issolid} ${isruled} v4 w1 v5 -save
+thrusections result ${issolid} ${isruled} v4 w1 v5 -safe
 
 
 checkprops result -s 490.101
index 5f40b36f6b63031d737634a8b0d6788855af67e9..188bea4597b62cd7edd531da25f48508202861c3 100644 (file)
@@ -42,7 +42,7 @@ setflags w1 locked
 setflags v4 locked
 setflags v5 locked
 
-thrusections result ${issolid} ${isruled} v4 w1 v5 -save
+thrusections result ${issolid} ${isruled} v4 w1 v5 -safe
 
 
 checkprops result -s 651.466
index 5cd7c0597bacebe273ceed612f9652a4fe06c7d3..52a1e8e672c1c0c9da100a0378759c63d50694a3 100644 (file)
@@ -42,7 +42,7 @@ setflags v5 locked
 
 set issolid 1
 set isruled 0
-thrusections result ${issolid} ${isruled} v4 w1 v5 -save
+thrusections result ${issolid} ${isruled} v4 w1 v5 -safe
 
 
 checkprops result -s 651.466
index d504aee1a4e60e22b59880a7c2e20c796cfffbc6..a5e87f9f15c96dde05964c6713f94c248ebc339d 100644 (file)
@@ -37,7 +37,7 @@ setflags v5 locked
 
 set issolid 1
 set isruled 1
-thrusections result ${issolid} ${isruled} v4 w1 v5 -save
+thrusections result ${issolid} ${isruled} v4 w1 v5 -safe
 
 
 checkprops result -s 485.502
index 3179e5921d573169692f03d27d9e142234e43e8e..645e9bc26c82ad2ce60823d612373a49364a1227 100644 (file)
@@ -38,7 +38,7 @@ setflags w1 locked
 setflags v4 locked
 setflags v5 locked
 
-thrusections result ${issolid} ${isruled} v4 w1 v5 -save
+thrusections result ${issolid} ${isruled} v4 w1 v5 -safe
 
 
 checkprops result -s 646.621
index af1eaa46aaebac14a2d5298f68916a8786e9903f..2ba4a370da79662a70aa9aea11c81b7cbc8cde99 100644 (file)
@@ -37,7 +37,7 @@ setflags v5 locked
 
 set issolid 1
 set isruled 0
-thrusections result ${issolid} ${isruled} v4 w1 v5 -save
+thrusections result ${issolid} ${isruled} v4 w1 v5 -safe
 
 
 checkprops result -s 646.621
index 09bc3fe87b341c52180da4af83692e8982d14a64..e32c7fee999cf06bb3a6824dd85826c70f6d32cd 100644 (file)
@@ -21,7 +21,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 1404.96
index 79cc97119367ca943966e0af946233910cf6a916..b2d991bf236414d107d0100c0febd8774c051f55 100644 (file)
@@ -22,7 +22,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 1829.23
index afc25febfd247013b9ce17b171cd4e85117842ca..fe3d2a128d2254d7e43a5bdf995843a91971bb48 100644 (file)
@@ -22,7 +22,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 1829.23
index 5a28837a5f7dcdc12e5aad9c48132de926f03f20..1b7446026f507e177e4552881f8f4b477fb2e1db 100644 (file)
@@ -23,7 +23,7 @@ setflags v1 locked
 setflags v2 locked
 
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 2160.94
index 2cd15534f5c5c1874990b99d7adcddecd905743e..2f17105d3e9d18b51d24cb710ca8072750eac9a6 100644 (file)
@@ -22,7 +22,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 2556.25
index 564494b89ba5383132f10f11977aea2345f00ca4..54fae39339d7d8113fda91218f52fcd6d71ae7e7 100644 (file)
@@ -22,7 +22,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 2556.25
index 6c044c8032ca8269d8f3ae5b9770b522b4dccb4e..12c7c081de69201b256350707047bd9bb574bec6 100644 (file)
@@ -22,7 +22,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 1021.13
index 480f35765e0854bfc9f504ea5a3e4bb73b6b5f84..5fafb9107ac52406c805b27ac6e5eee22bb40bd6 100644 (file)
@@ -19,7 +19,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 1346.42
index c55c29120ea68ec2e4e23e1c99f1ec6116f29567..400cc3852c3ff3bdc403749f92e403b0fa8d511d 100644 (file)
@@ -22,7 +22,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save }
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe }
 
 
 checkprops result -s 1346.42
index e5d893a1869b1bc060632fcacc54db731a584a8a..cec06960dbbc74830a8de2635fc666506ab46814 100644 (file)
@@ -22,7 +22,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 1353.78
index 26a4c500a1816f7bc09dbdf8d2867e53812f508d..ed09ff1bcc24a0dcd79267727e8e891478b533d6 100644 (file)
@@ -22,7 +22,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 1683.87
index 6346fa977ad6f4d7096665426637e0349f362ad7..7d55cef3026aec06d2d48cc7f5c3185e20342d43 100644 (file)
@@ -22,7 +22,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 1683.87
index 095a211a414faafa74387e041a1caf13614e69ab..bbc0d65a050362f50d458f581b67edf9ea5218d9 100644 (file)
@@ -23,7 +23,7 @@ setflags v1 locked
 setflags v2 locked
 
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 449.295
index 8463b7ec5704f6a3c574f41345248f4dda584251..27b4ca1a1dee39f52a0ec0120985700b64aefef9 100644 (file)
@@ -22,7 +22,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 597.473
index 3fe1b5d57a8ff0d8d409049ece49c72cdd53789a..910d8e822fd379d5ad0bb911aff7bd3f800d1de6 100644 (file)
@@ -21,7 +21,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save }
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe }
 
 
 checkprops result -s 597.473
index 143442064a66fe25093803cabdb88bbb11fe04ab..62ad1514696874ee8d894e9f52b038b43c5b2623 100644 (file)
@@ -22,7 +22,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 740.079
index bdccabb803fc331e64e0f7ff42bd9352e5c4289d..22b503b55fecb11f48d1f69445dd2e34ccfe29dd 100644 (file)
@@ -22,7 +22,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 881.045
index ecd4aec76d19a6b9e0cc56e62bf5f89c6c3ce365..38124d179e01eae8597f0517b349b7c1606d3629 100644 (file)
@@ -22,7 +22,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 881.045
index d6e945a8b874df0a0c4944b5c2f71c48f7416b96..02481fb28e2b46e9d67c387240c9cde9c4a52ebe 100644 (file)
@@ -22,7 +22,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 245.485
index 48aed94cd3323a04ea9a72d7016aaa26c57ef9ad..61dc388fc82a3167bb783b9b30a9e07e3d4eaa8f 100644 (file)
@@ -22,7 +22,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 327.161
index 202223ebc323b99a62929e635a3d63271881ff5f..51ab82724acaf1462ac1c17aeb41e072b08581a3 100644 (file)
@@ -22,7 +22,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 327.161
index e767e052611c5695a5b8d2577e939890ac2a9a9a..76590a9af2448902dda5473371aa839b0f0db66d 100644 (file)
@@ -21,7 +21,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 400.925
index 94a2bca2b36e63f48fc7f70546b584443bcae1e3..68bedc9811c47a5092a2381017db281bed2e9b61 100644 (file)
@@ -22,7 +22,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 400.925
index fc56b058aca20089295bb009826983ffd9b2935b..c570bcd71ae22a3956029592bfc012de2fdceced 100644 (file)
@@ -22,7 +22,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 478.063
index eb32f5835d8d441d981c32763263d1c8d57607e8..471209cc436eab274e60d27dae0f731dd9038c99 100644 (file)
@@ -24,7 +24,7 @@ setflags w1 locked
 setflags v1 locked
 setflags v2 locked
 
-catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -safe}
 
 
 checkprops result -s 422.859
index 587caeb9373bde235a1cd54c9acc5aa857e757ab..85c8034d35e4b28fc76930179a1dd4a225ef5cbd 100644 (file)
@@ -138,7 +138,7 @@ setflags w111 locked
 setflags w101 locked
 setflags v5 locked
 
-thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5 -save
+thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5 -safe
 
 
 checkprops result -s 12651.5
index 46c2b01c546c860b85ade1ce0c10ee1b79066175..02170a4856759e6aa47ed15f57edd0d833ff2de6 100644 (file)
@@ -138,7 +138,7 @@ setflags v5 locked
 #
 set issolid 0
 set isruled 0
-thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5 -save
+thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5 -safe
 
 
 checkprops result -s 56691.9
index e2fd082fdea07df7188e806ac43b2090f2f316c3..f69149192704f53de8e9f3a255608d4932ffa098 100644 (file)
@@ -138,7 +138,7 @@ setflags v5 locked
 #
 set issolid 1
 set isruled 0
-thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5 -save
+thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5 -safe
 
 
 checkprops result -s 56691.9
index 34f3668e215b349e25982d92cb8e137faa6b9135..a83c817328aa27096dbde337e05183e0fee356c6 100644 (file)
@@ -137,7 +137,7 @@ setflags v5 locked
 #
 set issolid 1
 set isruled 1
-thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5 -save
+thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5 -safe
 
 
 checkprops result -s 12301.8
index d9041b7d1a5282e1dd65a4de0ce0eae13201e14c..7319643954b36c89664079a6c5a58aa2cdfda2b1 100644 (file)
@@ -139,7 +139,7 @@ setflags v5 locked
 #
 set issolid 0
 set isruled 0
-thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5 -save
+thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5 -safe
 
 
 checkprops result -s 37693.9
index fa90c0ffb32648f6b58be6c692d344aaaa0d6ff8..0008b0cfba32282b88500323ee8e10fa58ad4676 100644 (file)
@@ -139,7 +139,7 @@ setflags v5 locked
 #
 set issolid 1
 set isruled 0
-thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5 -save
+thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5 -safe
 
 
 checkprops result -s 37693.9
index 893604106d86d6abcbd48ef0d4c0da5ceeec9e72..cdf66fe9fef0ab18907d4bd53a1fa70c9683e78f 100644 (file)
@@ -32,7 +32,7 @@ setflags w1 locked
 setflags wc2 locked
 
 #catch {thrusections result ${issolid} ${isruled} v1 w1 v2}
-catch {thrusections result ${issolid} ${isruled} wc1 w1 wc2 -save}
+catch {thrusections result ${issolid} ${isruled} wc1 w1 wc2 -safe}
 
 
 checkprops result -s 256.875
index ddb804d57d3a1c9523f852d14755c73dbbe29c12..f9acb74d97701025336b20326110ccfe80a9dc8c 100644 (file)
@@ -33,7 +33,7 @@ setflags w1 locked
 setflags wc2 locked
 
 #catch {thrusections result ${issolid} ${isruled} v1 w1 v2}
-catch {thrusections result ${issolid} ${isruled} wc1 w1 wc2 -save}
+catch {thrusections result ${issolid} ${isruled} wc1 w1 wc2 -safe}
 
 
 checkprops result -s 332.724
index 2bac73de6043d37d4f439cadd2aebb0f06677d50..f41a5824d3d7b392210831469108b6d11e4e2106 100644 (file)
@@ -33,7 +33,7 @@ setflags w1 locked
 setflags wc2 locked
 
 #catch {thrusections result ${issolid} ${isruled} v1 w1 v2 }
-catch {thrusections result ${issolid} ${isruled} wc1 w1 wc2 -save}
+catch {thrusections result ${issolid} ${isruled} wc1 w1 wc2 -safe}
 
 
 checkprops result -s 314.974
index 1006e771ad2d3fc65cb76950631f2aa54b5799a8..ae4da3d21fe9b13d57c3877d4852b8ccb7dadf3a 100644 (file)
@@ -33,7 +33,7 @@ setflags wc2 locked
 
 
 #catch {thrusections result ${issolid} ${isruled} v1 w1 v2}
-catch {thrusections result ${issolid} ${isruled} wc1 w1 wc2 -save}
+catch {thrusections result ${issolid} ${isruled} wc1 w1 wc2 -safe}
 
 
 checkprops result -s 419.166
index 8907d120c037d686c50201224802a897f5780e11..e384592adb51be0bd65ee1210369006c67a7cf7e 100644 (file)
@@ -34,7 +34,7 @@ setflags w1 locked
 setflags wc2 locked
 
 #catch {thrusections result ${issolid} ${isruled} v1 w1 v2}
-catch {thrusections result ${issolid} ${isruled} wc1 w1 wc2 -save}
+catch {thrusections result ${issolid} ${isruled} wc1 w1 wc2 -safe}
 
 
 checkprops result -s 702.858
index 9355ae2c31fa9238d02a3b5bbc3d05ebc32507d4..3f6bac686655dc4ac041250ce21f033dcdc60721 100644 (file)
@@ -33,7 +33,7 @@ setflags w1 locked
 setflags wc2 locked
 
 #catch {thrusections result ${issolid} ${isruled} v1 w1 v2 }
-catch {thrusections result ${issolid} ${isruled} wc1 w1 wc2 -save}
+catch {thrusections result ${issolid} ${isruled} wc1 w1 wc2 -safe}
 
 
 checkprops result -s 702.921
index c6f22d5ae3ab283969cfdae0887238ba6298287e..bf823e54605d9d8ab3b8808aca36b89ec8bde392 100644 (file)
@@ -165,7 +165,7 @@ setflags w21 locked
 set issolid 1
 set isruled 1
 #thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5
-thrusections result ${issolid} ${isruled} v4 w1 wbzc1 w11 wpbc1 w21 wpbc2 w111 wbzc2 w101 v5 -save
+thrusections result ${issolid} ${isruled} v4 w1 wbzc1 w11 wpbc1 w21 wpbc2 w111 wbzc2 w101 v5 -safe
 
 
 checkprops result -s 12786.5
index d1dc6163c755ff6172b30f22c7033eddcdd68cfb..ea646acc369062454ed7a93f4a0c65299a574e64 100644 (file)
@@ -163,7 +163,7 @@ setflags v5 locked
 set issolid 1
 set isruled 1
 #thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5
-thrusections result ${issolid} ${isruled} v4 w1 wbzc1 w11 wpbc1 w21 wpbc2 w111 wbzc2 w101 v5 -save
+thrusections result ${issolid} ${isruled} v4 w1 wbzc1 w11 wpbc1 w21 wpbc2 w111 wbzc2 w101 v5 -safe
 
 
 checkprops result -s 12436.8
diff --git a/tests/thrusection/specific_locked/N5 b/tests/thrusection/specific_locked/N5
new file mode 100644 (file)
index 0000000..64cf89d
--- /dev/null
@@ -0,0 +1,24 @@
+puts "========"
+puts "OCC28642"
+puts "========"
+puts ""
+#########################################
+# BRepOffsetAPI_ThruSections/BRepFill_Generator are modifying the input shape sections
+#########################################
+
+#check "closed" thrusection (first profile is same as the last)
+polyline p1 0 0 0 1 0 0
+polyline p2 2 1 0 2 2 0
+polyline p3 3 0 0 4 0 0
+polyline p4 2 -1 0 2 -2 0
+
+setflags p1 locked
+setflags p2 locked
+setflags p3 locked
+setflags p4 locked
+
+thrusections result 0 0 p1 p2 p3 p4 p1 -safe
+
+checkprops result -s 10.1587
+checknbshapes result -vertex 2 -edge 3 -wire 1 -face 1 -shell 1 -solid 0 -compsolid 0 -compound 0 -shape 8
+
diff --git a/tests/thrusection/specific_locked/N6 b/tests/thrusection/specific_locked/N6
new file mode 100644 (file)
index 0000000..9b32f14
--- /dev/null
@@ -0,0 +1,24 @@
+puts "========"
+puts "OCC28642"
+puts "========"
+puts ""
+#########################################
+# BRepOffsetAPI_ThruSections/BRepFill_Generator are modifying the input shape sections
+#########################################
+
+#check "closed" thrusection (first profile is same as the last)
+polyline p1 0 0 0 1 0 0
+polyline p2 2 1 0 2 2 0
+polyline p3 3 0 0 4 0 0
+polyline p4 2 -1 0 2 -2 0
+
+setflags p1 locked
+setflags p2 locked
+setflags p3 locked
+setflags p4 locked
+
+thrusections result 0 1 p1 p2 p3 p4 p1 -safe
+
+checkprops result -s 6
+checknbshapes result -vertex 8 -edge 12 -wire 4 -face 4 -shell 1 -solid 0 -compsolid 0 -compound 0 -shape 29
+