]> OCCT Git - occt-copy.git/commitdiff
0023675: P-curves of a face are out of the domain of the face. CR23675_20
authornbv <nbv@opencascade.com>
Thu, 22 Aug 2013 13:23:24 +0000 (17:23 +0400)
committernbv <nbv@opencascade.com>
Thu, 22 Aug 2013 13:23:24 +0000 (17:23 +0400)
Analyzing of 2D-curves' boundaries.
Tolerance range computing was changed.

1. Function Validate(...) returns BRepCheck_Status.
2. For faces, whose pcurves is out of domain, status BRepCheck_OutOfSurfaceBoundary is returned.
3. For edges, which is out of face's boundary, status BRepCheck_PCurveIsOutOfDomainFace is returned.
4. Print warning, if status is not defined.
5. BRepCheck_Face::SetStatus(...) and BRepCheck_Wire::SetStatus(...) functions added.
6. ShapeFix::RefineFace(...) function and it draw-commands (ffixpcu and sfixpcu) are added. Command "ffixpcu" fixes a face with BRepCheck_OutOfSurfaceBoundary status. Command "sfixpcu" fixes a shape, which contains a face with BRepCheck_OutOfSurfaceBoundary status.
7. Trimming algorithm for surfaces changed (ForceTrim method is added).
8. Small correction of output of "checkshape" command result.
9. MinMax() and RealMod() functions are added.
10. Fixing of some shapes from test base.

422 files changed:
src/BRep/BRep_Builder.cdl
src/BRep/BRep_Builder.cxx
src/BRep/BRep_Builder.lxx
src/BRepCheck/BRepCheck.cdl
src/BRepCheck/BRepCheck.cxx
src/BRepCheck/BRepCheck_Analyzer.cxx
src/BRepCheck/BRepCheck_Edge.cxx
src/BRepCheck/BRepCheck_Face.cdl
src/BRepCheck/BRepCheck_Face.cxx
src/BRepCheck/BRepCheck_Wire.cxx
src/BRepLib/BRepLib.cxx
src/BRepTest/BRepTest_CheckCommands.cxx
src/Geom/Geom_RectangularTrimmedSurface.cdl
src/Geom/Geom_RectangularTrimmedSurface.cxx
src/GeomTools/GeomTools_SurfaceSet.cxx
src/SWDRAW/SWDRAW_ShapeFix.cxx
src/ShapeBuild/ShapeBuild.cdl
src/ShapeBuild/ShapeBuild_Edge.cdl
src/ShapeBuild/ShapeBuild_Edge.cxx
src/ShapeFix/ShapeFix.cdl
src/ShapeFix/ShapeFix.cxx
src/ShapeFix/ShapeFix_ComposeShell.cxx
src/Standard/Standard_Integer.hxx
src/Standard/Standard_Real.cxx
src/Standard/Standard_Real.hxx
tests/blend/complex/C4
tests/blend/complex/C6
tests/blend/complex/C9
tests/blend/complex/D3
tests/blend/complex/D4
tests/blend/complex/E1
tests/blend/complex/E2
tests/blend/complex/E7
tests/blend/complex/E9
tests/boolean/bcommon_complex/C2
tests/boolean/bcut_complex/A1
tests/boolean/bcut_complex/A2
tests/boolean/bcut_complex/E6
tests/boolean/bcut_complex/E7
tests/boolean/bcut_complex/E8
tests/boolean/bcut_complex/F6
tests/boolean/bcut_complex/F9
tests/boolean/bcut_complex/G2
tests/boolean/bcut_complex/G6
tests/boolean/bcut_complex/G7
tests/boolean/bcut_complex/G8
tests/boolean/bcut_complex/H3
tests/boolean/bcut_complex/H8
tests/boolean/bcut_complex/I3
tests/boolean/bcut_complex/I6
tests/boolean/bcut_complex/I7
tests/boolean/bcut_complex/J1
tests/boolean/bcut_complex/J4
tests/boolean/bcut_complex/J5
tests/boolean/bcut_complex/K8
tests/boolean/bcut_complex/L6
tests/boolean/bcut_complex/M2
tests/boolean/bcut_complex/M4
tests/boolean/bcut_complex/M5
tests/boolean/bcut_complex/M6
tests/boolean/bcut_complex/M9
tests/boolean/bcut_complex/N1
tests/boolean/bcut_complex/O8
tests/boolean/bcut_complex/P2
tests/boolean/bcut_complex/P4
tests/boolean/bcut_complex/Q7
tests/boolean/bfuse_complex/C7
tests/boolean/bfuse_complex/C9
tests/boolean/bfuse_complex/D4
tests/boolean/bfuse_complex/D5
tests/boolean/bfuse_complex/E2
tests/boolean/bfuse_complex/E3
tests/boolean/bfuse_complex/E6
tests/boolean/bfuse_complex/E8
tests/boolean/bfuse_complex/G2
tests/boolean/bfuse_complex/G4
tests/boolean/bfuse_complex/G9
tests/boolean/bfuse_complex/I6
tests/boolean/bfuse_complex/I9
tests/boolean/bfuse_complex/K3
tests/boolean/bfuse_complex/K4
tests/boolean/bfuse_complex/K7
tests/boolean/bfuse_complex/K9
tests/boolean/bfuse_complex/L2
tests/boolean/bfuse_complex/L6
tests/boolean/bfuse_complex/L7
tests/boolean/bfuse_complex/N1
tests/boolean/bfuse_complex/N2
tests/boolean/bfuse_complex/N4
tests/boolean/bfuse_complex/N8
tests/boolean/bfuse_complex/Q1
tests/boolean/bfuse_complex/R1
tests/boolean/bfuse_complex/R2
tests/boolean/bfuse_complex/R7
tests/boolean/bfuse_complex/R8
tests/boolean/bopcommon_complex/D8
tests/boolean/bopcommon_complex/D9
tests/boolean/bopcommon_complex/E9
tests/boolean/bopcommon_complex/F1
tests/boolean/bopcut_complex/E1
tests/boolean/bopcut_complex/E2
tests/boolean/bopcut_complex/F2
tests/boolean/bopcut_complex/F3
tests/boolean/bopcut_complex/L9
tests/boolean/bopcut_complex/M1
tests/boolean/bopfuse_complex/C9
tests/boolean/bopfuse_complex/D1
tests/boolean/bopfuse_complex/E1
tests/boolean/bopfuse_complex/E2
tests/boolean/bopfuse_complex/J8
tests/boolean/bopfuse_complex/K6
tests/boolean/bopsection/A2
tests/boolean/bopsection/A4
tests/boolean/bopsection/A5
tests/boolean/bopsection/B5
tests/boolean/bsection/O8
tests/bugs/heal/bug208
tests/bugs/modalg_1/buc60708
tests/bugs/modalg_1/buc60839
tests/bugs/modalg_1/bug17357_1
tests/bugs/modalg_1/bug17357_2
tests/bugs/modalg_1/bug17357_3
tests/bugs/modalg_1/bug17357_4
tests/bugs/modalg_1/bug17357_5
tests/bugs/modalg_2/bug22557
tests/bugs/modalg_2/bug22770_10
tests/bugs/modalg_2/bug22770_11
tests/bugs/modalg_2/bug22770_12
tests/bugs/modalg_2/bug22770_13
tests/bugs/modalg_2/bug22770_14
tests/bugs/modalg_2/bug22770_15
tests/bugs/modalg_2/bug22770_23
tests/bugs/modalg_2/bug22770_24
tests/bugs/modalg_2/bug22770_25
tests/bugs/modalg_2/bug22770_26
tests/bugs/modalg_2/bug22770_27
tests/bugs/modalg_2/bug22770_28
tests/bugs/modalg_2/bug22770_29
tests/bugs/modalg_2/bug22770_30
tests/bugs/modalg_2/bug22770_8
tests/bugs/modalg_2/bug22770_9
tests/bugs/modalg_2/bug23530
tests/bugs/modalg_2/bug263
tests/bugs/modalg_2/bug264_1
tests/bugs/modalg_2/bug264_11
tests/bugs/modalg_2/bug264_7
tests/bugs/modalg_2/bug269_1
tests/bugs/modalg_2/bug269_3
tests/bugs/modalg_2/bug287
tests/bugs/modalg_2/bug302_3
tests/bugs/modalg_2/bug337
tests/bugs/modalg_2/bug347_1
tests/bugs/modalg_2/bug347_2
tests/bugs/modalg_2/bug416
tests/bugs/modalg_2/bug446_2
tests/bugs/modalg_2/bug446_3
tests/bugs/modalg_2/bug452_2
tests/bugs/modalg_2/bug452_3
tests/bugs/modalg_2/bug472_1
tests/bugs/modalg_2/bug472_2
tests/bugs/modalg_2/bug472_3
tests/bugs/modalg_2/bug476_1
tests/bugs/modalg_2/bug476_2
tests/bugs/modalg_2/bug476_3
tests/bugs/modalg_2/bug476_4
tests/bugs/modalg_2/bug476_5
tests/bugs/modalg_2/bug476_6
tests/bugs/modalg_2/bug476_7
tests/bugs/modalg_2/bug476_8
tests/bugs/modalg_2/bug481
tests/bugs/modalg_2/bug485
tests/bugs/modalg_4/bug6181
tests/bugs/modalg_4/bug6182
tests/bugs/modalg_4/bug620_1
tests/bugs/modalg_4/bug620_2
tests/bugs/modalg_4/bug6272_5
tests/bugs/modalg_4/bug6272_6
tests/bugs/modalg_4/bug6272_710
tests/bugs/modalg_4/bug6272_77
tests/bugs/modalg_4/bug6272_78
tests/bugs/modalg_4/bug6272_79
tests/bugs/modalg_4/bug714
tests/bugs/modalg_4/bug774_1
tests/bugs/modalg_4/bug774_2
tests/bugs/modalg_4/bug778_1
tests/bugs/modalg_4/bug778_2
tests/bugs/modalg_4/bug951_1
tests/bugs/modalg_4/bug951_2
tests/bugs/modalg_4/bug951_3
tests/bugs/modalg_4/bug951_31
tests/bugs/modalg_4/bug951_32
tests/bugs/modalg_4/bug951_4
tests/bugs/modalg_4/bug951_41
tests/bugs/modalg_4/bug951_42
tests/bugs/modalg_4/bug951_5
tests/bugs/modalg_4/bug951_51
tests/bugs/modalg_4/bug951_52
tests/bugs/modalg_4/bug951_6
tests/bugs/modalg_4/bug951_61
tests/bugs/modalg_4/bug951_62
tests/bugs/modalg_4/bug951_71
tests/bugs/modalg_4/bug951_72
tests/bugs/modalg_5/bug23122
tests/bugs/modalg_5/bug23933
tests/bugs/moddata_1/bug107
tests/bugs/moddata_1/bug15
tests/bugs/moddata_1/bug1651
tests/bugs/moddata_1/bug17
tests/bugs/moddata_1/bug183_6
tests/bugs/moddata_1/bug211_1
tests/bugs/moddata_1/bug211_2
tests/bugs/moddata_2/bug228
tests/bugs/moddata_2/bug25
tests/bugs/moddata_2/bug258_1
tests/bugs/moddata_2/bug258_2
tests/bugs/moddata_2/bug26_1
tests/bugs/moddata_2/bug26_2
tests/bugs/moddata_2/bug368
tests/bugs/moddata_2/bug496
tests/bugs/moddata_2/bug8
tests/bugs/xde/bug169
tests/bugs/xde/bug22535_1
tests/bugs/xde/bug22535_2
tests/de/step_1/E3
tests/draft/angle/L1
tests/draft/angle/L2
tests/draft/angle/M4
tests/draft/angle/M5
tests/feat/featlf/B8
tests/feat/featprism/K1
tests/feat/featprism/K2
tests/feat/featprism/K7
tests/feat/featprism/M4
tests/feat/featprism/O6
tests/feat/featprism/R1
tests/feat/featprism/R6
tests/feat/featrevol/B7
tests/feat/featrevol/B8
tests/heal/data/advanced/B6
tests/heal/data/advanced/B8
tests/heal/data/advanced/G1
tests/heal/data/advanced/G8
tests/heal/data/advanced/G9
tests/heal/data/advanced/H4
tests/heal/data/advanced/H5
tests/heal/data/advanced/H9
tests/heal/data/advanced/I4
tests/heal/data/advanced/I5
tests/heal/data/advanced/J6
tests/heal/data/advanced/K1
tests/heal/data/advanced/K5
tests/heal/data/advanced/K8
tests/heal/data/advanced/L3
tests/heal/data/advanced/L5
tests/heal/data/advanced/L6
tests/heal/data/advanced/L8
tests/heal/data/advanced/L9
tests/heal/data/advanced/M1
tests/heal/data/advanced/M5
tests/heal/data/advanced/M6
tests/heal/data/advanced/M7
tests/heal/data/advanced/N1
tests/heal/data/advanced/N3
tests/heal/data/advanced/N4
tests/heal/data/advanced/N6
tests/heal/data/advanced/N7
tests/heal/data/advanced/S6
tests/heal/data/advanced/U2
tests/heal/data/advanced/ZF1
tests/heal/data/advanced/ZF2
tests/heal/data/advanced/ZF7
tests/heal/data/advanced/ZF8
tests/heal/data/standard/F3
tests/heal/data/standard/I1
tests/heal/data/standard/I5
tests/heal/data/standard/I9
tests/heal/data/standard/J4
tests/heal/data/standard/J9
tests/heal/data/standard/K6
tests/heal/data/standard/K7
tests/heal/data/standard/K8
tests/heal/data/standard/K9
tests/heal/data/standard/M2
tests/heal/data/standard/M3
tests/heal/data/standard/M8
tests/heal/data/standard/N1
tests/heal/data/standard/P1
tests/heal/data/standard/R5
tests/heal/data/standard/T9
tests/heal/data/standard/U6
tests/heal/data/standard/V5
tests/heal/data/standard/V6
tests/heal/data/standard/V7
tests/heal/data/standard/X8
tests/heal/data/standard/Y5
tests/heal/data/standard/Z5
tests/heal/data/standard/ZB6
tests/heal/data/standard/ZD1
tests/heal/data/standard/ZD3
tests/heal/data/standard/ZF4
tests/heal/data/standard/ZI1
tests/heal/data/standard/ZM4
tests/heal/data/standard/ZQ2
tests/heal/data/standard/ZR9
tests/heal/data/standard/ZS1
tests/heal/data/standard/ZT1
tests/heal/data/standard/ZT3
tests/heal/direct_faces/A3
tests/heal/direct_faces/A9
tests/heal/drop_small_edges/A1
tests/heal/fix_face_size/end
tests/heal/fix_gaps/end
tests/heal/fix_shape/end
tests/heal/same_parameter/A1
tests/heal/split_angle/A5
tests/heal/split_angle/A9
tests/heal/split_angle/B9
tests/heal/split_angle/E3
tests/heal/split_angle/E4
tests/heal/split_angle/E5
tests/heal/split_closed_faces/A1
tests/heal/split_closed_faces/A9
tests/heal/split_closed_faces/B4
tests/heal/split_closed_faces/C4
tests/heal/split_closed_faces/D5
tests/heal/split_closed_faces/D6
tests/heal/split_closed_faces/D7
tests/heal/split_continuity/A4
tests/heal/split_continuity/B2
tests/heal/split_continuity/C1
tests/heal/split_continuity/C3
tests/heal/split_continuity/C8
tests/heal/split_continuity/D1
tests/heal/split_continuity/D2
tests/heal/surface_to_bezier/B3
tests/heal/surface_to_bezier/D1
tests/heal/surface_to_bezier/E3
tests/heal/surface_to_bspline/B1
tests/heal/surface_to_bspline/B5
tests/heal/surface_to_bspline/C5
tests/heal/surface_to_bspline/C7
tests/heal/surface_to_bspline/D6
tests/heal/surface_to_bspline/D7
tests/heal/surface_to_bspline/D8
tests/offset/faces_type_a/A1
tests/sewing/tol_0_01/K8
tests/sewing/tol_0_01/L1
tests/sewing/tol_0_01/L3
tests/sewing/tol_0_01/L8
tests/sewing/tol_0_01/P2
tests/sewing/tol_0_01/R3
tests/sewing/tol_0_01/S2
tests/sewing/tol_0_01/T9
tests/sewing/tol_0_01/U5
tests/sewing/tol_0_01/U8
tests/sewing/tol_0_01/V1
tests/sewing/tol_0_01/V2
tests/sewing/tol_0_01/V6
tests/sewing/tol_0_01/W2
tests/sewing/tol_1/B5
tests/sewing/tol_1/D1
tests/sewing/tol_1/D2
tests/sewing/tol_1/D6
tests/sewing/tol_1/E2
tests/sewing/tol_1/J9
tests/sewing/tol_1/K1
tests/sewing/tol_1/N7
tests/sewing/tol_1/O6
tests/sewing/tol_1/P8
tests/sewing/tol_1/P9
tests/sewing/tol_1/Q4
tests/sewing/tol_1/Q5
tests/sewing/tol_1/Q6
tests/sewing/tol_1/Q7
tests/sewing/tol_1/U2
tests/sewing/tol_1/V4
tests/sewing/tol_1/V7
tests/sewing/tol_1/X6
tests/sewing/tol_1/Y4
tests/sewing/tol_100/F1
tests/sewing/tol_100/F6
tests/sewing/tol_100/H1
tests/sewing/tol_100/H4
tests/sewing/tol_100/I1
tests/sewing/tol_100/I7
tests/sewing/tol_100/J7
tests/sewing/tol_100/J9
tests/sewing/tol_100/K9
tests/sewing/tol_100/L6
tests/sewing/tol_100/L9
tests/sewing/tol_100/M1
tests/sewing/tol_100/M2
tests/sewing/tol_100/M5
tests/sewing/tol_100/N2
tests/sewing/tol_100/N9
tests/sewing/tol_100/O1
tests/sewing/tol_100/O2
tests/sewing/tol_100/O3
tests/sewing/tol_100/P2
tests/sewing/tol_100/P3
tests/sewing/tol_100/P4
tests/sewing/tol_100/P9
tests/sewing/tol_100/Q1
tests/sewing/tol_100/S9
tests/sewing/tol_100/T5
tests/sewing/tol_100/T6
tests/sewing/tol_100/U7
tests/sewing/tol_100/U8
tests/sewing/tol_100/U9
tests/sewing/tol_100/V1
tests/sewing/tol_100/W7
tests/sewing/tol_100/W8
tests/sewing/tol_100/X3
tests/sewing/tol_100/X8
tests/sewing/tol_100/Y3
tests/sewing/tol_100/Z7
tests/sewing/tol_100/Z8
tests/xcaf/brep_add_CL/G8
tests/xcaf/brep_to_dxc/G8
tests/xcaf/brep_to_igs_add_CL/G8
tests/xcaf/brep_to_stp_add_CL/G8
tests/xcaf/dxc_add_CL/G8

index 3eb0e27a12eb1142cec4509afd2279a0b23de222..e83868400b33f2f50940ae19e0a7a21338b90886 100755 (executable)
@@ -238,11 +238,13 @@ is
     UpdateEdge(me; E     : Edge  from TopoDS;
                    C1,C2 : Curve from Geom2d;
                    F     : Face  from TopoDS;
-                   Tol   : Real);
+                   Tol   : Real;
+                   theContinuity  : Shape from GeomAbs = GeomAbs_C0);
     ---C++: inline
 
-        ---Purpose: Sets pcurves for the edge on the  closed face.  If
-        --          <C1> or <C2> is a null handle, remove any existing
+        ---Purpose: Sets pcurves (with theContinuity) for the edge on 
+        --          the  closed face.
+        --          If <C1> or <C2> is a null handle, remove any existing
         --          pcurve.
 
     UpdateEdge(me; E   : Edge     from TopoDS;
@@ -254,7 +256,20 @@ is
         ---Purpose: Sets a pcurve for the edge on the face.
         --          If <C> is a null handle, remove any existing pcurve.
 
-    UpdateEdge(me; E     : Edge     from TopoDS;
+    UpdateEdge(me; E   : Edge     from TopoDS;
+                   C   : Curve    from Geom2d;
+                   newSurf : Surface  from Geom;
+                   newL    : Location from TopLoc;
+                   theFace : Face  from TopoDS;
+                   Tol     : Real from Standard);
+
+        ---Purpose: Sets a pcurve for the edge on the face.
+        --          If <C> is a null handle, remove any existing pcurve.
+        --          New edge will be in the face <theFace>, which 
+        --          based on surface newSurf. Old surface must be 
+        --          deleted from <theFace> later.
+
+        UpdateEdge(me; E     : Edge     from TopoDS;
                    C     : Curve    from Geom2d;
                    S     : Surface  from Geom;
                    L     : Location from TopLoc;
@@ -269,12 +284,28 @@ is
                    C1,C2 : Curve    from Geom2d;
                    S     : Surface  from Geom;
                    L     : Location from TopLoc;
-                   Tol   : Real);
+                   Tol   : Real from Standard;
+                   theContinuity  : Shape from GeomAbs = GeomAbs_C0);
 
-        ---Purpose: Sets pcurves for the edge on the closed surface.
-        --          <C1> or <C2> is a null handle, remove any existing
+        ---Purpose: Sets pcurves (with theContinuity) for the edge on the 
+        --          closed surface.
+        --          If <C1> or <C2> is a null handle, remove any existing
         --          pcurve.
 
+    UpdateEdge(me; E    : Edge     from TopoDS;
+                C1,C2   : Curve    from Geom2d;
+                newSurf : Surface  from Geom;
+                newL    : Location from TopLoc;
+                theFace : Face  from TopoDS;
+                Tol     : Real from Standard);
+
+        ---Purpose: Sets pcurves for the edge on the closed surface.
+        --          If <C1> or <C2> is a null handle, remove any 
+        --          existing pcurve.
+        --          New edge will be in the face <theFace>, which 
+        --          based on surface newSurf. Old surface must be 
+        --          deleted from <theFace> later.
+        
     UpdateEdge(me; E     : Edge     from TopoDS;
                    C1,C2 : Curve    from Geom2d;
                    S     : Surface  from Geom;
index 5ab0f4ffc984912d02f3662452d9da4773ee7530..0d112543a66a6b4993e3071cb5a2439154f16a5d 100755 (executable)
@@ -233,7 +233,8 @@ static void UpdateCurves(BRep_ListOfCurveRepresentation& lcr,
                          const Handle(Geom2d_Curve)& C1,
                          const Handle(Geom2d_Curve)& C2,
                          const Handle(Geom_Surface)& S,
-                         const TopLoc_Location& L)
+                         const TopLoc_Location& L,
+                         const GeomAbs_Shape theContinuity = GeomAbs_C0)
 {
   BRep_ListIteratorOfListOfCurveRepresentation itcr(lcr);
   Handle(BRep_CurveRepresentation) cr;
@@ -259,7 +260,7 @@ static void UpdateCurves(BRep_ListOfCurveRepresentation& lcr,
 
   if ( !C1.IsNull() && !C2.IsNull() ) {
     Handle(BRep_CurveOnClosedSurface) COS =
-      new BRep_CurveOnClosedSurface(C1,C2,S,L,GeomAbs_C0);
+      new BRep_CurveOnClosedSurface(C1,C2,S,L,theContinuity);
     // test if there is already a range
     if (!GC.IsNull()) {
       COS->SetRange(f,l);
@@ -280,7 +281,8 @@ static void UpdateCurves(BRep_ListOfCurveRepresentation& lcr,
                          const Handle(Geom_Surface)& S,
                          const TopLoc_Location& L,
                          const gp_Pnt2d& Pf,
-                         const gp_Pnt2d& Pl)
+                         const gp_Pnt2d& Pl,
+                         const GeomAbs_Shape theContinuity = GeomAbs_C0)
 {
   BRep_ListIteratorOfListOfCurveRepresentation itcr(lcr);
   Handle(BRep_CurveRepresentation) cr;
@@ -306,7 +308,7 @@ static void UpdateCurves(BRep_ListOfCurveRepresentation& lcr,
 
   if ( !C1.IsNull() && !C2.IsNull() ) {
     Handle(BRep_CurveOnClosedSurface) COS =
-      new BRep_CurveOnClosedSurface(C1,C2,S,L,GeomAbs_C0);
+      new BRep_CurveOnClosedSurface(C1,C2,S,L,theContinuity);
     // test if there is already a range
     if (!GC.IsNull()) {
       COS->SetRange(f,l);
@@ -343,6 +345,167 @@ static void UpdateCurves(BRep_ListOfCurveRepresentation& lcr,
   }
 }
 
+//=======================================================================
+//function : UpdateCurves
+//purpose  : Insert two pcurves <C1,C2> on surface <newSurf> with 
+//           location <newL> in the list of curve representations <lcr>.
+//           Deletes curves, which belong to <oldSurf> because <oldSurf>
+//           will not be used later (presumably).
+//           Remove the pcurves on <S> from <lcr> if <C1> or <C2> is null
+//=======================================================================
+
+static void UpdateCurves(BRep_ListOfCurveRepresentation& lcr,
+                         const Handle(Geom2d_Curve)& C1,
+                         const Handle(Geom2d_Curve)& C2,
+                         const Handle(Geom_Surface)& newSurf,
+                         const TopLoc_Location& newL,
+                         const Handle(Geom_Surface)& oldSurf,
+                         const TopLoc_Location oldL,
+                         const GeomAbs_Shape theContinuity = GeomAbs_C0)
+{
+  BRep_ListIteratorOfListOfCurveRepresentation itcr(lcr);
+  
+  Handle(BRep_GCurve) GC;
+  Standard_Real aFirst,aLast;
+
+  Standard_Boolean rangeFound = Standard_False;
+  Standard_Boolean isModified = Standard_False;
+
+  while (itcr.More())
+  {
+    Handle(BRep_CurveRepresentation) cr = itcr.Value();
+    GC = Handle(BRep_GCurve)::DownCast(cr);
+
+    if ( !GC.IsNull() )
+    {
+      GC->Range(aFirst, aLast);
+
+      Standard_Boolean undefined = (Precision::IsPositiveInfinite(aLast) ||
+                                      Precision::IsNegativeInfinite(aFirst));
+
+      if (!undefined)
+      {
+        rangeFound = Standard_True;
+      }
+
+      Standard_Boolean cond = Standard_False;
+      cond = cond || GC->IsCurveOnSurface(oldSurf, oldL);
+
+      if(!cond)
+      {
+        if(GC->IsCurveOnClosedSurface())
+        {
+          Handle(BRep_CurveOnSurface) aCS = Handle(BRep_CurveOnSurface)::DownCast(GC);
+          cond = aCS->IsCurveOnSurface(oldSurf, oldL);
+        }
+      }
+
+      if (cond)
+      {
+        lcr.Remove(itcr);
+        isModified = Standard_True;
+      }
+      else
+      {
+        itcr.Next();
+      }
+    }//if ( !GC.IsNull() )
+    else
+    {
+      if (cr->IsPolygonOnSurface(oldSurf, oldL))
+      {
+        lcr.Remove(itcr);
+        isModified = Standard_True;
+      }
+      else
+      {
+        itcr.Next();
+      }
+    }
+  }
+    
+  if ( !C1.IsNull() && !C2.IsNull() ) {
+    Handle(BRep_CurveOnClosedSurface) COS =
+      new BRep_CurveOnClosedSurface(C1,C2,newSurf,newL,theContinuity);
+    // test if there is already a range
+    if (rangeFound) {
+      COS->SetRange(aFirst,aLast);
+    }
+    lcr.Append(COS);
+  }
+}
+
+//=======================================================================
+//function : UpdateCurves
+//purpose  : Insert the pcurve <C> on surface <newSurf> with 
+//           location <newL> in the list of curve representations <lcr>.
+//           Remove the pcurves on <oldSurf> from <lcr> if <C> is null
+//=======================================================================
+static void UpdateCurves(BRep_ListOfCurveRepresentation& lcr,
+                         const Handle(Geom2d_Curve)& C,
+                         const Handle(Geom_Surface)& newSurf,
+                         const TopLoc_Location& newL,
+                         const Handle(Geom_Surface)& oldSurf,
+                         const TopLoc_Location oldL)
+{
+  BRep_ListIteratorOfListOfCurveRepresentation itcr(lcr);
+  Handle(BRep_CurveRepresentation) cr;
+  Handle(BRep_GCurve) GC;
+  Standard_Real f,l;
+  Standard_Boolean rangeFound = Standard_False;
+
+  // search the range of the 3d curve
+  // and remove any existing representation
+
+  while (itcr.More()) {
+    GC = Handle(BRep_GCurve)::DownCast(itcr.Value());
+    if (!GC.IsNull()) {
+      if (GC->IsCurve3D()) {
+        GC->Range(f, l);
+        Standard_Boolean undefined = (Precision::IsPositiveInfinite(l) ||
+                                      Precision::IsNegativeInfinite(f));
+        
+        if (!undefined) {
+          rangeFound = Standard_True;
+        }
+      }
+      if (GC->IsCurveOnSurface(oldSurf,oldL))
+      {
+        GC->Range(f, l);
+        Standard_Boolean undefined = (Precision::IsPositiveInfinite(l) ||
+                                      Precision::IsNegativeInfinite(f));
+        
+        if (!undefined)
+        {
+          rangeFound = Standard_True;
+        }
+
+        // remove existing curve on surface
+        // cr is used to keep a reference on the curve representation
+        // this avoid deleting it as its content may be referenced by C or S
+        cr = itcr.Value();
+        lcr.Remove(itcr);
+      }
+      else {
+        itcr.Next();
+      }
+    }
+    else {
+      itcr.Next();
+    }
+  }
+
+  if (! C.IsNull()) {
+    Handle(BRep_CurveOnSurface) COS = new BRep_CurveOnSurface(C,newSurf,newL);
+    // test if there is already a range
+    if (rangeFound) {
+      COS->SetRange(f,l);
+    }
+    lcr.Append(COS);
+  }
+}
+
+
 static void UpdatePoints(BRep_ListOfPointRepresentation& lpr,
                          Standard_Real p,
                          const Handle(Geom_Curve)& C,
@@ -578,6 +741,33 @@ void  BRep_Builder::UpdateEdge(const TopoDS_Edge& E,
   TE->Modified(Standard_True);
 }
 
+//=======================================================================
+//function : UpdateEdge
+//purpose  : 
+//=======================================================================
+void  BRep_Builder::UpdateEdge(const TopoDS_Edge& E, 
+                               const Handle(Geom2d_Curve)& C, 
+                               const Handle(Geom_Surface)& newSurf,
+                               const TopLoc_Location& newL,
+                               const TopoDS_Face& theFace,
+                               const Standard_Real Tol) const
+{
+  const Handle(BRep_TEdge)& TE = *((Handle(BRep_TEdge)*) &E.TShape());
+  const TopLoc_Location l = newL.Predivided(E.Location());
+
+  const Handle(BRep_TFace)& TF = *((Handle(BRep_TFace)*) &theFace.TShape());
+  const TopLoc_Location &L = theFace.Location() * TF->Location();
+  const Handle(Geom_Surface) &S = TF->Surface();
+
+  //BRep_Tool::Degenerated(E);
+
+  UpdateCurves(TE->ChangeCurves(),
+                        C, newSurf, l, S,
+                        L.Predivided(E.Location()));
+  
+  TE->UpdateTolerance(Tol);
+  TE->Modified(Standard_True);
+}
 
 //=======================================================================
 //function : UpdateEdge
@@ -612,12 +802,13 @@ void  BRep_Builder::UpdateEdge(const TopoDS_Edge& E,
                                const Handle(Geom2d_Curve)& C2, 
                                const Handle(Geom_Surface)& S, 
                                const TopLoc_Location& L, 
-                               const Standard_Real Tol) const
+                               const Standard_Real Tol,
+                               const GeomAbs_Shape theContinuity) const
 {
   const Handle(BRep_TEdge)& TE = *((Handle(BRep_TEdge)*) &E.TShape());
   const TopLoc_Location l = L.Predivided(E.Location());
 
-  UpdateCurves(TE->ChangeCurves(),C1,C2,S,l);
+  UpdateCurves(TE->ChangeCurves(),C1,C2,S,l,theContinuity);
   if (!C1.IsNull() && !C2.IsNull()) 
     TE->Closed(C1->IsClosed() && C2->IsClosed());
 
@@ -899,6 +1090,36 @@ void  BRep_Builder::UpdateEdge(const TopoDS_Edge& E,
   TE->Modified(Standard_True);
 }
 
+//=======================================================================
+//function : UpdateEdge
+//purpose  : 
+//=======================================================================
+void  BRep_Builder::UpdateEdge(const TopoDS_Edge& E,
+                               const Handle(Geom2d_Curve)& C1,
+                               const Handle(Geom2d_Curve)& C2,
+                               const Handle(Geom_Surface)& newSurf,
+                               const TopLoc_Location& newL,
+                               const TopoDS_Face& theFace, 
+                               const Standard_Real Tol) const
+{
+  const Handle(BRep_TEdge)& TE = *((Handle(BRep_TEdge)*) &E.TShape());
+  const TopLoc_Location l = newL.Predivided(E.Location());
+
+  const Handle(BRep_TFace)& TF = *((Handle(BRep_TFace)*) &theFace.TShape());
+  const TopLoc_Location &L = theFace.Location() * TF->Location();
+  const Handle(Geom_Surface) &S = TF->Surface();
+
+
+  UpdateCurves(TE->ChangeCurves(),
+                          C1,C2,newSurf,l,S,
+                          L.Predivided(E.Location()));
+
+  if (!C1.IsNull() && !C2.IsNull()) 
+    TE->Closed(C1->IsClosed() && C2->IsClosed());
+
+  TE->UpdateTolerance(Tol);
+  TE->Modified(Standard_True);
+}
 
 //=======================================================================
 //function : Continuity
index dcb504ebb08070793b525f1eadcbfe685e36af81..162a327a04133391b9d88f120fb85d64a9dda35a 100755 (executable)
@@ -145,10 +145,11 @@ inline void BRep_Builder::UpdateEdge(const TopoDS_Edge& E,
                                      const Handle(Geom2d_Curve)& C1,
                                      const Handle(Geom2d_Curve)& C2,
                                      const TopoDS_Face& F,
-                                     const Standard_Real Tol) const
+                                     const Standard_Real Tol,
+                                     const GeomAbs_Shape theContinuity) const
 {
   TopLoc_Location l;
-  UpdateEdge(E,C1,C2,BRep_Tool::Surface(F,l),l,Tol);
+  UpdateEdge(E,C1,C2,BRep_Tool::Surface(F,l),l,Tol, theContinuity);
 }
 
 
index 9928b17c7e94735eb756916fe53ad31db78edcdc..0a6e48cd5aaf67b1df576b02c24c0e2c7325158d 100755 (executable)
@@ -76,6 +76,7 @@ is
       FreeEdge,
       InvalidMultiConnexity,
       InvalidRange,
+      PCurveIsOutOfDomainFace,
       
       
       -- for wires
@@ -85,6 +86,7 @@ is
 
       -- for faces
       NoSurface,
+      OutOfSurfaceBoundary,
       InvalidWire,
       RedundantWire,
       IntersectingWires,
index 1eecf255d775f2b9cf580ed9feb97390ed75c58f..2229fd298f97a606058f3ada6e4455fc195edd78 100755 (executable)
@@ -181,7 +181,15 @@ void BRepCheck::Print(const BRepCheck_Status stat,
   case BRepCheck_CheckFail:
     OS << "BRepCheck_CheckFail\n";
     break;
+  case BRepCheck_PCurveIsOutOfDomainFace:
+    OS << "BRepCheck_PCurveIsOutOfDomainFace\n";
+    break;
+  case BRepCheck_OutOfSurfaceBoundary:
+    OS << "BRepCheck_OutOfSurfaceBoundary\n";
+    break;
+
   default:
+    OS << "BRepCheck::Print(...): Undefined status!\n";
     break;
   }
 }
index 3e138296791007de3b4c28f258e6f9b2ed9e5767..436d3002eadcde25f43485c27d94b1868b73017e 100755 (executable)
@@ -109,57 +109,64 @@ void BRepCheck_Analyzer::Put(const TopoDS_Shape& S,
 
 void BRepCheck_Analyzer::Perform(const TopoDS_Shape& S)
 {
-  for(TopoDS_Iterator theIterator(S);theIterator.More();theIterator.Next()) {
+  for(TopoDS_Iterator theIterator(S);theIterator.More();theIterator.Next()) 
     Perform(theIterator.Value());
-  }
+  
   //
   TopAbs_ShapeEnum styp;
   TopExp_Explorer exp;
   //
   styp = S.ShapeType();
-  switch (styp) {
-  case TopAbs_VERTEX: 
+  
+  switch (styp) 
+  {
+  case TopAbs_VERTEX:
     // modified by NIZHNY-MKK  Wed May 19 16:56:16 2004.BEGIN
     // There is no need to check anything.
     //       if (myShape.IsSame(S)) {
     //         myMap(S)->Blind();
     //       }
     // modified by NIZHNY-MKK  Wed May 19 16:56:23 2004.END
-  
+
     break;
-  case TopAbs_EDGE:    {
+  case TopAbs_EDGE:
+    {
     //  Modified by skv - Tue Apr 27 11:38:08 2004 Begin
     // There is no need to check anything except vertices on single edge.
     //       if (myShape.IsSame(S)) {
     //         myMap(S)->Blind();
     //       }
     //  Modified by skv - Tue Apr 27 11:38:09 2004 End
-    TopTools_MapOfShape MapS;
-    
-    for (exp.Init(S,TopAbs_VERTEX);exp.More(); exp.Next()) {
-      const TopoDS_Shape& aVertex = exp.Current();
-      try {
-       OCC_CATCH_SIGNALS
-       if (MapS.Add(aVertex)) {
-         myMap(aVertex)->InContext(S);
-       }
-      }
-      catch(Standard_Failure) {
+
+      TopTools_MapOfShape MapS;
+      for (exp.Init(S,TopAbs_VERTEX);exp.More(); exp.Next())
+      {
+        const TopoDS_Shape& aVertex = exp.Current();
+        try
+        {
+          OCC_CATCH_SIGNALS
+            if (MapS.Add(aVertex))
+              myMap(aVertex)->InContext(S);
+        }
+        catch(Standard_Failure)
+        {
 #ifdef DEB
-       cout<<"BRepCheck_Analyzer : ";
-       Standard_Failure::Caught()->Print(cout);  
-       cout<<endl;
+          cout<<"BRepCheck_Analyzer : ";
+          Standard_Failure::Caught()->Print(cout);  
+          cout<<endl;
 #endif
-       if ( ! myMap(S).IsNull() ) {
-         myMap(S)->SetFailStatus(S);
-       }
-       Handle(BRepCheck_Result) aRes = myMap(aVertex);
-       if ( ! aRes.IsNull() ) {
-         aRes->SetFailStatus(aVertex);
-         aRes->SetFailStatus(S);
-       }
-      }
-    }
+          if ( ! myMap(S).IsNull() )
+            myMap(S)->SetFailStatus(S);
+
+          Handle(BRepCheck_Result) aRes = myMap(aVertex);
+          
+          if ( ! aRes.IsNull() ) 
+          {
+            aRes->SetFailStatus(aVertex);
+            aRes->SetFailStatus(S);
+          }
+        }//catch(Standard_Failure)
+      }//for (exp.Init(S,TopAbs_VERTEX);exp.More(); exp.Next())
     }
     break;
   case TopAbs_WIRE:
@@ -177,257 +184,234 @@ void BRepCheck_Analyzer::Perform(const TopoDS_Shape& S)
   case TopAbs_FACE:
     {
       TopTools_MapOfShape MapS;
-      for (exp.Init(S,TopAbs_VERTEX);exp.More(); exp.Next()) {
-       try {
-         OCC_CATCH_SIGNALS
-         if (MapS.Add(exp.Current())) {
-           myMap(exp.Current())->InContext(S);
-         }
-       }
-       catch(Standard_Failure) {
+      for (exp.Init(S,TopAbs_VERTEX);exp.More(); exp.Next())
+      {
+        try
+        {
+          OCC_CATCH_SIGNALS
+          if (MapS.Add(exp.Current()))
+            myMap(exp.Current())->InContext(S);
+        }
+        catch(Standard_Failure)
+        {
 #ifdef DEB
-         cout<<"BRepCheck_Analyzer : ";
-         Standard_Failure::Caught()->Print(cout);  
-         cout<<endl;
+          cout<<"BRepCheck_Analyzer : ";
+          Standard_Failure::Caught()->Print(cout);  
+          cout<<endl;
 #endif
-         if ( ! myMap(S).IsNull() ) {
-           myMap(S)->SetFailStatus(S);
-         }
-         Handle(BRepCheck_Result) aRes = myMap(exp.Current());
-
-         if ( ! aRes.IsNull() ) {
-           aRes->SetFailStatus(exp.Current());
-           aRes->SetFailStatus(S);
-         }
-       }
-      }
+          if ( ! myMap(S).IsNull() )
+            myMap(S)->SetFailStatus(S);
+          
+          Handle(BRepCheck_Result) aRes = myMap(exp.Current());
+
+          if ( ! aRes.IsNull() )
+          {
+            aRes->SetFailStatus(exp.Current());
+            aRes->SetFailStatus(S);
+          }
+        }//catch(Standard_Failure)
+      }//for (exp.Init(S,TopAbs_VERTEX);exp.More(); exp.Next())
+
       Standard_Boolean performwire = Standard_True;
+      Standard_Boolean isFaceOutBoundary = Standard_False;
+
       MapS.Clear();
-      for (exp.Init(S,TopAbs_EDGE);exp.More(); exp.Next()) {
-       try {
-         OCC_CATCH_SIGNALS
-         if (MapS.Add(exp.Current())) {
-           Handle(BRepCheck_Result)& res = myMap(exp.Current());
-           res->InContext(S);
-           if (performwire) {
-             for (res->InitContextIterator();
-                  res->MoreShapeInContext();
-                  res->NextShapeInContext()) {
-               if(res->ContextualShape().IsSame(S)) {
-                 break;
-               }
-             }
-             BRepCheck_ListIteratorOfListOfStatus itl(res->StatusOnShape());
-             for (; itl.More(); itl.Next()) {
-               BRepCheck_Status ste = itl.Value();
-               if (ste == BRepCheck_NoCurveOnSurface  ||
-                   ste == BRepCheck_InvalidCurveOnSurface ||
-                   ste == BRepCheck_InvalidRange ||
-                   ste == BRepCheck_InvalidCurveOnClosedSurface) {
-                 performwire = Standard_False;
-                 break;
-               }
-             }
-           }
-         }
-       }
-       catch(Standard_Failure) {
+      for (exp.Init(S,TopAbs_EDGE);exp.More(); exp.Next())
+      {
+        try
+        {
+          OCC_CATCH_SIGNALS
+          if (MapS.Add(exp.Current()))
+          {
+            Handle(BRepCheck_Result)& res = myMap(exp.Current());
+            res->InContext(S);
+            if (performwire)
+            {
+              for (res->InitContextIterator();
+                        res->MoreShapeInContext();
+                        res->NextShapeInContext())
+              {
+                if(res->ContextualShape().IsSame(S))
+                  break;
+              }
+
+              BRepCheck_ListIteratorOfListOfStatus itl(res->StatusOnShape());
+              for (; itl.More(); itl.Next())
+              {
+                BRepCheck_Status ste = itl.Value();
+                if (ste == BRepCheck_NoCurveOnSurface ||
+                    ste == BRepCheck_InvalidCurveOnSurface ||
+                    ste == BRepCheck_InvalidRange ||
+                    ste == BRepCheck_InvalidCurveOnClosedSurface)
+                {
+                  performwire = Standard_False;
+                  break;
+                }
+
+                if(ste == BRepCheck_PCurveIsOutOfDomainFace)
+                {
+                  isFaceOutBoundary = Standard_True;
+                  break;
+                }
+              }//for (; itl.More(); itl.Next())
+            }//if (performwire)
+          }//if (MapS.Add(exp.Current()))
+        }
+        catch(Standard_Failure)
+        {
 #ifdef DEB
-         cout<<"BRepCheck_Analyzer : ";
-         Standard_Failure::Caught()->Print(cout);  
-         cout<<endl;
+          cout<<"BRepCheck_Analyzer : ";
+          Standard_Failure::Caught()->Print(cout);  
+          cout<<endl;
 #endif
+          if ( ! myMap(S).IsNull() )
+            myMap(S)->SetFailStatus(S);
+          
+          Handle(BRepCheck_Result) aRes = myMap(exp.Current());
+
+          if ( ! aRes.IsNull() )
+          {
+            aRes->SetFailStatus(exp.Current());
+            aRes->SetFailStatus(S);
+          }
+        }//catch(Standard_Failure)
+      }//for (exp.Init(S,TopAbs_EDGE);exp.More(); exp.Next())
 
-         if ( ! myMap(S).IsNull() ) {
-           myMap(S)->SetFailStatus(S);
-         }
-         Handle(BRepCheck_Result) aRes = myMap(exp.Current());
-
-         if ( ! aRes.IsNull() ) {
-           aRes->SetFailStatus(exp.Current());
-           aRes->SetFailStatus(S);
-         }
-       }
-      }
       Standard_Boolean orientofwires = performwire;
-      for (exp.Init(S,TopAbs_WIRE);exp.More(); exp.Next()) {
-       try {
-         OCC_CATCH_SIGNALS
-         Handle(BRepCheck_Result)& res = myMap(exp.Current());
-         res->InContext(S);
-         if (orientofwires) {
-           for (res->InitContextIterator();
-                res->MoreShapeInContext();
-                res->NextShapeInContext()) {
-             if(res->ContextualShape().IsSame(S)) {
-               break;
-             }
-           }
-           BRepCheck_ListIteratorOfListOfStatus itl(res->StatusOnShape());
-           for (; itl.More(); itl.Next()) {
-             BRepCheck_Status ste = itl.Value();
-             if (ste != BRepCheck_NoError) {
-               orientofwires = Standard_False;
-               break;
-             }
-           }
-         }       
-       }
-       catch(Standard_Failure) {
+      for (exp.Init(S,TopAbs_WIRE);exp.More(); exp.Next())
+      {
+        try
+        {
+          OCC_CATCH_SIGNALS
+          Handle(BRepCheck_Result)& res = myMap(exp.Current());
+          res->InContext(S);
+          if (orientofwires)
+          {
+            for (res->InitContextIterator();
+                  res->MoreShapeInContext();
+                  res->NextShapeInContext())
+            {
+              if(res->ContextualShape().IsSame(S)) 
+                break;
+            }
+
+            BRepCheck_ListIteratorOfListOfStatus itl(res->StatusOnShape());
+            for (; itl.More(); itl.Next())
+            {
+              BRepCheck_Status ste = itl.Value();
+              if (ste != BRepCheck_NoError)
+              {
+                orientofwires = Standard_False;
+                break;
+              }
+            }
+          }//if (orientofwires)
+        }
+        catch(Standard_Failure)
+        {
 #ifdef DEB
-         cout<<"BRepCheck_Analyzer : ";
-         Standard_Failure::Caught()->Print(cout);  
-         cout<<endl;
+          cout<<"BRepCheck_Analyzer : ";
+          Standard_Failure::Caught()->Print(cout);  
+          cout<<endl;
 #endif
-         if ( ! myMap(S).IsNull() ) {
-           myMap(S)->SetFailStatus(S);
-         }
-         Handle(BRepCheck_Result) aRes = myMap(exp.Current());
-
-         if ( ! aRes.IsNull() ) {
-           aRes->SetFailStatus(exp.Current());
-           aRes->SetFailStatus(S);
-         }
-       }
-      }
-      
-      try {
+          if ( ! myMap(S).IsNull() )
+            myMap(S)->SetFailStatus(S);
+          
+          Handle(BRepCheck_Result) aRes = myMap(exp.Current());
+
+          if ( ! aRes.IsNull() )
+          {
+            aRes->SetFailStatus(exp.Current());
+            aRes->SetFailStatus(S);
+          }
+        }
+      }//for (exp.Init(S,TopAbs_WIRE);exp.More(); exp.Next())
+
+      try
+      {
         OCC_CATCH_SIGNALS
-       if (performwire) {
-         if (orientofwires) {
-           Handle(BRepCheck_Face)::DownCast(myMap(S))->
-             OrientationOfWires(Standard_True);// on enregistre
-         }
-         //    else {
-         //       Handle(BRepCheck_Face)::DownCast(myMap(S))->
-         //          IntersectWires(Standard_True); // on enregistre
-         //      }
-         else {
-           Handle(BRepCheck_Face)::DownCast(myMap(S))->SetUnorientable();
-         }
-       }
-       else {
-         Handle(BRepCheck_Face)::DownCast(myMap(S))->SetUnorientable();
-       }
+        if (performwire)
+        {
+          if (isFaceOutBoundary)
+            Handle(BRepCheck_Face)::DownCast(myMap(S))->
+                                  SetStatus(BRepCheck_OutOfSurfaceBoundary);
+          else if (orientofwires)
+            Handle(BRepCheck_Face)::DownCast(myMap(S))->
+              OrientationOfWires(Standard_True);// on enregistre
+          else
+            Handle(BRepCheck_Face)::DownCast(myMap(S))->
+                                  SetUnorientable();
+        }//if (performwire)
+        else
+          Handle(BRepCheck_Face)::DownCast(myMap(S))->
+                                  SetUnorientable();
       }
-      catch(Standard_Failure) {
+      catch(Standard_Failure)
+      {
 #ifdef DEB
-         cout<<"BRepCheck_Analyzer : ";
-         Standard_Failure::Caught()->Print(cout);  
-         cout<<endl;
+        cout<<"BRepCheck_Analyzer : ";
+        Standard_Failure::Caught()->Print(cout);  
+        cout<<endl;
 #endif
 
-       if ( ! myMap(S).IsNull() ) {
-         myMap(S)->SetFailStatus(S);
-       }
-       
-       for (exp.Init(S,TopAbs_WIRE);exp.More(); exp.Next()) {
-         Handle(BRepCheck_Result) aRes = myMap(exp.Current());
-
-         if ( ! aRes.IsNull() ) {
-           aRes->SetFailStatus(exp.Current());
-           aRes->SetFailStatus(S);
-           myMap(S)->SetFailStatus(exp.Current());
-         }
-       }
-      }
+        if ( ! myMap(S).IsNull() )
+        {
+          myMap(S)->SetFailStatus(S);
+        }
+
+        for (exp.Init(S,TopAbs_WIRE);exp.More(); exp.Next())
+        {
+          Handle(BRepCheck_Result) aRes = myMap(exp.Current());
+
+          if ( ! aRes.IsNull() )
+          {
+            aRes->SetFailStatus(exp.Current());
+            aRes->SetFailStatus(S);
+            myMap(S)->SetFailStatus(exp.Current());
+          }
+        }//for (exp.Init(S,TopAbs_WIRE);exp.More(); exp.Next())
+      }//catch(Standard_Failure)
     }
     break;
-    
-  case TopAbs_SHELL:   
+  case TopAbs_SHELL:
     //modified by NIZNHY-PKV Mon Oct 13 14:23:53 2008f
-    /* {
-    Standard_Boolean VerifyOrientation, bFlag;
-    //
-    VerifyOrientation = Standard_True;
-    //
-    exp.Init(S,TopAbs_FACE);
-    for (; exp.More(); exp.Next()) {
-      const TopoDS_Shape& aF=exp.Current();
-      try {
-       OCC_CATCH_SIGNALS
-       bFlag=  !(Handle(BRepCheck_Face)::DownCast(myMap(aF))->IsUnorientable());
-       VerifyOrientation = (VerifyOrientation && bFlag);
-      }
-      catch(Standard_Failure) {
-#ifdef DEB
-       cout<<"BRepCheck_Analyzer : ";
-       Standard_Failure::Caught()->Print(cout);  
-       cout<<endl;
-#endif
-       
-       if ( ! myMap(S).IsNull() ) {
-         myMap(S)->SetFailStatus(S);
-       }
-       Handle(BRepCheck_Result) aRes = myMap(exp.Current());
-       
-       if ( ! aRes.IsNull() ) {
-         aRes->SetFailStatus(exp.Current());
-         aRes->SetFailStatus(S);
-       }
-      }
-    } // 
-    try {
-      OCC_CATCH_SIGNALS
-      if (VerifyOrientation) {
-       Handle(BRepCheck_Shell)::DownCast(myMap(S))->Orientation(Standard_True);
-      }
-      else {
-       Handle(BRepCheck_Shell)::DownCast(myMap(S))->SetUnorientable();
-      }
-    }
-    catch(Standard_Failure) {
-#ifdef DEB
-      cout<<"BRepCheck_Analyzer : ";
-      Standard_Failure::Caught()->Print(cout);  
-      cout<<endl;
-#endif
-      
-      if ( ! myMap(S).IsNull() ) {
-       myMap(S)->SetFailStatus(S);
-      }
-      exp.Init(S,TopAbs_FACE);
-      for (; exp.More(); exp.Next()) {
-       Handle(BRepCheck_Result) aRes = myMap(exp.Current());
-       if ( ! aRes.IsNull() ) {
-         aRes->SetFailStatus(exp.Current());
-         aRes->SetFailStatus(S);
-         myMap(S)->SetFailStatus(exp.Current());
-       }
-      }
-    }
-  }
-  */
     //modified by NIZNHY-PKV Mon Oct 13 14:24:04 2008t
     break;
-    //
-  case TopAbs_SOLID:    {
-    exp.Init(S,TopAbs_SHELL);
-    for (; exp.More(); exp.Next()) {
-      const TopoDS_Shape& aShell=exp.Current();
-      try {
-       OCC_CATCH_SIGNALS
-       myMap(aShell)->InContext(S);
-      }
-      catch(Standard_Failure) {
+
+  case TopAbs_SOLID:
+    {
+      exp.Init(S,TopAbs_SHELL);
+      for (; exp.More(); exp.Next())
+      {
+        const TopoDS_Shape& aShell=exp.Current();
+        try 
+        {
+          OCC_CATCH_SIGNALS
+          myMap(aShell)->InContext(S);
+        }
+        catch(Standard_Failure)
+        {
 #ifdef DEB
-       cout<<"BRepCheck_Analyzer : ";
-       Standard_Failure::Caught()->Print(cout);  
-       cout<<endl;
+          cout<<"BRepCheck_Analyzer : ";
+          Standard_Failure::Caught()->Print(cout);  
+          cout<<endl;
 #endif
-       if ( ! myMap(S).IsNull() ) {
-         myMap(S)->SetFailStatus(S);
-       }
-       //
-       Handle(BRepCheck_Result) aRes = myMap(aShell);
-       if (!aRes.IsNull() ) {
-         aRes->SetFailStatus(exp.Current());
-         aRes->SetFailStatus(S);
-       }
-      }
+          if ( ! myMap(S).IsNull() )
+          {
+            myMap(S)->SetFailStatus(S);
+          }
+
+          //
+          Handle(BRepCheck_Result) aRes = myMap(aShell);
+          if (!aRes.IsNull() )
+          {
+            aRes->SetFailStatus(exp.Current());
+            aRes->SetFailStatus(S);
+          }
+        }//catch(Standard_Failure)
+      }//for (; exp.More(); exp.Next())
     }
-  }
-  break;//case TopAbs_SOLID
+    break;//case TopAbs_SOLID
   default:
     break;
   }//switch (styp) {
index efe5ace99e655e2526d43ee4dd36b8087becf52f..b937d5edf9a30a19dbe41fd002c57dffe71b056e 100755 (executable)
 #include <Precision.hxx>
 
 
-//modified by NIZNHY-PKV Thu May 05 09:01:57 2011f
 static 
-  Standard_Boolean Validate(const Adaptor3d_Curve&,
-                           const Adaptor3d_CurveOnSurface&,
-                           const Standard_Real,
-                           const Standard_Boolean);
+  BRepCheck_Status Validate(const Adaptor3d_Curve&, 
+                            const Adaptor3d_CurveOnSurface&,
+                            const Standard_Real,
+                            const Standard_Boolean,
+                            const Standard_Boolean theSurfIsUPeriodic,
+                            const Standard_Boolean theSurfIsVPeriodic);
+
 static
   void PrintProblematicPoint(const gp_Pnt&,
                             const Standard_Real,
@@ -83,13 +85,9 @@ static
 static
   Standard_Real PrecSurface(const Adaptor3d_CurveOnSurface& aACS);
 
-//static Standard_Boolean Validate(const Adaptor3d_Curve&,
-//                              const Adaptor3d_Curve&,
-//                              const Standard_Real,
-//                              const Standard_Boolean);
 //modified by NIZNHY-PKV Thu May 05 09:02:01 2011t
 
-#define NCONTROL 23
+static const Standard_Integer aNbControl = 23;
 
 //=======================================================================
 //function : BRepCheck_Edge
@@ -219,9 +217,9 @@ void BRepCheck_Edge::Minimum()
 
 void BRepCheck_Edge::InContext(const TopoDS_Shape& S)
 {
-  if (myMap.IsBound(S)) {
+  if (myMap.IsBound(S))
     return;
-  }
+
   BRepCheck_ListOfStatus thelist;
   myMap.Bind(S, thelist);
   BRepCheck_ListOfStatus& lst = myMap(S);
@@ -230,191 +228,238 @@ void BRepCheck_Edge::InContext(const TopoDS_Shape& S)
   Standard_Real Tol = BRep_Tool::Tolerance(TopoDS::Edge(myShape));
 
   TopAbs_ShapeEnum styp = S.ShapeType();
-//  for (TopExp_Explorer exp(S,TopAbs_EDGE); exp.More(); exp.Next()) {
   TopExp_Explorer exp(S,TopAbs_EDGE) ;
-  for ( ; exp.More(); exp.Next()) {
-    if (exp.Current().IsSame(myShape)) {
+  for ( ; exp.More(); exp.Next())
+  {
+    if (exp.Current().IsSame(myShape))
       break;
-    }
   }
-  if (!exp.More()) {
+
+  if (!exp.More())
+  {
     BRepCheck::Add(lst,BRepCheck_SubshapeNotInShape);
     return;
   }
-  
-  switch (styp) {
-  case TopAbs_FACE:
-    if (!myCref.IsNull()) {
-      
-      Standard_Boolean SameParameter = TE->SameParameter();
-      Standard_Boolean SameRange = TE->SameRange();
-//  Modified by skv - Tue Apr 27 11:48:13 2004 Begin
-      if (!SameParameter || !SameRange) {
-       if (!SameParameter)
-         BRepCheck::Add(lst,BRepCheck_InvalidSameParameterFlag);
-       if (!SameRange)
-         BRepCheck::Add(lst,BRepCheck_InvalidSameRangeFlag);
-
-       return;
-      }
-//  Modified by skv - Tue Apr 27 11:48:14 2004 End
-      Standard_Real First = myHCurve->FirstParameter();
-      Standard_Real Last  = myHCurve->LastParameter();
-
-      Handle(BRep_TFace)& TF = *((Handle(BRep_TFace)*) &S.TShape());
-      const TopLoc_Location& Floc = S.Location();
-      const TopLoc_Location& TFloc = TF->Location();
-      const Handle(Geom_Surface)& Su = TF->Surface();
-      TopLoc_Location L = (Floc * TFloc).Predivided(myShape.Location());
-      Standard_Boolean pcurvefound = Standard_False;
-
-      BRep_ListIteratorOfListOfCurveRepresentation itcr(TE->Curves());
-      while (itcr.More()) {
-       const Handle(BRep_CurveRepresentation)& cr = itcr.Value();
-       if (cr != myCref && cr->IsCurveOnSurface(Su,L)) {
-         pcurvefound = Standard_True;
-         const Handle(BRep_GCurve)& GC = *((Handle(BRep_GCurve)*)&cr);
-         Standard_Real f,l;
-         GC->Range(f,l);
-          // gka OCC
-//  Modified by skv - Tue Apr 27 11:50:35 2004 Begin
-//       if (SameRange && (fabs(f-First) > Precision::PConfusion() || fabs(l-Last)> Precision::PConfusion())) { //f != First || l != Last)) { gka OCC
-         if (fabs(f-First) > Precision::PConfusion() ||
-             fabs(l-Last)  > Precision::PConfusion()) {
-           BRepCheck::Add(lst,BRepCheck_InvalidSameRangeFlag);
-           BRepCheck::Add(lst,BRepCheck_InvalidSameParameterFlag);
-//         if (SameParameter) {
-//           BRepCheck::Add(lst,BRepCheck_InvalidSameParameterFlag);
-//         }
-         }
-//  Modified by skv - Tue Apr 27 11:50:37 2004 End
-         if (myGctrl) {
-           Handle(Geom_Surface) Sb = cr->Surface();
-           Sb = Handle(Geom_Surface)::DownCast
-//           (Su->Transformed(L.Transformation()));
-             (Su->Transformed(/*L*/(Floc * TFloc).Transformation()));
-           Handle(Geom2d_Curve) PC = cr->PCurve();
-           Handle(GeomAdaptor_HSurface) GAHS = new GeomAdaptor_HSurface(Sb);
-           Handle(Geom2dAdaptor_HCurve) GHPC = new Geom2dAdaptor_HCurve(PC,f,l);
-           Adaptor3d_CurveOnSurface ACS(GHPC,GAHS);
-           Standard_Boolean ok = 
-             Validate(myHCurve->Curve(),ACS,Tol,SameParameter);
-           if (!ok) {
-             if (cr->IsCurveOnClosedSurface()) {
-               BRepCheck::Add(lst,BRepCheck_InvalidCurveOnClosedSurface);
-             }
-             else {
-               BRepCheck::Add(lst,BRepCheck_InvalidCurveOnSurface);
-             }
-//  Modified by skv - Tue Apr 27 11:53:00 2004 Begin
-             BRepCheck::Add(lst,BRepCheck_InvalidSameParameterFlag);
-//           if (SameParameter) {
-//             BRepCheck::Add(lst,BRepCheck_InvalidSameParameterFlag);
-//           }
-//  Modified by skv - Tue Apr 27 11:53:01 2004 End
-           }
-           if (cr->IsCurveOnClosedSurface()) {
-             GHPC->ChangeCurve2d().Load(cr->PCurve2(),f,l); // same bounds
-             ACS.Load(GAHS); // sans doute inutile
-             ACS.Load(GHPC); // meme remarque...
-             ok = Validate(myHCurve->Curve(),ACS,Tol,SameParameter);
-             if (!ok) {
-               BRepCheck::Add(lst,BRepCheck_InvalidCurveOnClosedSurface);
-//  Modified by skv - Tue Apr 27 11:53:20 2004 Begin
-               if (SameParameter) {
-                 BRepCheck::Add(lst,BRepCheck_InvalidSameParameterFlag);
-               }
-//  Modified by skv - Tue Apr 27 11:53:23 2004 End
-             }
-           }
-         }
-       }
-       itcr.Next();
-      }
 
-      if (!pcurvefound) {
-       Handle(Geom_Plane) P;
-       Handle(Standard_Type) dtyp = Su->DynamicType();
-       if (dtyp == STANDARD_TYPE(Geom_RectangularTrimmedSurface)) {
-         P = Handle(Geom_Plane)::DownCast
-           (Handle(Geom_RectangularTrimmedSurface)::
-            DownCast(Su)->BasisSurface());
-       }
-       else {
-         P = Handle(Geom_Plane)::DownCast(Su);
-       }
-       if (P.IsNull()) { // not a plane
-         BRepCheck::Add(lst,BRepCheck_NoCurveOnSurface);
-       }
-       else { // on fait la projection a la volee, comme BRep_Tool
-         // plan en position
-         if (myGctrl) {
-           P = Handle(Geom_Plane)::
-             DownCast(P->Transformed(/*L*/(Floc * TFloc).Transformation()));// eap occ332
-           //on projette Cref sur ce plan
-           Handle(GeomAdaptor_HSurface) GAHS = new GeomAdaptor_HSurface(P);
-
-           // Dub - Normalement myHCurve est une GeomAdaptor_HCurve
-           GeomAdaptor_Curve& Gac = 
-             Handle(GeomAdaptor_HCurve)::DownCast(myHCurve)->ChangeCurve();
-           Handle(Geom_Curve) C3d = Gac.Curve();
-           Handle(Geom_Curve) ProjOnPlane = 
-             GeomProjLib::ProjectOnPlane(new Geom_TrimmedCurve(C3d,First,Last),
-                                         P, P->Position().Direction(),
-                                         Standard_True);
-           Handle(GeomAdaptor_HCurve) aHCurve = 
-             new GeomAdaptor_HCurve(ProjOnPlane);
-
-           ProjLib_ProjectedCurve proj(GAHS,aHCurve);
-           Handle(Geom2d_Curve) PC = Geom2dAdaptor::MakeCurve(proj);
-           Handle(Geom2dAdaptor_HCurve) GHPC = 
-             new Geom2dAdaptor_HCurve(PC,
-                                      myHCurve->FirstParameter(),
-                                      myHCurve->LastParameter());
-
-           Adaptor3d_CurveOnSurface ACS(GHPC,GAHS);
-           
-           Standard_Boolean ok = Validate(myHCurve->Curve(),ACS,
-                                          Tol,Standard_True); // voir dub...
-           if (!ok) {
-             BRepCheck::Add(lst,BRepCheck_InvalidCurveOnSurface);
-           }
-         }
-       }
-      }
-    }
-    break;
-  case TopAbs_SOLID:
-    {
-      // on verifie que l`edge est bien connectee 2 fois (pas de bord libre)
-      Standard_Integer nbconnection = 0;
-      //TopExp_Explorer exp;
-      for (exp.Init(S,TopAbs_FACE); exp.More(); exp.Next()) {
-       const TopoDS_Face& fac = TopoDS::Face(exp.Current());
-       TopExp_Explorer exp2;
-       for (exp2.Init(fac,TopAbs_EDGE); exp2.More(); exp2.Next()) {
-         if (exp2.Current().IsSame(myShape)) {
-           nbconnection++;
-         }
-       }
-      }
-      if (nbconnection < 2 && !TE->Degenerated()) {
-       BRepCheck::Add(myMap(S),BRepCheck_FreeEdge);
-      }
-      else if (nbconnection > 2) {
-       BRepCheck::Add(myMap(S),BRepCheck_InvalidMultiConnexity);
+  switch (styp)
+  {
+    case TopAbs_FACE:
+      if (myCref.IsNull())
+        break;
+
+      {
+        Standard_Boolean SameParameter = TE->SameParameter();
+        Standard_Boolean SameRange = TE->SameRange();
+
+        if (!SameParameter || !SameRange)
+        {
+          if (!SameParameter)
+            BRepCheck::Add(lst,BRepCheck_InvalidSameParameterFlag);
+
+          if (!SameRange)
+            BRepCheck::Add(lst,BRepCheck_InvalidSameRangeFlag);
+
+          return;
+        }//if (!SameParameter || !SameRange)
+
+        const Standard_Real First = myHCurve->FirstParameter();
+        const Standard_Real Last  = myHCurve->LastParameter();
+
+        Handle(BRep_TFace)& TF = *((Handle(BRep_TFace)*) &S.TShape());
+        const TopLoc_Location& Floc = S.Location();
+        const TopLoc_Location& TFloc = TF->Location();
+        const Handle(Geom_Surface)& Su = TF->Surface();
+        TopLoc_Location L = (Floc * TFloc).Predivided(myShape.Location());
+        Standard_Boolean pcurvefound = Standard_False;
+
+        BRep_ListIteratorOfListOfCurveRepresentation itcr(TE->Curves());
+        
+        while (itcr.More())
+        {
+          const Handle(BRep_CurveRepresentation)& cr = itcr.Value();
+          if (cr != myCref && cr->IsCurveOnSurface(Su,L))
+          {
+            pcurvefound = Standard_True;
+            const Handle(BRep_GCurve)& GC = *((Handle(BRep_GCurve)*)&cr);
+            Standard_Real f,l;
+            GC->Range(f,l);
+
+            if (fabs(f-First) > Precision::PConfusion() ||
+                              fabs(l-Last)  > Precision::PConfusion())
+            {
+              BRepCheck::Add(lst,BRepCheck_InvalidSameRangeFlag);
+              BRepCheck::Add(lst,BRepCheck_InvalidSameParameterFlag);
+            }
+
+            if (myGctrl)
+            {
+              Handle(Geom_Surface) Sb = cr->Surface();
+              {
+                Standard_Real U1Su, U2Su, V1Su, V2Su;
+                Standard_Real U1Sb, U2Sb, V1Sb, V2Sb;
+                
+                Standard_Boolean isTrimU, isTrimV;
+                if(Su->DynamicType() == STANDARD_TYPE(Geom_RectangularTrimmedSurface))
+                {
+                  Handle(Geom_RectangularTrimmedSurface) TS = 
+                        Handle(Geom_RectangularTrimmedSurface)::DownCast(Su);
+
+                  TS->GetTrimmedFlags(isTrimU, isTrimV);
+                }
+                
+                Su->Bounds(U1Su, U2Su, V1Su, V2Su);
+                Sb = Handle(Geom_Surface)::DownCast
+                      (Su->Transformed((Floc * TFloc).Transformation()));
+
+                Sb->Bounds(U1Sb, U2Sb, V1Sb, V2Sb);
+                Standard_Boolean  isUtr = ((Abs(U1Su - U1Sb) + Abs(U2Su - U2Sb)) > Precision::PConfusion()), 
+                                  isVtr = ((Abs(V1Su - V1Sb) + Abs(V2Su - V2Sb)) > Precision::PConfusion());
+
+                if(isUtr || isVtr)
+                {
+                  Handle(Geom_Surface) St = Handle(Geom_RectangularTrimmedSurface)::DownCast(Sb)->BasisSurface();
+                  Sb = new Geom_RectangularTrimmedSurface(St, isTrimU || isUtr, isVtr || isTrimV, U1Su, U2Su, V1Su, V2Su);
+                }
+              }
+
+              Handle(Geom2d_Curve) PC = cr->PCurve();
+              Handle(GeomAdaptor_HSurface) GAHS = new GeomAdaptor_HSurface(Sb);
+              Handle(Geom2dAdaptor_HCurve) GHPC = new Geom2dAdaptor_HCurve(PC,f,l);
+              Adaptor3d_CurveOnSurface ACS(GHPC,GAHS);
+              BRepCheck_Status aStatus = Validate(myHCurve->Curve(),ACS,Tol,SameParameter,
+                                  Sb->IsUPeriodic(),Sb->IsVPeriodic());
+
+              if(aStatus == BRepCheck_PCurveIsOutOfDomainFace)
+                  BRepCheck::Add(lst,BRepCheck_PCurveIsOutOfDomainFace);
+              else if(aStatus == BRepCheck_InvalidCurveOnSurface)
+              {
+                if (cr->IsCurveOnClosedSurface())
+                  BRepCheck::Add(lst,BRepCheck_InvalidCurveOnClosedSurface);
+                else
+                  BRepCheck::Add(lst,BRepCheck_InvalidCurveOnSurface);
+
+                BRepCheck::Add(lst,BRepCheck_InvalidSameParameterFlag);
+              }
+              else if(aStatus != BRepCheck_NoError)
+                BRepCheck::Add(lst,aStatus);
+
+              if (cr->IsCurveOnClosedSurface())
+              {
+                GHPC->ChangeCurve2d().Load(cr->PCurve2(),f,l); // same bounds
+                ACS.Load(GAHS); // sans doute inutile
+                ACS.Load(GHPC); // meme remarque...
+                aStatus = Validate(myHCurve->Curve(),ACS,Tol,SameParameter,
+                              Sb->IsUPeriodic(),Sb->IsVPeriodic());
+
+                if(aStatus == BRepCheck_PCurveIsOutOfDomainFace)
+                  BRepCheck::Add(lst,BRepCheck_PCurveIsOutOfDomainFace);
+                else if(aStatus == BRepCheck_InvalidCurveOnSurface)
+                {
+                  BRepCheck::Add(lst,BRepCheck_InvalidCurveOnClosedSurface);
+                  if (SameParameter)
+                    BRepCheck::Add(lst,BRepCheck_InvalidSameParameterFlag);
+                }
+                else if(aStatus != BRepCheck_NoError)
+                  BRepCheck::Add(lst,aStatus);
+              }//if (cr->IsCurveOnClosedSurface())
+            }//if (myGctrl)
+          }//if (cr != myCref && cr->IsCurveOnSurface(Su,L))
+          itcr.Next();
+        }//while (itcr.More())
+        
+        if (!pcurvefound)
+        {
+          Handle(Geom_Plane) P;
+          Handle(Standard_Type) dtyp = Su->DynamicType();
+          if (dtyp == STANDARD_TYPE(Geom_RectangularTrimmedSurface))
+          {
+            P = Handle(Geom_Plane)::DownCast
+                    (Handle(Geom_RectangularTrimmedSurface)::
+                    DownCast(Su)->BasisSurface());
+          }
+          else
+            P = Handle(Geom_Plane)::DownCast(Su);
+          
+          if (P.IsNull()) // not a plane
+            BRepCheck::Add(lst,BRepCheck_NoCurveOnSurface);
+          else
+          {
+  // on fait la projection a la volee, comme BRep_Tool plan en position
+            if (myGctrl)
+            {
+              P = Handle(Geom_Plane)::DownCast(
+                    P->Transformed((Floc * TFloc).Transformation()));// eap occ332
+
+              //on projette Cref sur ce plan
+              Handle(GeomAdaptor_HSurface) GAHS = new GeomAdaptor_HSurface(P);
+
+              // Dub - Normalement myHCurve est une GeomAdaptor_HCurve
+              GeomAdaptor_Curve& Gac = 
+                Handle(GeomAdaptor_HCurve)::DownCast(myHCurve)->ChangeCurve();
+
+              Handle(Geom_Curve) C3d = Gac.Curve();
+              Handle(Geom_Curve) ProjOnPlane = 
+                GeomProjLib::ProjectOnPlane(new Geom_TrimmedCurve(C3d,First,Last),
+                P, P->Position().Direction(),Standard_True);
+
+              Handle(GeomAdaptor_HCurve) aHCurve = 
+                                          new GeomAdaptor_HCurve(ProjOnPlane);
+
+              ProjLib_ProjectedCurve proj(GAHS,aHCurve);
+              Handle(Geom2d_Curve) PC = Geom2dAdaptor::MakeCurve(proj);
+              Handle(Geom2dAdaptor_HCurve) GHPC = new Geom2dAdaptor_HCurve(PC,
+                                myHCurve->FirstParameter(),
+                                myHCurve->LastParameter());
+
+              Adaptor3d_CurveOnSurface ACS(GHPC,GAHS);
+
+              BRepCheck_Status aStatus = Validate(myHCurve->Curve(),ACS,Tol,
+                    Standard_True, P->IsUPeriodic(),P->IsVPeriodic()); // voir dub...
+
+              if (aStatus != BRepCheck_NoError)
+                BRepCheck::Add(lst,aStatus);
+            }//if (myGctrl)
+          }//else of "if (P.IsNull())" condition
+        }//if (!pcurvefound)
+
+        break;
       }
-      else {
-       BRepCheck::Add(myMap(S),BRepCheck_NoError);
+    case TopAbs_SOLID:
+      {
+        // on verifie que l`edge est bien connectee 2 fois (pas de bord libre)
+        Standard_Integer nbconnection = 0;
+
+        //TopExp_Explorer exp;
+        for (exp.Init(S,TopAbs_FACE); exp.More(); exp.Next())
+        {
+          const TopoDS_Face& fac = TopoDS::Face(exp.Current());
+          TopExp_Explorer exp2;
+          
+          for (exp2.Init(fac,TopAbs_EDGE); exp2.More(); exp2.Next())
+          {
+            if (exp2.Current().IsSame(myShape))
+              nbconnection++;
+          }//for (exp2.Init(fac,TopAbs_EDGE); exp2.More(); exp2.Next())
+        }//for (exp.Init(S,TopAbs_FACE); exp.More(); exp.Next())
+
+        if (nbconnection < 2 && !TE->Degenerated())
+          BRepCheck::Add(myMap(S),BRepCheck_FreeEdge);
+        else if (nbconnection > 2)
+        {
+          BRepCheck::Add(myMap(S),BRepCheck_InvalidMultiConnexity);
+        }
+        else
+          BRepCheck::Add(myMap(S),BRepCheck_NoError);
+        
       }
-    }
-    break;
-  default:
-    break;
-  }
-  if (myMap(S).IsEmpty()) {
+      break;
+
+    default:
+      break;
+  }//switch (styp)
+
+  if (myMap(S).IsEmpty())
     myMap(S).Append(BRepCheck_NoError);
-  }
 }
 
 
@@ -536,8 +581,8 @@ Standard_Real BRepCheck_Edge::Tolerance()
   Standard_Real dist2, tol2, tolCal=0., prm;
   gp_Pnt center, othP;
   Standard_Integer i, imax;
-  for (i= 0; i< NCONTROL; i++) {
-    prm = ((NCONTROL-1-i)*First + i*Last)/(NCONTROL-1);
+  for (i= 0; i< aNbControl; i++) {
+    prm = ((aNbControl-1-i)*First + i*Last)/(aNbControl-1);
     tol2=dist2=0.;
     center=(*(Handle(Adaptor3d_HCurve)*)&theRep(1))->Value(prm);
     for (iRep=2; iRep<=nbRep; iRep++) {
@@ -556,132 +601,224 @@ Standard_Real BRepCheck_Edge::Tolerance()
 
 //=======================================================================
 //function : Validate
-//purpose  : 
+//purpose  :
+//Remark : If the original surface is not periodic in U or V direction
+//         (for example, rectangular trimmed on periodic surface),
+//         the surface that <Adaptor3d_CurveOnSurface> contains
+//         can be periodic.
+//         To use true values of flags, the parameters
+//         <theSurfIsUPeriodic> and <theSurfIsVPeriodic> have been added.
 //=======================================================================
-Standard_Boolean Validate(const Adaptor3d_Curve& CRef,
-                         const Adaptor3d_CurveOnSurface& Other,
-                         const Standard_Real Tol,
-                         const Standard_Boolean SameParameter)
-{
-  Standard_Boolean  Status, proj; 
+BRepCheck_Status Validate (const Adaptor3d_Curve& CRef,
+                           const Adaptor3d_CurveOnSurface& Other,
+                           const Standard_Real Tol,
+                           const Standard_Boolean SameParameter,
+                           const Standard_Boolean theSurfIsUPeriodic,
+                           const Standard_Boolean theSurfIsVPeriodic)
+  {
+  BRepCheck_Status  Status;
+  Standard_Boolean  proj;
   Standard_Real aPC, First, Last, Error;
   gp_Pnt  problematic_point ;
+
   //
-  Status = Standard_True;
+  Status = BRepCheck_NoError;
   Error = 0.;
   First = CRef.FirstParameter();
   Last  = CRef.LastParameter();
   //
+
   aPC=Precision::PConfusion();
-  proj = (!SameParameter || 
-         fabs(Other.FirstParameter()-First) > aPC || 
-         fabs( Other.LastParameter()-Last) > aPC);
-  if (!proj) {
+  proj = (!SameParameter ||
+          fabs(Other.FirstParameter()-First) > aPC ||
+          fabs( Other.LastParameter()-Last) > aPC);
+
+  if (!proj)
+  {
     Standard_Integer i;
     Standard_Real Tol2, prm, dD;
     gp_Pnt pref, pother;
+
     //modified by NIZNHY-PKV Thu May 05 09:06:41 2011f
     //OCC22428
     dD=Prec(CRef, Other);//3.e-15;
     Tol2=Tol+dD;
     Tol2=Tol2*Tol2;
+
     //Tol2=Tol*Tol;
     //modified by NIZNHY-PKV Thu May 05 09:06:47 2011t
+
+    const Handle(Adaptor3d_HSurface) aHS = Other.GetSurface();
     
-    for (i = 0; i< NCONTROL; ++i) {
-      prm = ((NCONTROL-1-i)*First + i*Last)/(NCONTROL-1);
+    Standard_Real uf = aHS->FirstUParameter ();
+    Standard_Real ul = aHS->LastUParameter ();
+    Standard_Real vf = aHS->FirstVParameter();
+    Standard_Real vl = aHS->LastVParameter();
+
+    //(for Rectangular trimmed surface for example)
+    const Standard_Boolean isBaseSurfUPeriodic = aHS->IsUPeriodic();
+    const Standard_Boolean isBaseSurfVPeriodic = aHS->IsVPeriodic();
+
+    const Standard_Boolean isUPeriodic = isBaseSurfUPeriodic || theSurfIsUPeriodic;
+    const Standard_Boolean isVPeriodic = isBaseSurfVPeriodic || theSurfIsVPeriodic;
+
+
+    const Standard_Real UResSt = aHS->UResolution(Max(Tol,1.0));
+    const Standard_Real VResSt = aHS->VResolution(Max(Tol,1.0));
+
+    const Standard_Real
+      URes = isUPeriodic? Max(Precision::PConfusion(),aHS->UResolution(Tol)) : UResSt, 
+      VRes = isVPeriodic? Max(Precision::PConfusion(),aHS->VResolution(Tol)) : VResSt;
+
+    for (i = 0; i < aNbControl; ++i)
+    {
+      prm = ((aNbControl-1-i)*First + i*Last)/(aNbControl-1);
       pref = CRef.Value(prm);
       pother = Other.Value(prm);
-      if (pref.SquareDistance(pother) > Tol2) {
-       problematic_point = pref ;
-       Status = Standard_False;
-       Error  = pref.Distance(pother);
-       PrintProblematicPoint(problematic_point, Error, Tol);
-       return Status;
+
+      if (pref.SquareDistance(pother) > Tol2)
+      {
+        problematic_point = pref ;
+        Status = BRepCheck_InvalidCurveOnSurface;
+        Error  = pref.Distance(pother);
+        PrintProblematicPoint(problematic_point, Error, Tol);
+        return Status;
         //goto FINISH ;
       }
-    }
+
+      gp_Pnt2d CP = Other.GetCurve()->Value(prm);
+
+      Standard_Boolean isUbound = ( (uf-URes <= CP.X()) && 
+                                    (CP.X() <= ul+URes));
+      Standard_Boolean isVbound = ( (vf-VRes <= CP.Y()) && 
+                                    (CP.Y() <= vl+VRes));
+
+      //Point CP is in surface boundary.
+      if(isUbound && isVbound)
+        continue;
+
+#ifdef DEB
+      if(!isUbound)
+      {
+        cout << endl << "++++\nFunction Validate(...); file: "
+                                       "BRepCheck_Edge.cxx" << endl;
+        if(isUPeriodic)
+          cout << "(U-periodic)" << endl;
+        
+        cout << "Point #"<< i << "(prm = " << prm << "): (" << 
+                            CP.X() << "; " << CP.Y() <<")." << endl;
+        cout << "u = (" << uf << ")...(" << ul << "). "
+          "Delta = " << Max(uf - CP.X(),CP.X()-ul) << 
+          " Tol3D = " << Tol <<". URes = " << URes << "\n-----"<< endl;
+      }
+      
+      if(!isVbound)
+      {
+        cout << endl << "++++\nFunction Validate(...); file: "
+                                       "BRepCheck_Edge.cxx" << endl;
+        if(isVPeriodic)
+          cout << "(V-periodic)" << endl;
+        
+        cout << "Point #"<< i << "(prm = " << prm << "): (" << 
+                            CP.X() << "; " << CP.Y() <<")." << endl;
+        cout << "v = (" << vf << ")...(" << vl << "). "
+          "Delta = " << Max(vf - CP.Y(),CP.Y()-vl) << 
+          " Tol3D = " << Tol <<". VRes = " << VRes << "\n-----"<< endl;
   }
-  else {
+#endif
+
+      Status = BRepCheck_PCurveIsOutOfDomainFace;
+      return Status;
+    }//for (i = 0; i< NCONTROL; ++i)
+  }//if (!proj)
+  else
+  {
     Extrema_LocateExtPC refd,otherd;
     Standard_Real OFirst = Other.FirstParameter();
     Standard_Real OLast  = Other.LastParameter();
     gp_Pnt pd = CRef.Value(First);
     gp_Pnt pdo = Other.Value(OFirst);
     Standard_Real distt = pd.SquareDistance(pdo);
-    if (distt > Tol*Tol) {
+    
+    if (distt > Tol*Tol)
+    {
       problematic_point = pd ;
-      Status = Standard_False ;
+      Status = BRepCheck_InvalidCurveOnSurface ;
       Error = Sqrt(distt);
       PrintProblematicPoint(problematic_point, Error, Tol);
       return Status;
       //goto FINISH ;
-    }
+      }
+
     pd = CRef.Value(Last);
     pdo = Other.Value(OLast);
     distt = pd.SquareDistance(pdo);
-    if (distt > Tol*Tol) {
+
+    if (distt > Tol*Tol)
+    {
       problematic_point = pd ;
-      Status = Standard_False ;
+      Status = BRepCheck_InvalidCurveOnSurface ;
       Error = Sqrt(distt);
       PrintProblematicPoint(problematic_point, Error, Tol);
       return Status;
       //goto FINISH ;
-    }
+      }
 
     refd.Initialize(CRef,First,Last,CRef.Resolution(Tol));
     otherd.Initialize(Other,OFirst,OLast,Other.Resolution(Tol));
-    for (Standard_Integer i = 2; i< NCONTROL-1; i++) {
-      Standard_Real rprm = ((NCONTROL-1-i)*First + i*Last)/(NCONTROL-1);
+
+    for (Standard_Integer i = 2; i< aNbControl-1; i++)
+    {
+      Standard_Real rprm = ((aNbControl-1-i)*First + i*Last)/(aNbControl-1);
       gp_Pnt pref = CRef.Value(rprm);
-      Standard_Real oprm = ((NCONTROL-1-i)*OFirst + i*OLast)/(NCONTROL-1);
+      Standard_Real oprm = ((aNbControl-1-i)*OFirst + i*OLast)/(aNbControl-1);
       gp_Pnt pother = Other.Value(oprm);
       refd.Perform(pother,rprm);
-      if (!refd.IsDone() || refd.SquareDistance() > Tol * Tol) {
-       problematic_point = pref ;
-       Status = Standard_False ;
-       if (refd.IsDone()) {
-         Error = sqrt (refd.SquareDistance());
-       }
-       else {
-         Error = RealLast();
-       }
-       PrintProblematicPoint(problematic_point, Error, Tol);
-       return Status;
+
+      if (!refd.IsDone() || refd.SquareDistance() > Tol * Tol)
+      {
+        problematic_point = pref ;
+        Status = BRepCheck_InvalidCurveOnSurface ;
+        
+        if (refd.IsDone())
+        {
+          Error = sqrt (refd.SquareDistance());
+        }
+        else
+        {
+          Error = RealLast();
+        }
+
+        PrintProblematicPoint(problematic_point, Error, Tol);
+        return Status;
         //goto FINISH ;
-      }
+        }
+
       otherd.Perform(pref,oprm);
-      if (!otherd.IsDone() || otherd.SquareDistance() > Tol * Tol) {
-       problematic_point = pref ;
-       Status = Standard_False ;
-       if (otherd.IsDone()) {
-         Error = sqrt (otherd.SquareDistance());
-       }
-       else {
-         Error = RealLast();
-       }
-       PrintProblematicPoint(problematic_point, Error, Tol);
-       return Status;
-       //goto FINISH ;
+
+      if (!otherd.IsDone() || otherd.SquareDistance() > Tol * Tol)
+      {
+        problematic_point = pref ;
+        Status = BRepCheck_InvalidCurveOnSurface ;
+        if (otherd.IsDone())
+        {
+          Error = sqrt (otherd.SquareDistance());
+        }
+        else
+        {
+          Error = RealLast();
+        }
+
+        PrintProblematicPoint(problematic_point, Error, Tol);
+        return Status;
+        //goto FINISH ;
+        }
       }
     }
-  }
-  //FINISH :
-/*
-#ifdef DEB
-    if (! Status) {
-      cout << " **** probleme de SameParameter au point :" << endl;
-      cout << "         " << problematic_point.Coord(1) << " " 
-          << problematic_point.Coord(2) << " " 
-          << problematic_point.Coord(3) << endl ;
-      cout << "   Erreur detectee :" << Error << " Tolerance :" << Tol << endl;
-    }
-#endif
-*/
 
   return Status ;
-  
 }
+
 //=======================================================================
 //function : Prec
 //purpose  : 
index ea7f5ff5c3bf87fefd2700e5a5e753c501ccfab8..3ea7d0e1c5bcec5e1cacbf55ac894a392cc1dab3 100755 (executable)
@@ -73,6 +73,13 @@ is
     
        is static;
 
+    SetStatus(me: mutable;
+              theStatus:Status from BRepCheck)
+
+          --- Purpose: Sets status of Face;
+       is static;
+
+
 
     IsUnorientable(me)
     
index 14a6e10e181ca8d72772f2eee22856b159274542..e97afc4bac87d3e8b947fae2fda58491a876bbdb 100755 (executable)
@@ -451,6 +451,15 @@ void BRepCheck_Face::SetUnorientable()
   BRepCheck::Add(myMap(myShape),BRepCheck_UnorientableShape);
 }
 
+//=======================================================================
+//function :   SetStatus
+//purpose  : 
+//=======================================================================
+
+void BRepCheck_Face::SetStatus(const BRepCheck_Status theStatus)
+{
+    BRepCheck::Add(myMap(myShape),theStatus);
+}
 
 //=======================================================================
 //function : IsUnorientable
index 25610f02f43c27cf1dbf2629255a3df7311253f0..87da8f5e22714d2656bee98e77e370881d2a3e23 100755 (executable)
@@ -388,7 +388,7 @@ Standard_Boolean IsDistanceIn3DTolerance (const BRepAdaptor_Surface& /*aFaceSurf
 #ifdef DEB
   cout << endl;
   cout << "--------Function IsDistanceIn3DTolerance(...)----------"                                                                                            << endl;
-  cout << "--- BRepCheck Wire: Closed3d -> Error"                                                                                                                                                                      << endl;
+    cout << "--- BRepCheck Wire: Not closed in 3D"                                                                                                                                           << endl;
   cout << "--- Dist (" << Dist << ") > Tol3d (" << aTol3d << ")"                                                                                                       << endl;
   cout << "Pnt1(" << thePnt_f.X() << "; " << thePnt_f.Y() << "; " << thePnt_f.Z() << ")"       << endl;
   cout << "Pnt2(" << thePnt_l.X() << "; " << thePnt_l.Y() << "; " << thePnt_l.Z() << ")"       << endl;
@@ -421,7 +421,7 @@ Standard_Boolean IsDistanceIn2DTolerance (const BRepAdaptor_Surface& aFaceSurfac
     {
     cout << endl;
     cout << "--------Function IsDistanceIn2DTolerance(...)----------"                                                          << endl;
-    cout << "--- BRepCheck Wire: Not closed in 2d"                                                                                                                               << endl;
+    cout << "--- BRepCheck Wire: Not closed in 2D"                                                                                                                                     << endl;
     cout << "*****************************************************"                                                                    << endl;
     cout << "*dumin = " << dumin << "; dumax = " << dumax                                                                                                              << endl;
     cout << "* dvmin = " << dvmin << "; dvmax = " << dvmax                                                                                                     << endl;
@@ -470,7 +470,7 @@ Standard_Boolean IsDistanceIn2DTolerance (const BRepAdaptor_Surface& aFaceSurfac
     {
     cout << endl;
     cout << "--------Function IsDistanceIn2DTolerance(...)----------"                                                  << endl;
-    cout << "--- BRepCheck Wire: Not closed in 2d"                                                                                                                     << endl;
+    cout << "--- BRepCheck Wire: Not closed in 2D"                                                                                                                             << endl;
     cout << "*****************************************************"                                                            << endl;
     cout << "* Dist = " << Dist        << " > Tol2d = " <<     aTol2d                                                                                          << endl;
     cout << "*****************************************************"                                                            << endl;
index a397553197e09f35c15e7232ca9935f07cb3a7e6..e51155dcd97b85e98c1457a2b4b9722c2af99b5b 100755 (executable)
 
 //pmn 26/09/97 Add parameters of approximation in BuildCurve3d
 //  Modified by skv - Thu Jun  3 12:39:19 2004 OCC5898
-
 #include <BRepLib.ixx>
-#include <BRepAdaptor_Surface.hxx>
-#include <BRepAdaptor_HSurface.hxx>
-#include <BRepAdaptor_HCurve2d.hxx>
-#include <BRep_Tool.hxx>
+#include <Adaptor3d_CurveOnSurface.hxx>
+#include <AdvApprox_ApproxAFunction.hxx>
+#include <Approx_CurvilinearParameter.hxx>
+#include <Approx_SameParameter.hxx>
+#include <Bnd_Box.hxx>
 #include <BRep_Builder.hxx>
-#include <Geom_Surface.hxx>
+#include <BRep_GCurve.hxx>
+#include <BRep_ListIteratorOfListOfCurveRepresentation.hxx>
+#include <BRep_TEdge.hxx>
+#include <BRepAdaptor_HCurve2d.hxx>
+#include <BRepAdaptor_HSurface.hxx>
+#include <BRepAdaptor_Surface.hxx>
+#include <BRepBndLib.hxx>
+#include <BRepClass3d_SolidClassifier.hxx>
+#include <BSplCLib.hxx>
+#include <ElSLib.hxx>
+#include <Extrema_LocateExtPC.hxx>
+#include <GCPnts_QuasiUniformDeflection.hxx>
+#include <Geom_BSplineSurface.hxx>
 #include <Geom_RectangularTrimmedSurface.hxx>
-#include <Geom_Plane.hxx>
-#include <Geom_Curve.hxx>
-#include <Geom_BSplineCurve.hxx>
 #include <Geom_TrimmedCurve.hxx>
-#include <Geom2d_Curve.hxx>
-#include <Geom2d_TrimmedCurve.hxx>
 #include <Geom2d_BSplineCurve.hxx>
+#include <Geom2d_TrimmedCurve.hxx>
+#include <Geom2dAdaptor.hxx>
+#include <Geom2dAdaptor_HCurve.hxx>
+#include <Geom2dConvert.hxx>
+#include <GeomAdaptor_Curve.hxx>
+#include <GeomAdaptor_HCurve.hxx>
+#include <GeomAdaptor_HSurface.hxx>
 #include <GeomLib.hxx>
-#include <TopExp_Explorer.hxx>
-#include <TopoDS.hxx>
-#include <TopoDS_Edge.hxx>
-#include <TopoDS_Face.hxx>
-#include <TopoDS_Vertex.hxx>
-#include <TopTools_MapOfShape.hxx>
-#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
-#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TopExp.hxx>
-#include <gp.hxx>
-#include <gp_Ax2.hxx>
-#include <gp_Pln.hxx>
-#include <Standard_Real.hxx>
-#include <Precision.hxx>
-#include <BRep_GCurve.hxx>
-#include <BRep_TEdge.hxx>
-#include <BRep_TFace.hxx>
-#include <AppParCurves_MultiCurve.hxx>
-#include <AppParCurves_MultiBSpCurve.hxx>
-#include <BRep_ListOfCurveRepresentation.hxx>
-#include <BRep_CurveRepresentation.hxx>
-#include <BRep_ListIteratorOfListOfCurveRepresentation.hxx>
-#include <BRep_TVertex.hxx>
-#include <AdvApprox_ApproxAFunction.hxx>
-#include <Approx_SameParameter.hxx>
+#include <ProjLib_ProjectedCurve.hxx>
 #include <TColgp_Array1OfPnt.hxx>
 #include <TColgp_Array1OfPnt2d.hxx>
 #include <TColStd_Array1OfReal.hxx>
+#include <TColStd_HSequenceOfReal.hxx>
 #include <TColStd_MapOfTransient.hxx>
-#include <GeomAdaptor_Curve.hxx>
-#include <GeomAdaptor_HCurve.hxx>
-#include <GeomAdaptor_Surface.hxx>
-#include <GeomAdaptor_HSurface.hxx>
-#include <Geom2dAdaptor_Curve.hxx>
-#include <Geom2dAdaptor_HCurve.hxx>
-#include <Geom2dAdaptor.hxx>
-#include <Geom2dConvert.hxx>
-#include <GCPnts_QuasiUniformDeflection.hxx>
-#include <BSplCLib.hxx>
-#include <ElSLib.hxx>
-#include <Adaptor3d_CurveOnSurface.hxx>
-#include <Extrema_LocateExtPC.hxx>
-#include <ProjLib_ProjectedCurve.hxx>
-#include <BRepClass3d_SolidClassifier.hxx>
-#include <Bnd_Box.hxx>
-#include <BRepBndLib.hxx>
-#include <Approx_CurvilinearParameter.hxx>
-#include <Geom_BSplineSurface.hxx>
-
+#include <TopExp.hxx>
+#include <TopExp_Explorer.hxx>
+#include <TopoDS.hxx>
+#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
+#include <TopTools_ListIteratorOfListOfShape.hxx>
+#include <TopTools_MapOfShape.hxx>
 
 // TODO - not thread-safe static variables
 static Standard_Real thePrecision = Precision::Confusion();     
@@ -1776,5 +1753,3 @@ void  BRepLib::ReverseSortFaces (const TopoDS_Shape& Sh,
   LF.Append(LCon); LF.Append(LCyl  ); LF.Append(LPlan);
    
 }
-
-
index 1d35f7962e845c4479e6e094b4cca1bc205e0314..0a91549d1021f31c8fb006ec52f350fd69614ee3 100755 (executable)
 # include <strings.h>
 #endif
 
+//Number of BRepCheck_Statuses in BRepCheck_Status.hxx file
+//(BRepCheck_NoError is not considered, i.e. general status 
+//is smaller by one specified in file)
+static const Standard_Integer NumberOfStatus = 35;
+                                                  
+
 static char* checkfaultyname = NULL;
 Standard_EXPORT void BRepTest_CheckCommands_SetFaultyName(const char* name)
 {
@@ -515,40 +521,46 @@ static void FillProblems(const BRepCheck_Status stat,
     NbProblems->SetValue(14,NbProblems->Value(14)+1); break;
   case BRepCheck_InvalidRange:
     NbProblems->SetValue(15,NbProblems->Value(15)+1); break;
-  case BRepCheck_EmptyWire:
+  case BRepCheck_PCurveIsOutOfDomainFace:
     NbProblems->SetValue(16,NbProblems->Value(16)+1); break;
-  case BRepCheck_RedundantEdge:
+  case BRepCheck_EmptyWire:
     NbProblems->SetValue(17,NbProblems->Value(17)+1); break;
-  case BRepCheck_SelfIntersectingWire:
+  case BRepCheck_RedundantEdge:
     NbProblems->SetValue(18,NbProblems->Value(18)+1); break;
-  case BRepCheck_NoSurface:
+  case BRepCheck_SelfIntersectingWire:
     NbProblems->SetValue(19,NbProblems->Value(19)+1); break;
-  case BRepCheck_InvalidWire:
+  case BRepCheck_NoSurface:
     NbProblems->SetValue(20,NbProblems->Value(20)+1); break;
-  case BRepCheck_RedundantWire:
+  case BRepCheck_OutOfSurfaceBoundary:
     NbProblems->SetValue(21,NbProblems->Value(21)+1); break;
-  case BRepCheck_IntersectingWires:
+  case BRepCheck_InvalidWire:
     NbProblems->SetValue(22,NbProblems->Value(22)+1); break;
-  case BRepCheck_InvalidImbricationOfWires:
+  case BRepCheck_RedundantWire:
     NbProblems->SetValue(23,NbProblems->Value(23)+1); break;
-  case BRepCheck_EmptyShell:
+  case BRepCheck_IntersectingWires:
     NbProblems->SetValue(24,NbProblems->Value(24)+1); break;
-  case BRepCheck_RedundantFace:
+  case BRepCheck_InvalidImbricationOfWires:
     NbProblems->SetValue(25,NbProblems->Value(25)+1); break;
-  case BRepCheck_UnorientableShape:
+  case BRepCheck_EmptyShell:
     NbProblems->SetValue(26,NbProblems->Value(26)+1); break;
-  case BRepCheck_NotClosed:
+  case BRepCheck_RedundantFace:
     NbProblems->SetValue(27,NbProblems->Value(27)+1); break;
-  case BRepCheck_NotConnected:
+  case BRepCheck_UnorientableShape:
     NbProblems->SetValue(28,NbProblems->Value(28)+1); break;
-  case BRepCheck_SubshapeNotInShape:
+  case BRepCheck_NotClosed:
     NbProblems->SetValue(29,NbProblems->Value(29)+1); break;
-  case BRepCheck_BadOrientation:
+  case BRepCheck_NotConnected:
     NbProblems->SetValue(30,NbProblems->Value(30)+1); break;
-  case BRepCheck_BadOrientationOfSubshape:
+  case BRepCheck_SubshapeNotInShape:
     NbProblems->SetValue(31,NbProblems->Value(31)+1); break;
-  case BRepCheck_CheckFail:
+  case BRepCheck_BadOrientation:
     NbProblems->SetValue(32,NbProblems->Value(32)+1); break;
+  case BRepCheck_BadOrientationOfSubshape:
+    NbProblems->SetValue(33,NbProblems->Value(33)+1); break;
+  case BRepCheck_InvalidToleranceValue:
+    NbProblems->SetValue(34,NbProblems->Value(34)+1); break;
+  case BRepCheck_CheckFail:
+    NbProblems->SetValue(35,NbProblems->Value(35)+1); break;
   default:
     break;
   }
@@ -674,8 +686,9 @@ void StructuralDump(Draw_Interpretor& theCommands,
   theCommands<<"  Check                                    Count"<<"\n";
   theCommands<<" ------------------------------------------------"<<"\n";
 
-  Handle(TColStd_HArray1OfInteger) NbProblems = new TColStd_HArray1OfInteger(1,32);
-  for(i=1; i<=32; i++) NbProblems->SetValue(i,0);
+  Handle(TColStd_HArray1OfInteger) NbProblems = new 
+                              TColStd_HArray1OfInteger(1,NumberOfStatus);
+  for(i=1; i<=NumberOfStatus; i++) NbProblems->SetValue(i,0);
   Handle(TopTools_HSequenceOfShape) sl,slv,sle,slw,slf,sls,slo;
   sl = new TopTools_HSequenceOfShape();
   theMap.Clear();
@@ -728,55 +741,64 @@ void StructuralDump(Draw_Interpretor& theCommands,
     theCommands<<"  Invalid Range ............................ "<<NbProblems->Value(15)<<"\n";
     //cout<<"  Invalid Range ............................ "<<NbProblems->Value(15)<<endl;
   if(NbProblems->Value(16)>0)
-    theCommands<<"  Empty Wire ............................... "<<NbProblems->Value(16)<<"\n";
-    //cout<<"  Empty Wire ............................... "<<NbProblems->Value(16)<<endl;
+    theCommands<<"  pcurve is out of domain face.............. "<<NbProblems->Value(16)<<"\n";
+    //cout<<"  Invalid Range ............................ "<<NbProblems->Value(15)<<endl;
   if(NbProblems->Value(17)>0)
-    theCommands<<"  Redundant Edge ........................... "<<NbProblems->Value(17)<<"\n";
-    //cout<<"  Redundant Edge ........................... "<<NbProblems->Value(17)<<endl;
+    theCommands<<"  Empty Wire ............................... "<<NbProblems->Value(17)<<"\n";
+    //cout<<"  Empty Wire ............................... "<<NbProblems->Value(16)<<endl;
   if(NbProblems->Value(18)>0)
-    theCommands<<"  Self Intersecting Wire ................... "<<NbProblems->Value(18)<<"\n";
-    //cout<<"  Self Intersecting Wire ................... "<<NbProblems->Value(18)<<endl;
+    theCommands<<"  Redundant Edge ........................... "<<NbProblems->Value(18)<<"\n";
+    //cout<<"  Redundant Edge ........................... "<<NbProblems->Value(17)<<endl;
   if(NbProblems->Value(19)>0)
-    theCommands<<"  No Surface ............................... "<<NbProblems->Value(19)<<"\n";
-    //cout<<"  No Surface ............................... "<<NbProblems->Value(19)<<endl;
+    theCommands<<"  Self Intersecting Wire ................... "<<NbProblems->Value(19)<<"\n";
+    //cout<<"  Self Intersecting Wire ................... "<<NbProblems->Value(18)<<endl;
   if(NbProblems->Value(20)>0)
-    theCommands<<"  Invalid Wire ............................. "<<NbProblems->Value(20)<<"\n";
-    //cout<<"  Invalid Wire ............................. "<<NbProblems->Value(20)<<endl;
+    theCommands<<"  No Surface ............................... "<<NbProblems->Value(20)<<"\n";
+    //cout<<"  No Surface ............................... "<<NbProblems->Value(19)<<endl;
   if(NbProblems->Value(21)>0)
-    theCommands<<"  Redundant Wire ........................... "<<NbProblems->Value(21)<<"\n";
-    //cout<<"  Redundant Wire ........................... "<<NbProblems->Value(21)<<endl;
+    theCommands<<"  Face is out of it surface boundary........ "<<NbProblems->Value(21)<<"\n";
+    //cout<<"  Invalid Wire ............................. "<<NbProblems->Value(20)<<endl;
   if(NbProblems->Value(22)>0)
-    theCommands<<"  Intersecting Wires ....................... "<<NbProblems->Value(22)<<"\n";
-    //cout<<"  Intersecting Wires ....................... "<<NbProblems->Value(22)<<endl;
+    theCommands<<"  Invalid Wire ............................. "<<NbProblems->Value(22)<<"\n";
+    //cout<<"  Invalid Wire ............................. "<<NbProblems->Value(20)<<endl;
   if(NbProblems->Value(23)>0)
-    theCommands<<"  Invalid Imbrication of Wires ............. "<<NbProblems->Value(23)<<"\n";
-    //cout<<"  Invalid Imbrication of Wires ............. "<<NbProblems->Value(23)<<endl;
+    theCommands<<"  Redundant Wire ........................... "<<NbProblems->Value(23)<<"\n";
+    //cout<<"  Redundant Wire ........................... "<<NbProblems->Value(21)<<endl;
   if(NbProblems->Value(24)>0)
-    theCommands<<"  Empty Shell .............................. "<<NbProblems->Value(24)<<"\n";
-    //cout<<"  Empty Shell .............................. "<<NbProblems->Value(24)<<endl;
+    theCommands<<"  Intersecting Wires ....................... "<<NbProblems->Value(24)<<"\n";
+    //cout<<"  Intersecting Wires ....................... "<<NbProblems->Value(22)<<endl;
   if(NbProblems->Value(25)>0)
-    theCommands<<"  Redundant Face ........................... "<<NbProblems->Value(25)<<"\n";
-    //cout<<"  Redundant Face ........................... "<<NbProblems->Value(25)<<endl;
+    theCommands<<"  Invalid Imbrication of Wires ............. "<<NbProblems->Value(25)<<"\n";
+    //cout<<"  Invalid Imbrication of Wires ............. "<<NbProblems->Value(23)<<endl;
   if(NbProblems->Value(26)>0)
-    theCommands<<"  Unorientable Shape ....................... "<<NbProblems->Value(26)<<"\n";
-    //cout<<"  Unorientable Shape ....................... "<<NbProblems->Value(26)<<endl;
+    theCommands<<"  Empty Shell .............................. "<<NbProblems->Value(26)<<"\n";
+    //cout<<"  Empty Shell .............................. "<<NbProblems->Value(24)<<endl;
   if(NbProblems->Value(27)>0)
-    theCommands<<"  Not Closed ............................... "<<NbProblems->Value(27)<<"\n";
-    //cout<<"  Not Closed ............................... "<<NbProblems->Value(27)<<endl;
+    theCommands<<"  Redundant Face ........................... "<<NbProblems->Value(27)<<"\n";
+    //cout<<"  Redundant Face ........................... "<<NbProblems->Value(25)<<endl;
   if(NbProblems->Value(28)>0)
-    theCommands<<"  Not Connected ............................ "<<NbProblems->Value(28)<<"\n";
-    //cout<<"  Not Connected ............................ "<<NbProblems->Value(28)<<endl;
+    theCommands<<"  Unorientable Shape ....................... "<<NbProblems->Value(28)<<"\n";
+    //cout<<"  Unorientable Shape ....................... "<<NbProblems->Value(26)<<endl;
   if(NbProblems->Value(29)>0)
-    theCommands<<"  Subshape not in Shape .................... "<<NbProblems->Value(29)<<"\n";
-    //cout<<"  Subshape not in Shape .................... "<<NbProblems->Value(29)<<endl;
+    theCommands<<"  Not Closed ............................... "<<NbProblems->Value(29)<<"\n";
+    //cout<<"  Not Closed ............................... "<<NbProblems->Value(27)<<endl;
   if(NbProblems->Value(30)>0)
-    theCommands<<"  Bad Orientation .......................... "<<NbProblems->Value(30)<<"\n";
-    //cout<<"  Bad Orientation .......................... "<<NbProblems->Value(30)<<endl;
+    theCommands<<"  Not Connected ............................ "<<NbProblems->Value(30)<<"\n";
+    //cout<<"  Not Connected ............................ "<<NbProblems->Value(28)<<endl;
   if(NbProblems->Value(31)>0)
-    theCommands<<"  Bad Orientation of Subshape .............. "<<NbProblems->Value(31)<<"\n";
-    //cout<<"  Bad Orientation of Subshape .............. "<<NbProblems->Value(31)<<endl;
+    theCommands<<"  Subshape not in Shape .................... "<<NbProblems->Value(31)<<"\n";
+    //cout<<"  Subshape not in Shape .................... "<<NbProblems->Value(29)<<endl;
   if(NbProblems->Value(32)>0)
-    theCommands<<"  checkshape failure......... .............. "<<NbProblems->Value(32)<<"\n";
+    theCommands<<"  Bad Orientation .......................... "<<NbProblems->Value(32)<<"\n";
+    //cout<<"  Bad Orientation .......................... "<<NbProblems->Value(30)<<endl;
+  if(NbProblems->Value(33)>0)
+    theCommands<<"  Bad Orientation of Subshape .............. "<<NbProblems->Value(33)<<"\n";
+    //cout<<"  Bad Orientation of Subshape .............. "<<NbProblems->Value(31)<<endl;
+  if(NbProblems->Value(34)>0)
+    theCommands<<"  Invalid tolerance......................... "<<NbProblems->Value(34)<<"\n";
+    //cout<<"  checkshape failure......... .............. "<<NbProblems->Value(32)<<endl;
+  if(NbProblems->Value(35)>0)
+    theCommands<<"  checkshape failure........................ "<<NbProblems->Value(35)<<"\n";
     //cout<<"  checkshape failure......... .............. "<<NbProblems->Value(32)<<endl;
 
   //cout<<" ------------------------------------------------"<<endl;
index 50dbb9352d48a422b4658486e2e097076663aadc..26725052b25abb971794a9c42dbc91ccf39233bd 100755 (executable)
@@ -86,7 +86,30 @@ is
 
      raises ConstructionError;
 
+  Create (S : Surface from Geom; 
+          isUTrim, isVTrim : Boolean;
+          U1, U2, V1, V2 : Real)
+     returns mutable RectangularTrimmedSurface
+        ---Purpose :
+        --  The U parametric direction of the surface is oriented from U1
+        --  to U2. The V parametric direction of the surface is oriented 
+        --  from V1 to V2.
+        --  These two directions define the orientation of the surface 
+        --  (normal). By default in this case the surface has the same
+        --  orientation as the basis surface S.
+        --  isUTrim and isVTrim arguments determine, if it is necessary to
+        --  trim S surface along corresponding direction.
+        --  The returned surface is not closed and not periodic.
+        --  ConstructionError   Raised if 
+        --  S is not periodic in the UDirection and U1 or U2 are out of the 
+        --  bounds of S.
+        --  S is not periodic in the VDirection and V1 or V2 are out of the 
+        --  bounds of S.
+        --  U1 = U2 or V1 = V2
+
+     raises ConstructionError;
 
+     
   Create (S              : Surface from Geom; 
           Param1, Param2 : Real; 
           UTrim          : Boolean;
@@ -116,7 +139,37 @@ is
         --  Param1 or Param2 are out of the bounds of S.
         --  Param1 = Param2
 
+    SetUTrim (me : mutable; U1, U2 : Real)
+        ---Purpose : Sets boundaries of basisSurf in U1 and U2
+        -- along U-direction.
+        -- For periodic surface boundary values can be changed 
+        -- algorithmically.
+     raises ConstructionError;
+        ---Purpose : Raised if 
+        --  The BasisSurface is not periodic in the U-direction and U1 or U2
+        --    are out of the bounds of the BasisSurface.
+        --  U1 = U2
 
+    SetVTrim (me : mutable; V1, V2 : Real)
+        ---Purpose : Sets boundaries of basisSurf in V1 and V2
+        -- along V-direction.
+        -- For periodic surface boundary values can be changed 
+        -- algorithmically.
+     raises ConstructionError;
+        ---Purpose : Raised if 
+        --  The BasisSurface is not periodic in the V-direction and V1 or V2
+        --    are out of the bounds of the BasisSurface.
+        --  V1 = V2
+
+    ForceTrim(me : mutable; 
+              U1, U2, V1, V2 : Real; 
+              UTrim, VTrim : Boolean = Standard_True);
+      ---Purpose : For periodic surface this method changes
+      -- (if it is necessary) U2 and V2, so that 0 < U2 - U1 < T and
+      -- 0 < V2 - V1 < T (where T is the period).
+      -- If surface is not periodic, boundaries do not chenge.
+      -- After that it trims basisSurf in new boundaries.
+        
   SetTrim (me : mutable; 
            U1, U2, V1, V2 : Real; 
            USense, VSense : Boolean = Standard_True)
@@ -368,6 +421,10 @@ is
 
   Copy (me)  returns mutable like me;
        ---Purpose: Creates a new object which is a copy of this patch.
+      
+  GetTrimmedFlags(me; isUtrimmed,isVtrimmed : in out Boolean from Standard);
+       ---Purpose: Allows to get <isutrimmed> and <isvtrimmed> members values.
+      
 fields
 
    basisSurf   : Surface from Geom;
index d47be5b0769d2b91ab8b5ccedb576b7647308f68..dfd999239b89207e570d4c7770e15d66d7459cbc 100755 (executable)
@@ -87,6 +87,45 @@ Handle(Geom_Geometry) Geom_RectangularTrimmedSurface::Copy () const {
   return S;
 }
 
+//=======================================================================
+//function : Geom_RectangularTrimmedSurface
+//purpose  : 
+//=======================================================================
+
+Geom_RectangularTrimmedSurface::Geom_RectangularTrimmedSurface(
+                          const Handle(Geom_Surface)& S,
+                          const Standard_Boolean isUTrim,
+                          const Standard_Boolean isVTrim,
+                          const Standard_Real U1,
+                          const Standard_Real U2,
+                          const Standard_Real V1,
+                          const Standard_Real V2):  utrim1(U1),
+                                                    vtrim1(V1),
+                                                    utrim2(U2),
+                                                    vtrim2(V2),
+                                                    isutrimmed (isUTrim),
+                                                    isvtrimmed (isVTrim)
+{
+  // kill trimmed basis surfaces
+  Handle(Geom_RectangularTrimmedSurface) T =
+    Handle(Geom_RectangularTrimmedSurface)::DownCast(S);
+  if (!T.IsNull())
+    basisSurf = Handle(Surface)::DownCast(T->BasisSurface()->Copy());
+  else
+    basisSurf = Handle(Surface)::DownCast(S->Copy());
+
+  Handle(Geom_OffsetSurface) O =
+    Handle(Geom_OffsetSurface)::DownCast(basisSurf);
+  if (!O.IsNull()) 
+  {
+    Handle(Geom_RectangularTrimmedSurface) S2 = 
+           new Geom_RectangularTrimmedSurface( O->BasisSurface(),U1,U2, V1, V2, isUTrim, isVTrim);
+    Handle(Geom_OffsetSurface) OS = new Geom_OffsetSurface(S2, O->Offset());
+    basisSurf = Handle(Surface)::DownCast(OS);
+  }  
+
+  ForceTrim( U1, U2, V1, V2, isUTrim, isVTrim);
+}
 
 //=======================================================================
 //function : Geom_RectangularTrimmedSurface
@@ -168,6 +207,172 @@ Geom_RectangularTrimmedSurface::Geom_RectangularTrimmedSurface (
   SetTrim(Param1, Param2, UTrim, Sense);
 }
 
+//=======================================================================
+//function : SetUTrim
+//purpose  : 
+//=======================================================================
+void Geom_RectangularTrimmedSurface::SetUTrim(const Standard_Real theU1,
+                                              const Standard_Real theU2)
+{
+  const Standard_Real Udeb = utrim1, Ufin = utrim2;
+
+  utrim1 = theU1;
+  utrim2 = theU2;
+
+  if ( utrim1 == utrim2)
+    Standard_ConstructionError::Raise
+                  ("Geom_RectangularTrimmedSurface::U1==U2");
+
+  if (basisSurf->IsUPeriodic())
+  {
+    ElCLib::AdjustPeriodic(Udeb, Ufin, 
+      Min(Abs(utrim2-utrim1)/2,Precision::PConfusion()), utrim1, utrim2); 
+  }//if (basisSurf->IsUPeriodic())
+  else
+  {
+    if (utrim1 > utrim2)
+    {
+      //change some places of theUTrim1 and theUTrim2
+      Standard_Real ut = utrim1;
+      utrim1 = utrim2;
+      utrim2 = ut;
+    }
+
+    if (  (Udeb-utrim1 > Precision::PConfusion()) ||
+          (utrim2-Ufin > Precision::PConfusion()))
+    {
+      Standard_ConstructionError::Raise
+        ("Geom_RectangularTrimmedSurface::Uparameters out of range");
+    }
+  }
+}
+
+//=======================================================================
+//function : SetVTrim
+//purpose  : 
+//=======================================================================
+void Geom_RectangularTrimmedSurface::SetVTrim(const Standard_Real theV1,
+                                              const Standard_Real theV2)
+{
+  const Standard_Real Vdeb = vtrim1, Vfin = vtrim2;
+
+  vtrim1 = theV1;
+  vtrim2 = theV2;
+
+  if ( vtrim1 == vtrim2)
+    Standard_ConstructionError::Raise
+                      ("Geom_RectangularTrimmedSurface::V1==V2");
+
+  if (basisSurf->IsVPeriodic())
+  {
+    ElCLib::AdjustPeriodic(Vdeb, Vfin,
+      Min(Abs(vtrim2-vtrim1)/2,Precision::PConfusion()),vtrim1, vtrim2);
+  }//if (basisSurf->IsVPeriodic())
+  else
+  {
+    if (vtrim1 > vtrim2)
+    {
+      Standard_Real vt = vtrim1;
+      vtrim1 = vtrim2;
+      vtrim2 = vt;
+    }
+
+    if (  (Vdeb-vtrim1 > Precision::PConfusion()) ||
+          (vtrim2-Vfin > Precision::PConfusion()))
+    {
+      Standard_ConstructionError::Raise
+         ("Geom_RectangularTrimmedSurface::V parameters out of range");
+    }
+  }
+}
+
+//=======================================================================
+//function : ForceTrim
+//purpose  : 
+//=======================================================================
+void Geom_RectangularTrimmedSurface::ForceTrim(const Standard_Real theU1,
+                                               const Standard_Real theU2,
+                                               const Standard_Real theV1,
+                                               const Standard_Real theV2,
+                                               const Standard_Boolean isUTrim,
+                                               const Standard_Boolean isVTrim)
+{
+  basisSurf->Bounds(utrim1, utrim2, vtrim1, vtrim2);
+
+  isutrimmed = isUTrim;
+  isvtrimmed = isVTrim;
+
+  // Trimming along U-Direction
+  if (isutrimmed)
+  {
+    utrim1 = theU1;
+    utrim2 = theU2;
+
+    if((utrim1 > utrim2) || !(basisSurf->IsUPeriodic()))
+    {
+      //Standard_ConstructionError::Raise
+      //  ("Geom_RectangularTrimmedSurface::ForceTrim(...). "
+      //                        "utrim1 > utrim2");
+
+      SetUTrim(theU1,theU2);
+    }
+    else
+    {
+      const Standard_Real aTolPeriodicFactor = 1.0e-7;
+      const Standard_Real aT = basisSurf->UPeriod();
+      const Standard_Real aTol = aTolPeriodicFactor * aT;
+      if(utrim2 - utrim1 - aT > 2.0*aTol)
+      {
+        Standard_Integer n = RealToInt((utrim2 - utrim1)/aT);
+        utrim2 -= (n * aT);
+        
+        if(utrim2 - utrim1 < aTol)
+          utrim2 += aT;
+      }
+
+      //if(utrim2 - utrim1 < aTol)
+      //  Standard_ConstructionError::Raise
+      //        ("Geom_RectangularTrimmedSurface::SetTrim(...)."
+      //              "ERROR in adjust U-parameter!");
+    }
+  }
+
+  // Trimming along V-Direction
+  if (isvtrimmed)
+  {
+    vtrim1 = theV1;
+    vtrim2 = theV2;
+
+    if ((vtrim1 > vtrim2) || !(basisSurf->IsVPeriodic()))
+    {
+      //Standard_ConstructionError::Raise
+      //  ("Geom_RectangularTrimmedSurface::ForceTrim(...). "
+      //                        "vtrim1 > vtrim2");
+
+      SetVTrim(theV1,theV2);
+    }
+    else
+    {
+      const Standard_Real aTolPeriodicFactor = 1.0e-7;
+      const Standard_Real aT = basisSurf->VPeriod();
+      const Standard_Real aTol = aTolPeriodicFactor * aT;
+
+      if(vtrim2 - vtrim1 - aT > 2.0*aTol)
+      {
+        Standard_Integer n = RealToInt((vtrim2 - vtrim1)/aT);
+        vtrim2 -= (n * aT);
+
+        if(vtrim2 - vtrim1 < aTol)
+          vtrim2 += aT;
+      }
+
+      //if(vtrim2 - vtrim1 < aTol)
+      //  Standard_ConstructionError::Raise
+      //        ("Geom_RectangularTrimmedSurface::SetTrim(...)."
+      //              "ERROR in adjust V-parameter!");
+    }
+  }
+}
 
 //=======================================================================
 //function : SetTrim
@@ -221,107 +426,36 @@ void Geom_RectangularTrimmedSurface::SetTrim (const Standard_Real    Param1,
 //purpose  : 
 //=======================================================================
 
-void Geom_RectangularTrimmedSurface::SetTrim(const Standard_Real U1,
-                                            const Standard_Real U2,
-                                            const Standard_Real V1,
-                                            const Standard_Real V2,
-                                            const Standard_Boolean UTrim,
-                                            const Standard_Boolean VTrim,
-                                            const Standard_Boolean USense,
-                                            const Standard_Boolean VSense) {
-  
-  Standard_Boolean UsameSense = Standard_True;
-  Standard_Boolean VsameSense = Standard_True;
-  Standard_Real Udeb, Ufin, Vdeb, Vfin;
-
-  basisSurf->Bounds(Udeb, Ufin, Vdeb, Vfin);
+void Geom_RectangularTrimmedSurface::SetTrim(
+                                          const Standard_Real theU1,
+                                          const Standard_Real theU2,
+                                          const Standard_Real theV1,
+                                          const Standard_Real theV2,
+                                          const Standard_Boolean isUTrim,
+                                          const Standard_Boolean isVTrim,
+                                          const Standard_Boolean isUSense,
+                                          const Standard_Boolean isVSense)
+{
+  Standard_Boolean UsameSense = !(isUSense && (theU1 > theU2));
+  Standard_Boolean VsameSense = !(isVSense && (theV1 > theV2));
 
-  // Trimming the U-Direction
-  isutrimmed = UTrim;
-  if (!UTrim) {
-    utrim1 = Udeb;
-    utrim2 = Ufin;
-  }
-  else {
-    if ( U1 == U2)
-      Standard_ConstructionError::Raise
-       ("Geom_RectangularTrimmedSurface::U1==U2");
+  basisSurf->Bounds(utrim1, utrim2, vtrim1, vtrim2);
 
-    if (basisSurf->IsUPeriodic()) {
-      UsameSense = USense;
-      
-      // set uTrim1 in the range Udeb , Ufin
-      // set uTrim2 in the range uTrim1 , uTrim1 + Period()
-      utrim1 = U1;
-      utrim2 = U2;
-      ElCLib::AdjustPeriodic(Udeb, Ufin, 
-                            Min(Abs(utrim2-utrim1)/2,Precision::PConfusion()), 
-                            utrim1, utrim2);
-    }
-    else {
-      if (U1 < U2) {
-       UsameSense = USense;
-       utrim1 = U1;
-       utrim2 = U2;
-      }
-      else {
-       UsameSense = !USense;
-       utrim1 = U2;
-       utrim2 = U1;
-      }
-      
-      if ((Udeb-utrim1 > Precision::PConfusion()) ||
-         (utrim2-Ufin > Precision::PConfusion()))
-       Standard_ConstructionError::Raise
-         ("Geom_RectangularTrimmedSurface::U parameters out of range");
+  isutrimmed = isUTrim;
+  isvtrimmed = isVTrim;
 
-    }
-  }
+  // Trimming the U-Direction
+  if (isutrimmed)
+    SetUTrim(theU1,theU2);
 
   // Trimming the V-Direction
-  isvtrimmed = VTrim;
-  if (!VTrim) {
-    vtrim1 = Vdeb;
-    vtrim2 = Vfin;
-  }
-  else {
-    if ( V1 == V2)
-      Standard_ConstructionError::Raise
-       ("Geom_RectangularTrimmedSurface::V1==V2");
-
-    if (basisSurf->IsVPeriodic()) {
-      VsameSense = VSense;
-
-      // set vTrim1 in the range Vdeb , Vfin
-      // set vTrim2 in the range vTrim1 , vTrim1 + Period()
-      vtrim1 = V1;
-      vtrim2 = V2;
-      ElCLib::AdjustPeriodic(Vdeb, Vfin,  
-                            Min(Abs(vtrim2-vtrim1)/2,Precision::PConfusion()), 
-                            vtrim1, vtrim2);
-    }
-    else {
-      if (V1 < V2) {
-       VsameSense = VSense;
-       vtrim1 = V1;
-       vtrim2 = V2;
-      }
-      else {
-       VsameSense = !VSense;
-       vtrim1 = V2;
-       vtrim2 = V1;
-      }
-      
-      if ((Vdeb-vtrim1 > Precision::PConfusion()) ||
-         (vtrim2-Vfin > Precision::PConfusion()))
-       Standard_ConstructionError::Raise
-         ("Geom_RectangularTrimmedSurface::V parameters out of range");
+  if (isvtrimmed)
+    SetVTrim(theV1,theV2);
 
-    }
-  }
-
-  if (!UsameSense) UReverse();
-  if (!VsameSense) VReverse();
+  if (!UsameSense)
+    UReverse();
+  if (!VsameSense)
+    VReverse();
 }
 
 
@@ -666,3 +800,12 @@ gp_GTrsf2d Geom_RectangularTrimmedSurface::ParametricTransformation
   return basisSurf->ParametricTransformation(T);
 }
 
+//=======================================================================
+//function : GetTrimmedFlags
+//purpose  : 
+//=======================================================================
+void Geom_RectangularTrimmedSurface::GetTrimmedFlags(Standard_Boolean& isU, Standard_Boolean& isV) const
+{
+  isU = isutrimmed;
+  isV = isvtrimmed;
+}
\ No newline at end of file
index ec321c2213391200690f3b017a8d263ffd03d6d6..a07c104a010d96c722d642c65f15236aa3a2cf7d 100755 (executable)
@@ -528,7 +528,19 @@ static void Print(const Handle(Geom_RectangularTrimmedSurface)& S,
   if (compact)
     OS << RECTANGULAR << " ";
   else
+  {
     OS << "RectangularTrimmedSurface";
+    
+    Standard_Boolean isUtr, isVtr;
+    S->GetTrimmedFlags(isUtr, isVtr);
+
+    OS << " (uTrim = " << isUtr << ", vTrim = " << isVtr << ")";
+  }
+
+  Standard_Boolean isUtr, isVtr;
+  S->GetTrimmedFlags(isUtr, isVtr);
+
+  OS << " (uTrim = " << isUtr << ", vTrim = " << isVtr << ")";
 
   Standard_Real U1,U2,V1,V2;
   S->Bounds(U1,U2,V1,V2);
index a5051beedcc8e44acdd91362c7b7bc62f5725f43..c7070dfcb8be0bb32fb3db85285709d6eb8827fb 100755 (executable)
 
 #include <SWDRAW_ShapeFix.ixx>
 
-#include <Draw.hxx>
-#include <DBRep.hxx>
-#include <SWDRAW.hxx>
-#include <gp_XYZ.hxx>
-#include <gp_Pnt2d.hxx>
-#include <TopoDS.hxx>
-#include <TopoDS_Shape.hxx>
-#include <TopoDS_Edge.hxx>
-#include <TopoDS_Wire.hxx>
-#include <TopoDS_Face.hxx>
-#include <TopoDS_Iterator.hxx>
-#include <TopExp_Explorer.hxx>
-#include <BRep_Tool.hxx>
 #include <BRep_Builder.hxx>
+#include <BRep_Tool.hxx>
 #include <BRepBuilderAPI.hxx>
+#include <BRepCheck_Analyzer.hxx>
+#include <BRepCheck_ListIteratorOfListOfStatus.hxx>
+#include <BRepCheck_Result.hxx>
+#include <BRepTools.hxx>
 #include <BRepTopAdaptor_FClass2d.hxx>
-
-#include <ShapeBuild_ReShape.hxx>
+#include <DBRep.hxx>
+#include <Draw.hxx>
+#include <Draw_ProgressIndicator.hxx>
+#include <Geom_RectangularTrimmedSurface.hxx>
+#include <Geom_Surface.hxx>
+#include <gp_XYZ.hxx>
+#include <Message_ListIteratorOfListOfMsg.hxx>
+#include <Message_Msg.hxx>
 #include <ShapeAnalysis_Edge.hxx>
+#include <ShapeAnalysis_FreeBounds.hxx>
+#include <ShapeAnalysis_Wire.hxx>
 #include <ShapeAnalysis_WireOrder.hxx>
 #include <ShapeAnalysis_WireVertex.hxx>
-#include <ShapeAnalysis_Wire.hxx>
-#include <ShapeExtend_WireData.hxx>
+#include <ShapeBuild_ReShape.hxx>
+#include <ShapeExtend_CompositeSurface.hxx>
+#include <ShapeExtend_DataMapIteratorOfDataMapOfShapeListOfMsg.hxx>
+#include <ShapeExtend_MsgRegistrator.hxx>
 #include <ShapeFix.hxx>
+#include <ShapeFix_ComposeShell.hxx>
+#include <ShapeFix_Face.hxx>
+#include <ShapeFix_Shape.hxx>
 #include <ShapeFix_ShapeTolerance.hxx>
 #include <ShapeFix_Wire.hxx>
-#include <ShapeFix_WireVertex.hxx>
 #include <ShapeFix_Wireframe.hxx>
-#include <ShapeFix_Face.hxx>
-#include <ShapeFix_Shape.hxx>
-#include <Precision.hxx>
-#include <ShapeExtend_DataMapOfShapeListOfMsg.hxx>
-#include <ShapeExtend_MsgRegistrator.hxx>
-#include <ShapeExtend_DataMapIteratorOfDataMapOfShapeListOfMsg.hxx>
-#include <Message_ListIteratorOfListOfMsg.hxx>
-#include <Message_Msg.hxx>
-#include <TCollection_AsciiString.hxx>
+#include <ShapeFix_WireVertex.hxx>
+#include <SWDRAW.hxx>
+#include <TColGeom_HArray2OfSurface.hxx>
 #include <TColStd_DataMapIteratorOfDataMapOfAsciiStringInteger.hxx>
 #include <TColStd_DataMapOfAsciiStringInteger.hxx>
-#include <TopTools_MapOfShape.hxx>
+#include <TopExp.hxx>
+#include <TopExp_Explorer.hxx>
+#include <TopoDS.hxx>
+#include <TopoDS_Edge.hxx>
+#include <TopoDS_Shape.hxx>
 #include <TopTools_DataMapOfShapeListOfShape.hxx>
-#include <TopAbs_State.hxx>
-
-#include <Draw_ProgressIndicator.hxx>
-#include <ShapeAnalysis_FreeBounds.hxx>
 #include <TopTools_HSequenceOfShape.hxx>
-#include <BRep_Builder.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
-#include <TopExp.hxx>
 
 #ifdef AIX
 #include <strings.h>
@@ -756,6 +752,277 @@ static Standard_Integer connectedges(Draw_Interpretor& di, Standard_Integer n, c
   
 }
 
+//=======================================================================
+//function : FixPCurveOfFace
+//purpose  : 
+//=======================================================================
+static Standard_Integer FixPCurveOfFace(Draw_Interpretor& theDI, 
+                                        Standard_Integer theNArg,
+                                        const char** theArg)
+{
+  if(theNArg < 2)
+  {
+    theDI << "use \"ffixpcu face [-f] [-s]\".\n";
+    return 1;
+  }
+
+  Standard_Boolean isForsing = Standard_False;
+  Standard_Boolean isSplitForbidden = Standard_True;
+
+  if(theNArg > 2)
+  {
+    for (Standard_Integer i = 2; i < theNArg; i++)
+    {
+      if(theArg[i][0] == '-')
+      {
+        switch(theArg[i][1])
+        {
+        case 'f':
+          isForsing = Standard_True;
+          break;
+        case 's':
+          isSplitForbidden = Standard_False;
+          break;
+        }
+      }
+    }
+  }
+
+  TopoDS_Shape aS=DBRep::Get(theArg[1]);
+  if (aS.IsNull()) {
+    theDI << "null shapes is not allowed here\n";
+    return 1;
+  }
+
+  if (aS.ShapeType()!=TopAbs_FACE) {
+    char buff[256];
+    Sprintf ( buff, "shape %s must be a face\n", theArg[1]);
+    theDI << buff;
+    return 1;
+  }
+
+  TopoDS_Face aF=*((TopoDS_Face*)&aS);
+  
+  BRepCheck_Analyzer anAna(aF);
+
+  if(anAna.IsValid())
+  {
+    theDI << "Face is valid!\n";
+    return 0;
+  }
+
+  BRepCheck_ListIteratorOfListOfStatus itl;
+  itl.Initialize(anAna.Result(aF)->Status());
+
+  if (itl.Value() != BRepCheck_OutOfSurfaceBoundary)
+  {
+    theDI << "Other Status!\n";
+    return 0;
+  }
+
+  TopoDS_Shape aNS = TopoDS_Shape();
+  ShapeFix::RefineFace(aF, aNS, isForsing, isSplitForbidden);
+
+  if(aNS.IsNull())
+    DBRep::Set(theArg[1], aF);
+  else
+    DBRep::Set(theArg[1], aNS);
+
+  //
+  return 0;
+}
+
+//=======================================================================
+//function : FixPCurveOfShape
+//purpose  : 
+//=======================================================================
+static Standard_Integer FixPCurveOfShape(Draw_Interpretor& theDI, 
+                                        Standard_Integer theNArg,
+                                        const char** theArg)
+{
+  if(theNArg < 3)
+  {
+    theDI << "use \"sfixpcu result shape [-f] [-s]\".\n";
+    return 1;
+  }
+
+  Standard_Boolean isForsing = Standard_False;
+  Standard_Boolean isSplitForbidden = Standard_True;
+
+  if(theNArg > 3)
+  {
+    for (Standard_Integer i = 3; i < theNArg; i++)
+    {
+      if(theArg[i][0] == '-')
+      {
+        switch(theArg[i][1])
+        {
+        case 'f':
+          isForsing = Standard_True;
+          break;
+        case 's':
+          isSplitForbidden = Standard_False;
+          break;
+        }
+      }
+    }
+  }
+
+  TopoDS_Shape aS=DBRep::Get(theArg[2]);
+
+  if (aS.IsNull()) {
+    theDI << "null shapes is not allowed here\n";
+    return 1;
+  }
+
+  Standard_Boolean doCompound = Standard_False;
+  BRep_Builder aBuilder;
+  TopoDS_Compound aSt;
+  aBuilder.MakeCompound(aSt);
+  aSt.Free(Standard_True);
+
+  TopExp_Explorer exp;
+  for (exp.Init(aS,TopAbs_FACE); exp.More();exp.Next())
+  {
+    const TopoDS_Shape& aS1 = exp.Current();
+    TopoDS_Face aF=*((TopoDS_Face*)&aS1);
+
+    BRepCheck_Analyzer anAna(aF);
+    if(anAna.IsValid())
+    {
+      aBuilder.Add(aSt,aF);
+      continue;
+    }
+
+    BRepCheck_ListIteratorOfListOfStatus itl;
+    itl.Initialize(anAna.Result(aF)->Status());
+    if (itl.Value() != BRepCheck_OutOfSurfaceBoundary)
+    {
+      aBuilder.Add(aSt,aF);
+      continue;
+    }
+
+    TopoDS_Shape aNS = TopoDS_Shape();
+    ShapeFix::RefineFace(aF, aNS, isForsing,isSplitForbidden);
+
+    if(!aNS.IsNull())
+    {
+      aBuilder.Add(aSt,aNS);
+      doCompound = Standard_True;
+    }
+    else
+    {
+      aBuilder.Add(aSt,aF);
+    }
+  }
+
+  if(doCompound)
+  {
+    aSt.Free(aS.Free());
+    DBRep::Set(theArg[1],aSt);
+  }
+  else
+  {
+    DBRep::Set(theArg[1],aS);
+  }
+
+  return 0;
+}
+
+////=======================================================================
+////function : splitfix
+////purpose  : 
+////=======================================================================
+//static Standard_Integer splitfix(Draw_Interpretor& theDI, 
+//                                 Standard_Integer theNArg, 
+//                                 const char** theArg)
+//{
+//  if (theNArg < 3) {
+//    theDI << "use: splitface result face [-p]\n";
+//    return 1;    
+//  }
+//
+//  TopoDS_Face aFace;
+//  {
+//    TopoDS_Shape aShape = DBRep::Get(theArg[2]) ;
+//    if (aShape.IsNull())
+//    {
+//      theDI << "null shapes is not allowed here\n";
+//      return 1;
+//    }
+//
+//    aFace = TopoDS::Face ( aShape );
+//  }
+//
+//  if ( aFace.IsNull() ) {
+//    theDI << theArg[2] << " is not Face\n";
+//    return 1;
+//  }
+//
+//  Standard_Real anUFf, anUFl, aVFf, aVFl;
+//  BRepTools::UVBounds(aFace, anUFf, anUFl, aVFf, aVFl);
+//  
+//  Standard_Real anUSf, anUSl, aVSf, aVSl;
+//  Handle(Geom_Surface) aSurf = BRep_Tool::Surface(aFace);
+//
+//  if (aSurf->DynamicType() == STANDARD_TYPE(Geom_RectangularTrimmedSurface))
+//  {
+//    Handle(Geom_RectangularTrimmedSurface) TS = 
+//      Handle(Geom_RectangularTrimmedSurface)::DownCast(aSurf);
+//
+//    aSurf = TS->BasisSurface();
+//  }
+//
+//  aSurf->Bounds(anUSf, anUSl, aVSf, aVSl);
+//
+//  Standard_Real anURem = 0.0, aVRem = 0.0;
+//  Standard_Integer aNU = 1, aNV = 1;
+//
+//  TopoDS_Shape aNewSh = TopoDS_Shape();
+//  Standard_Boolean isSplitByU, isSplitByV;
+//
+//  const Standard_Real duf = anUFl - anUFf;
+//  const Standard_Real dus = anUSl - anUSf;    
+//  const Standard_Real dvf = aVFl - aVFf;
+//  const Standard_Real dvs = aVSl - aVSf;
+//
+//  isSplitByU = /*aSurf->IsUPeriodic() && */
+//     duf > dus;
+//  isSplitByV = /*aSurf->IsVPeriodic() && */
+//     dvf > dvs;
+//
+//  if(isSplitByU)
+//  {
+//    theDI << "Splitting by U: " << anUSf << ", " << anUSl << "\n";
+//    aNU += 2;
+//    anURem = RealMod(duf,dus);
+//  }
+//
+//  if(isSplitByV)
+//  {
+//    theDI << "Splitting by V: " << aVSf << ", " << aVSl << "\n";
+//    aNV += 2;
+//    aVRem  = RealMod(dvf,dvs);
+//  }
+//
+//  if (!(isSplitByU || isSplitByV))
+//  {
+//    theDI << "No splitting required!\n";
+//    return 0;
+//  }
+//
+//  ShapeFix::SplittingFace(aFace, aNewSh, aSurf, dus/2.0, dvs/2.0, anUFf, aVFf, 
+//              anURem, aVRem, isSplitByU, isSplitByV);
+//
+//  if(!aNewSh.IsNull())
+//    DBRep::Set(theArg[1], aNewSh);
+//  else
+//    theDI << "No splitting result was found!\n";
+//
+//  return 0;
+//}
+
+
 //=======================================================================
 //function : InitCommands
 //purpose  : 
@@ -792,6 +1059,14 @@ static Standard_Integer connectedges(Draw_Interpretor& di, Standard_Integer n, c
                   __FILE__,checkfclass2d,g);
   theCommands.Add ("connectedges","res shape [toler shared]",
                   __FILE__,connectedges,g);
-  
+  theCommands.Add ("ffixpcu"," ffixpcu face [-f] [-s] (to fix face with "
+       "\"BRepCheck_OutOfSurfaceBoundary\" status) ", __FILE__,FixPCurveOfFace,g);
+
+  theCommands.Add ("sfixpcu"," sfixpcu result shape [-f] [-s] (to fix shape, which contains face with "
+       "\"BRepCheck_OutOfSurfaceBoundary\" status) ", __FILE__,FixPCurveOfShape,g);
+
+  //theCommands.Add ("splitfix"," splitfix result face [u usplit1 usplit2...] "
+  //                                    "[v vsplit1 vsplit2 ...]",__FILE__,splitfix,g);
+
 }
 
index 9a44547bb15ee039b65855cdb4ddccb45f764670..e63a73c336d340f2330df2f4e18d46fdf798ee9a 100755 (executable)
@@ -35,8 +35,9 @@ uses
     TopTools,
     BRep,
     ShapeExtend,
-    BRepTools
-
+    BRepTools,
+    GeomAbs
+    
 is
 
     class Vertex;
index eea0989c9463bdd6b14ea1125d58ebcd628af190..463fb4321be0cb95ab44200bb504af1af52ae174 100755 (executable)
@@ -33,7 +33,8 @@ uses
     Location from TopLoc,
     Vertex   from TopoDS,
     Face     from TopoDS,
-    Edge     from TopoDS
+    Edge     from TopoDS,
+    Shape    from GeomAbs 
 
 is
 
@@ -86,14 +87,15 @@ is
        --           only pcurve corresponding to the orientation of the edge is 
         --           replaced
 
-    ReassignPCurve (me; edge: Edge from TopoDS; 
-                       old, sub: Face from TopoDS)
+    ReassignPCurve (me; edge: Edge from TopoDS;
+                    old, sub: Face from TopoDS;
+                    theContinuity  : Shape from GeomAbs = GeomAbs_C0)
     returns Boolean;    
-        ---Purpose: Reassign edge pcurve lying on face <old> to another face <sub>. 
-       --          If edge has two pcurves on <old> face, only one of them will be 
+        ---Purpose: Reassign edge pcurve lying on face <old> to another face <sub>.
+        --          If edge has two pcurves on <old> face, only one of them will be 
         --          reassigned, and other will left alone. Similarly, if edge already 
         --          had a pcurve on face <sub>, it will have two pcurves on it.
-       --          Returns True if succeeded, False if no pcurve lying on <old> found.
+        --          Returns True if succeeded, False if no pcurve lying on <old> found.
     
     TransformPCurve(me; pcurve: Curve  from Geom2d; 
                        trans : Trsf2d from gp;
index 313040055fad8c1e778ad48c0d4e4432b3770b87..e148c6f80d44ca64ce5453ba18c7f29b9f673d2d 100755 (executable)
@@ -407,14 +407,13 @@ void ShapeBuild_Edge::ReplacePCurve (const TopoDS_Edge& edge,
 }
 
 //=======================================================================
-//function : ReassignPCurve
-//purpose  : 
+//function :  CountPCurves
+//purpose  :  Count exact number of pcurves STORED in edge for face
+//            This makes difference for faces based on plane surfaces
+//            where pcurves can be not stored but returned by 
+//            BRep_Tools::CurveOnSurface
 //=======================================================================
-
-// Count exact number of pcurves STORED in edge for face
-// This makes difference for faces based on plane surfaces where pcurves can be 
-// not stored but returned by BRep_Tools::CurveOnSurface
-static Standard_Integer CountPCurves (const TopoDS_Edge &edge, 
+static Standard_Integer CountPCurves(const TopoDS_Edge &edge, 
                                      const TopoDS_Face &face)
 {
   TopLoc_Location L;
@@ -430,9 +429,15 @@ static Standard_Integer CountPCurves (const TopoDS_Edge &edge,
   return 0;
 }
 
-Standard_Boolean ShapeBuild_Edge::ReassignPCurve (const TopoDS_Edge& edge,
-                                                 const TopoDS_Face& old,
-                                                 const TopoDS_Face& sub) const
+//=======================================================================
+//function : ReassignPCurve
+//purpose  : 
+//=======================================================================
+Standard_Boolean 
+  ShapeBuild_Edge::ReassignPCurve(const TopoDS_Edge& edge,
+                                  const TopoDS_Face& old,
+                                  const TopoDS_Face& sub,
+                                  const GeomAbs_Shape theContinuity) const
 {
   Standard_Integer npcurves = CountPCurves ( edge, old );
   //if ( npcurves <1 ) return Standard_False; //gka
@@ -440,14 +445,16 @@ Standard_Boolean ShapeBuild_Edge::ReassignPCurve (const TopoDS_Edge& edge,
   Standard_Real f, l;
   Handle(Geom2d_Curve) pc;
   pc = BRep_Tool::CurveOnSurface ( edge, old, f, l );
-  if ( pc.IsNull() ) return Standard_False;
-  else if( npcurves == 0)  npcurves =1; //gka
-          
-          
+  if (pc.IsNull())
+    return Standard_False;
+  else if(npcurves == 0)
+    npcurves =1; //gka
+
   BRep_Builder B;
 
   // if the pcurve was only one, remove; else leave second one
-  if ( npcurves >1 ) {
+  if ( npcurves >1 )
+  {
     //smh#8 Porting AIX
     TopoDS_Shape tmpshape = edge.Reversed();
     TopoDS_Edge erev = TopoDS::Edge (tmpshape);
@@ -455,11 +462,13 @@ Standard_Boolean ShapeBuild_Edge::ReassignPCurve (const TopoDS_Edge& edge,
     B.UpdateEdge ( edge, pc2, old, 0. );
     B.Range ( edge, old, f, l );
   }
-  else RemovePCurve ( edge, old );
+  else
+    RemovePCurve ( edge, old );
   
   // if edge does not have yet pcurves on sub, just add; else add as first
   Standard_Integer npcs = CountPCurves ( edge, sub );
-  if ( npcs <1 ) B.UpdateEdge ( edge, pc, sub, 0. );
+  if ( npcs < 1 )
+    B.UpdateEdge ( edge, pc, sub, 0. );
   else {
 //smh#8 Porting AIX
     TopoDS_Shape tmpshape = edge.Reversed();
@@ -467,8 +476,9 @@ Standard_Boolean ShapeBuild_Edge::ReassignPCurve (const TopoDS_Edge& edge,
     Standard_Real cf, cl;
     Handle(Geom2d_Curve) pcs = BRep_Tool::CurveOnSurface ( erev, sub, cf, cl );
     if ( edge.Orientation() == TopAbs_REVERSED ) // because B.UpdateEdge does not check edge orientation
-         B.UpdateEdge ( edge, pcs, pc, sub, 0. );
-    else B.UpdateEdge ( edge, pc, pcs, sub, 0. );
+      B.UpdateEdge ( edge, pcs, pc, sub, 0., theContinuity);
+    else
+      B.UpdateEdge ( edge, pc, pcs, sub, 0., theContinuity);
   }
   
   B.Range ( edge, sub, f, l );
index b74ab11e3b89c1f058990c8c6ccaa7afc7896bef..2d2f3ce8e75b70483e7f7a3a71a74185b352ed9f 100755 (executable)
@@ -154,6 +154,37 @@ is
         
     LeastEdgeSize(theshape: in out Shape from TopoDS) returns Real;
       ---Purpose: Calculate size of least edge;       
-        
 
+    RefineFace (theF        :        Face  from TopoDS;
+                theNewShape : in out Shape from TopoDS;
+                flForce : Boolean from Standard = Standard_False;
+                flDoNotSplit : Boolean from Standard = Standard_True);
+    ---Purpose: It is created for fixing faces with 
+    --          BRepCheck_OutOfSurfaceBoundary status.
+    --          If source face is based on not RectangularTrimmed
+    --          surface and after this method calling it should be 
+    --          based on RectangularTrimmed surface (for successfull
+    --          fixing), then fixing will be executed if and only if
+    --          flForce == Standard_True.
+    --          If it is necessary to do splitting, flForce allows to
+    --          ignore periodic of source surface, which theF based on.
+    --          flDoNotSplit forbids to split principial.
+               
+    ReTrimmedFace(theF        : in out Face       from TopoDS;
+                  theNewRTSurf: RectangularTrimmedSurface from Geom)
+                  
+    ---Purpose:    Replace the surface in theF with theNewRTSurf.
+    is private;
+    
+    SplittingFace(theF        :        Face  from TopoDS;
+                  theNewShape : in out Shape from TopoDS;
+                  theS  : Surface from Geom;
+                  theDeltaBU2, theDeltaBV2,
+                  theUFf, theVFf,
+                  theUReminder, theVReminder : Real from Standard;
+                  isSplitByU, isSplitByV : Boolean from Standard)
+                  
+    ---Purpose:    Make split.
+    is private;
+      
 end ShapeFix;
index 2a0b39c95a1d5e91b6aec442e7c7d1db069e7235..5e8130cdcf1994ac8f0269ac347ed9562cd2139e 100755 (executable)
@@ -17,9 +17,6 @@
 // purpose or non-infringement. Please see the License for the specific terms
 // and conditions governing the rights and limitations under the License.
 
-
-
-#include <ShapeFix.hxx>
 //:k2 abv 16.12.98: eliminating code duplication
 //pdn     18.12.98: checking deviation for SP edges
 //:   abv 22.02.99: method FillFace() removed since PRO13123 is fixed
 //szv#9:S4244:19Aug99: Added method FixWireGaps
 //szv#10:S4244:23Aug99: Added method FixFaceGaps
 
+#include <Adaptor3d_CurveOnSurface.hxx>
 #include <BRep_Builder.hxx>
 #include <BRep_Tool.hxx>
-
-#include <Geom2d_Curve.hxx>
+#include <BRepLib.hxx>
+#include <BRepTools.hxx>
 #include <Geom_Curve.hxx>
-
+#include <Geom_Plane.hxx>
+#include <Geom_RectangularTrimmedSurface.hxx>
+#include <Geom_Surface.hxx>
+#include <Geom2d_Curve.hxx>
+#include <Geom2dAdaptor_HCurve.hxx>
+#include <GeomAdaptor_HSurface.hxx>
+#include <gp_Pnt.hxx>
+#include <Message_ProgressSentry.hxx>
 #include <Precision.hxx>
-
+#include <ShapeAnalysis_Edge.hxx>
+#include <ShapeAnalysis_Surface.hxx>
+#include <ShapeBuild_Edge.hxx>
+#include <ShapeBuild_ReShape.hxx>
+#include <ShapeExtend_CompositeSurface.hxx>
+#include <ShapeFix.hxx>
+#include <ShapeFix_ComposeShell.hxx>
+#include <ShapeFix_Edge.hxx>
+#include <ShapeFix_Edge.hxx>
+#include <ShapeFix_Face.hxx>
+#include <ShapeFix_Shape.hxx>
+#include <ShapeFix_Wire.hxx>
 #include <Standard_ErrorHandler.hxx>
 #include <Standard_Failure.hxx>
-
+#include <TColGeom_HArray2OfSurface.hxx>
+#include <TColgp_SequenceOfPnt.hxx>
+#include <TopExp.hxx>
 #include <TopExp_Explorer.hxx>
 #include <TopLoc_Location.hxx>
 #include <TopoDS.hxx>
 #include <TopoDS_Edge.hxx>
 #include <TopoDS_Face.hxx>
-#include <Geom_Surface.hxx>
-
-//:i2
-#include <gp_Pnt.hxx>
-#include <Geom_Plane.hxx>
-#include <ShapeFix_Edge.hxx>
-#include <Geom2dAdaptor_HCurve.hxx>
-#include <Adaptor3d_CurveOnSurface.hxx>
-#include <Geom_RectangularTrimmedSurface.hxx>
-#include <ShapeAnalysis_Surface.hxx>
-
-#include <ShapeFix_Edge.hxx>
-#include <ShapeFix_Shape.hxx>
-#include <ShapeFix_Wire.hxx>
-#include <ShapeFix_Face.hxx>
 #include <TopoDS_Iterator.hxx>
-#include <GeomAdaptor_HSurface.hxx>
-#include <TopTools_MapOfShape.hxx>
-#include <BRepLib.hxx>
-
-#include <ShapeAnalysis_Edge.hxx>
-#include <ShapeBuild_Edge.hxx>
 #include <TopoDS_Vertex.hxx>
-#include <ShapeBuild_ReShape.hxx>
-#include <TColgp_SequenceOfPnt.hxx>
-#include <TopTools_ListOfShape.hxx>
+#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
 #include <TopTools_ListIteratorOfListOfShape.hxx>
+#include <TopTools_ListOfShape.hxx>
+#include <TopTools_MapOfShape.hxx>
 #include <TopTools_SequenceOfShape.hxx>
-#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
-#include <TopExp.hxx>
-
-#include <Message_ProgressSentry.hxx>
 
 //=======================================================================
 //function : SameParameter
@@ -718,3 +711,378 @@ Standard_Real ShapeFix::LeastEdgeSize(TopoDS_Shape& theShape)
   aRes = sqrt(aRes);
   return aRes;
 }
+
+
+//static void Boundaries2D(const TopoDS_Face& theF,
+//                         const Handle(Geom_Surface)& theS,
+//                         Standard_Real& UMin,
+//                         Standard_Real& UMax,
+//                         Standard_Real& VMin,
+//                         Standard_Real& VMax)
+//{
+//  const Standard_Integer NBPoints = 23;
+//  TopoDS_Face aF = theF;
+//  aF.Orientation(TopAbs_FORWARD);
+//
+//  Standard_Real anUF = 0.0, anUL = 0.0, aVF = 0.0, aVL = 0.0;
+//
+//  Bnd_Box2d Baux;
+//  TopExp_Explorer ex(aF,TopAbs_EDGE);
+//  for (;ex.More();ex.Next())
+//  {
+//    Standard_Real pf, pl;
+//    TopoDS_Edge anE = TopoDS::Edge(ex.Current());
+//    const Handle(Geom2d_Curve) aCur = BRep_Tool::CurveOnSurface(anE, theF, pf, pl);
+//
+//    if (aCur.IsNull())
+//      continue;
+//    
+//    MinMax(pf,pl);
+//
+//    if (Precision::IsNegativeInfinite(pf) ||
+//              Precision::IsPositiveInfinite(pf))
+//      continue;
+//
+//    if (Precision::IsNegativeInfinite(pl) ||
+//              Precision::IsPositiveInfinite(pl))
+//      continue;
+//
+//
+//    Geom2dAdaptor_Curve anAC(aCur,pf,pl);
+//
+//    gp_Pnt2d aP;
+//    
+//    anAC.D0(pf, aP);
+//    Baux.Add(aP);
+//
+//    anAC.D0(pl, aP);
+//    Baux.Add(aP);
+//
+//    if (anAC.GetType() == GeomAbs_Line)
+//    {
+//      continue;
+//    }
+//    
+//    Standard_Real prm = pf;
+//    const Standard_Real step = (pl - pf) / NBPoints;
+//    for(Standard_Integer i = 1; i < NBPoints; i++)
+//    {
+//      prm += step;
+//      anAC.D0(prm, aP);
+//      Baux.Add(aP);
+//    }
+//  }
+//
+//  if(!Baux.IsVoid())
+//    Baux.Get(UMin, VMin, UMax, VMax);
+//  else
+//    theS->Bounds(UMin, UMax, VMin, VMax);
+//  
+//#ifdef DEB 
+//  cout << "++Boundaries2D: U = ( " << UMin << ")...(" << UMax << "); "
+//                  "V = ( " << VMin << ")...(" << VMax << ").--" << endl;
+//#endif
+//}
+
+//=======================================================================
+//function : RefineFace
+//purpose  : 
+//=======================================================================
+void ShapeFix::RefineFace(const TopoDS_Face& theF,
+                          TopoDS_Shape& theNewShape,
+                          const Standard_Boolean flForce,
+                          const Standard_Boolean flDoNotSplit)
+{
+  Standard_Real anUFf, anUFl, aVFf, aVFl;
+
+  Standard_Boolean  isUtrim = Standard_False, 
+                    isVtrim = Standard_False; 
+
+  Standard_Boolean  isUtrimmed = Standard_False, 
+                    isVtrimmed = Standard_False; 
+
+  TopoDS_Face aF = theF;
+
+  Handle(Geom_Surface) aS=BRep_Tool::Surface(aF);
+  Standard_Boolean isRectangularTrimmed = (aS->DynamicType() == STANDARD_TYPE(Geom_RectangularTrimmedSurface));
+
+  if (isRectangularTrimmed)
+  {
+    Handle(Geom_RectangularTrimmedSurface) TS = 
+      Handle(Geom_RectangularTrimmedSurface)::DownCast(aS);
+
+    TS->GetTrimmedFlags(isUtrimmed, isVtrimmed);
+
+    aS = TS->BasisSurface();
+  }
+
+  //Boundaries2D(theF, aS, aU1, aU2, aV1, aV2);
+  BRepTools::UVBounds(aF, anUFf, anUFl, aVFf, aVFl);
+
+  Standard_Boolean  isURunAway, isVRunAway;
+  Standard_Boolean  isSplitByU = Standard_False, 
+                    isSplitByV = Standard_False;
+
+  {
+    Standard_Real uf, ul, vf, vl;
+    aS->Bounds(uf, ul, vf, vl);
+
+    const Standard_Real duf = anUFl - anUFf;
+    const Standard_Real dus = ul - uf;    
+    const Standard_Real dvf = aVFl - aVFf;
+    const Standard_Real dvs = vl - vf;
+
+
+    isSplitByU = !flDoNotSplit && (aS->IsUPeriodic() || flForce) && (duf > dus);
+    isSplitByV = !flDoNotSplit && (aS->IsVPeriodic() || flForce) && (dvf > dvs);
+
+#ifdef DEB
+    cout << "isSplitByU = " << isSplitByU << "; isSplitByV = " << isSplitByV <<endl;
+#endif
+
+    if(isSplitByU || isSplitByV)
+    {
+      Standard_Real anURemainder = isSplitByU ? RealMod(duf, dus) : 0.0;
+      Standard_Real aVRemainder  = isSplitByV ? RealMod(dvf, dvs) : 0.0;
+
+      SplittingFace(aF, theNewShape, aS, (ul-uf)/2.0, (vl-vf)/2.0, anUFf, aVFf, 
+                anURemainder, aVRemainder, isSplitByU, isSplitByV);
+      return;
+    }
+
+    isURunAway = (anUFf < uf - Precision::PConfusion()) ||
+                 (anUFl > ul + Precision::PConfusion());
+    isVRunAway = (aVFf < vf - Precision::PConfusion()) ||
+                 (aVFl > vl + Precision::PConfusion());
+  }
+
+  if(!(flForce || isRectangularTrimmed))
+  {
+#ifdef DEB
+    cout << "The surface is not \"RectangularTrimmed\". " 
+      "Try to use \"force\" flag."<< endl;
+#endif
+    
+    return;
+  }
+
+  if(aS->IsUPeriodic())
+  {
+    const Standard_Real aT = aS->UPeriod();
+    const Standard_Real dU = anUFl - anUFf;
+
+#ifdef DEB
+    if(dU > aT)
+    {
+      cout << "dU = " << dU << " > T = " << aT << ". Delta = " << dU - aT << endl;
+    }
+#endif
+    
+    anUFl = anUFf + aT;
+
+    isUtrim = isURunAway || isUtrimmed;
+  }
+
+  if(aS->IsVPeriodic())
+  {
+    const Standard_Real aT = aS->VPeriod();
+    const Standard_Real dv = aVFl - aVFf;
+    
+#ifdef DEB
+    if(dv > aT)
+    {
+      cout << "++dV = " << dv << " > T = " << aT << ". Delta = " << dv - aT << endl;
+    }
+
+#endif
+    
+    aVFl = aVFf + aT;
+
+    isVtrim = isVRunAway || isVtrimmed;
+  }
+
+  if(!(isUtrim || isVtrim))
+    return;
+
+#ifdef DEB
+  if(isUtrim)
+    cout << "Trimming U: (" << anUFf  << ")...(" << anUFl << ")" << endl;
+
+  if(isVtrim)
+    cout << "Trimming V: (" << aVFf  << ")...(" << aVFl << ")" << endl;
+#endif
+
+  Handle(Geom_RectangularTrimmedSurface) aRTS=new Geom_RectangularTrimmedSurface(aS,isUtrim,
+                                    isVtrim, anUFf, anUFl, aVFf, aVFl);
+
+  ReTrimmedFace(aF, aRTS);
+}
+
+//=======================================================================
+//function : RefineFace
+//purpose  : 
+//=======================================================================
+void ShapeFix::ReTrimmedFace(TopoDS_Face& theF,
+                            const Handle(Geom_RectangularTrimmedSurface)& theNewRTSurf)
+{
+#ifdef DEB
+  cout << "ShapeFix::ReTrimmedFace(...) is executed." << endl;
+#endif
+
+  TopExp_Explorer aExp;
+  TopTools_MapOfShape aME;
+  BRep_Builder aBB;
+  
+  aExp.Init(theF, TopAbs_EDGE);
+  for (; aExp.More(); aExp.Next())
+  {
+    Standard_Real aT1, aT2;
+    const TopoDS_Edge& aE=*((TopoDS_Edge*)&aExp.Current());
+    if (!aME.Add(aE))
+      continue;
+
+    TopLoc_Location aLocE;
+    Standard_Real aTolE=BRep_Tool::Tolerance(aE);
+    Handle(Geom2d_Curve) aC2D1=BRep_Tool::CurveOnSurface(aE, theF, aT1, aT2);
+    Standard_Boolean bIsClosed = BRep_Tool::IsClosed(aE, theF);
+    
+    if (!bIsClosed)
+    {
+      aBB.UpdateEdge(aE, aC2D1, theNewRTSurf, aLocE, theF, aTolE);
+    }
+    else
+    {
+      Standard_Boolean bIsLeft;
+      Standard_Real aScPr;
+      Handle(Geom2d_Curve) aC2D2;
+      TopoDS_Edge aE2;
+      aE2=aE;
+      aE2.Reverse();
+      aC2D2=BRep_Tool::CurveOnSurface(aE2, theF, aT1, aT2);
+      {
+        Standard_Real aT, aU1, aU2;
+        gp_Pnt2d aP2D1, aP2D2;
+        gp_Vec2d aV2D1, aV2D2;
+
+        const Standard_Real PAR_T = 0.43213918;
+        aT=(1.-PAR_T)*aT1 + PAR_T*aT2;
+        aC2D1->D1(aT, aP2D1, aV2D1);
+        aC2D2->D1(aT, aP2D2, aV2D2);
+        
+        aU1=aP2D1.X();
+        aU2=aP2D2.X();
+        bIsLeft=(aU1<aU2);
+        
+        gp_Vec2d aDOY(0.,1.);
+        aScPr=aV2D1*aDOY;
+      }
+
+      if (!bIsLeft)
+      {
+        if (aScPr<0.)
+          aBB.UpdateEdge(aE, aC2D2, aC2D1, theNewRTSurf, aLocE, theF, aTolE);
+        else
+          aBB.UpdateEdge(aE, aC2D1, aC2D2, theNewRTSurf, aLocE, theF, aTolE);
+      }
+      else
+      {
+        if (aScPr<0.)
+          aBB.UpdateEdge(aE, aC2D1, aC2D2, theNewRTSurf, aLocE, theF, aTolE);
+        else
+          aBB.UpdateEdge(aE, aC2D2, aC2D1, theNewRTSurf, aLocE, theF, aTolE);
+      }
+    }
+  }
+
+  TopLoc_Location aLoc;
+  aBB.UpdateFace(theF, theNewRTSurf, aLoc, BRep_Tool::Tolerance(theF));
+}
+
+//=======================================================================
+//function : RefineFace
+//purpose  : 
+//=======================================================================
+void ShapeFix::SplittingFace(const TopoDS_Face& theSourceShape,
+                             TopoDS_Shape& theNewShape,
+                             const Handle(Geom_Surface)& theS,
+                             const Standard_Real theDeltaBU2, //=(anUSl - anUSf)/2.0
+                             const Standard_Real theDeltaBV2, //=(aVSl - aVSf)/2.0
+                             const Standard_Real theUFf,      //left face's coordinate
+                             const Standard_Real theVFf,      //bottom face's coordinate
+                             const Standard_Real theURem, 
+                             const Standard_Real theVRem,
+                             const Standard_Boolean isSplitByU, 
+                             const Standard_Boolean isSplitByV)
+{
+#ifdef DEB
+  cout << "ShapeFix::SplittingFace(...) is executed." << endl;
+#endif
+
+  Standard_Real anUFf = theUFf, aVFf = theVFf;
+  Standard_Real anURem = theURem, aVRem = theVRem;
+
+  const Standard_Boolean isUTrimReq = isSplitByU && (0.0 < anURem) && (anURem < theDeltaBU2);
+  const Standard_Boolean isVTrimReq = isSplitByV && (0.0 < aVRem)  && (aVRem  < theDeltaBV2);
+  const Standard_Boolean isTrimReq = (isUTrimReq || isVTrimReq);
+
+#ifdef DEB
+    cout << "isTrimReq = " << isTrimReq << endl;
+#endif
+
+  const Standard_Integer aNU = isSplitByU ? 3 : 1;
+  const Standard_Integer aNV = isSplitByV ? 3 : 1;
+
+  Handle(TColGeom_HArray2OfSurface) AS = 
+                      new TColGeom_HArray2OfSurface(1, aNU, 1, aNV);
+  for(Standard_Integer i = AS->LowerRow(); i <= AS->UpperRow(); i++)
+  {
+    for(Standard_Integer j = AS->LowerCol(); j <= AS->UpperCol(); j++)
+    {
+      if(isTrimReq)
+      {
+        const Standard_Real umin = anUFf, vmin = aVFf;
+        const Standard_Real umax = umin + theDeltaBU2 + anURem;
+        const Standard_Real vmax = vmin + theDeltaBV2 + aVRem;
+
+        Handle(Geom_RectangularTrimmedSurface) rect = 
+          new Geom_RectangularTrimmedSurface (theS, isUTrimReq, isVTrimReq, umin, umax, vmin, vmax );
+
+        //after 1st passage
+        anURem = aVRem = 0.0;
+        
+        if(isUTrimReq)
+          anUFf = umax;
+
+        if(isVTrimReq)
+          aVFf = vmax;
+
+        AS->SetValue (i, j, rect);
+      }
+      else
+      {
+        AS->SetValue (i, j, theS);
+      }
+    }
+  }
+
+  Handle(ShapeExtend_CompositeSurface) aGrid = new ShapeExtend_CompositeSurface;
+
+#ifndef DEB
+  aGrid->Init(AS);
+#else
+  if (!aGrid->Init(AS))
+    cout << "Grid badly connected!" << endl;
+#endif
+
+  ShapeFix_ComposeShell SUCS;
+  {
+    TopLoc_Location l;
+    SUCS.Init(aGrid, l, theSourceShape, Precision::Confusion());
+    Handle(ShapeBuild_ReShape) RS = new ShapeBuild_ReShape();
+    SUCS.SetContext(RS);
+    SUCS.Perform ();
+  }
+
+  theNewShape = SUCS.Result();
+  ShapeFix::SameParameter (theNewShape, Standard_False);
+}
index a0a41c9e6008248519b60bc9462ecca8327d5b08..b47ec55e7ba9837795b64f2cbf721cd473ad4365 100755 (executable)
@@ -2524,27 +2524,33 @@ void ShapeFix_ComposeShell::MakeFacesOnPatch (TopTools_SequenceOfShape &faces,
 //purpose  : 
 //=======================================================================
 
-void ShapeFix_ComposeShell::DispatchWires (TopTools_SequenceOfShape &faces,
-                                          ShapeFix_SequenceOfWireSegment& wires) const
+void ShapeFix_ComposeShell::DispatchWires(TopTools_SequenceOfShape &faces,
+                                          ShapeFix_SequenceOfWireSegment& wires) const
 {
   BRep_Builder B;
   
   // in closed mode, apply FixShifted to all wires before dispatching them
-  if ( myClosedMode ) {
+  if(myClosedMode)
+  {
     ShapeFix_Wire sfw;
     sfw.SetFace ( myFace );
     sfw.SetPrecision ( Precision() );
     
     // pdn: shift pcurves in the seam to make OK shape w/o fixshifted
     Standard_Integer i;
-    for ( i=1; i <= wires.Length(); i++ ) {
+    for ( i=1; i <= wires.Length(); i++ )
+    {
       if(wires(i).IsVertex())
         continue;
+
       Handle(ShapeExtend_WireData) sbwd = wires(i).WireData();
       
-      for(Standard_Integer jL=1; jL <= sbwd->NbEdges(); jL++ ) {
+      for(Standard_Integer jL=1; jL <= sbwd->NbEdges(); jL++ )
+      {
         TopoDS_Edge E = sbwd->Edge(jL);
-        if ( E.Orientation() == TopAbs_REVERSED && BRep_Tool::IsClosed(E,myFace) ) {
+
+        if(E.Orientation() == TopAbs_REVERSED && BRep_Tool::IsClosed(E,myFace))
+        {
           Standard_Real f1,l1, f2, l2;
           Handle(Geom2d_Curve) c21 =  BRep_Tool::CurveOnSurface(E,myFace,f1,l1);
           TopoDS_Shape dummy = E.Reversed();
@@ -2554,12 +2560,13 @@ void ShapeFix_ComposeShell::DispatchWires (TopTools_SequenceOfShape &faces,
           gp_Pnt2d pl1 = c21->Value(l1);
           gp_Pnt2d pf2 = c22->Value(f2);
           gp_Pnt2d pl2 = c22->Value(l2);
-          if ( c21 == c22 || pf1.SquareDistance(pf2) < dPreci ||
-              pl1.SquareDistance(pl2) < dPreci ) {
+          if ((c21 == c22) || (pf1.SquareDistance(pf2) < dPreci) ||
+                                  pl1.SquareDistance(pl2) < dPreci )
+          {
             gp_Vec2d shift(0.,0.);
-            if ( myUClosed && Abs ( pf2.X() - pl2.X() ) < ::Precision::PConfusion() )
+            if( myUClosed && Abs ( pf2.X() - pl2.X() ) < ::Precision::PConfusion() )
               shift.SetX(myUPeriod);
-            if ( myVClosed && Abs ( pf2.Y() - pl2.Y() ) < ::Precision::PConfusion() )
+            if( myVClosed && Abs ( pf2.Y() - pl2.Y() ) < ::Precision::PConfusion() )
               shift.SetY(myVPeriod);
             c22->Translate(shift);
           }
@@ -2567,15 +2574,18 @@ void ShapeFix_ComposeShell::DispatchWires (TopTools_SequenceOfShape &faces,
       }
     }
     
-    for ( i=1; i <= wires.Length(); i++ ) {
+    for ( i=1; i <= wires.Length(); i++ )
+    {
       if(wires(i).IsVertex())
         continue;
+
       Handle(ShapeExtend_WireData) sbwd = wires(i).WireData();
       
       //: abv 30.08.01: torHalf2.sat: if wire contains single degenerated
       // edge, skip that wire
-      if ( sbwd->NbEdges() <=0 || 
-          ( sbwd->NbEdges() ==1 && BRep_Tool::Degenerated(sbwd->Edge(1)) ) ) {
+      if  ( sbwd->NbEdges() <=0 || 
+          ( sbwd->NbEdges() ==1 && BRep_Tool::Degenerated(sbwd->Edge(1))))
+      {
         wires.Remove(i--);
         continue;
       }
@@ -2585,11 +2595,12 @@ void ShapeFix_ComposeShell::DispatchWires (TopTools_SequenceOfShape &faces,
       
       // force recomputation of degenerated edges (clear pcurves)
       ShapeBuild_Edge sbe;
-      for (Standard_Integer jL=1; jL <= sbwd->NbEdges(); jL++ ) {
-        if ( BRep_Tool::Degenerated(sbwd->Edge(jL)) ) 
+      for (Standard_Integer jL=1; jL <= sbwd->NbEdges(); jL++ )
+      {
+        if(BRep_Tool::Degenerated(sbwd->Edge(jL)))
           sbe.RemovePCurve(sbwd->Edge(jL),myFace);
-        //        sfw.FixDegenerated(jL);
       }
+
       sfw.FixDegenerated();
     }
   }
@@ -2615,18 +2626,22 @@ void ShapeFix_ComposeShell::DispatchWires (TopTools_SequenceOfShape &faces,
   
   Standard_Real U1,U2,V1,V2;
   myGrid->Bounds(U1,U2,V1,V2);
-  for ( i = 1; i <= nb; i++ ) {
-    
+  for ( i = 1; i <= nb; i++ )
+  {
     gp_Pnt2d pnt = mPnts(i);
     Standard_Real ush =0., vsh=0.;
-    if(myUClosed) {
+    
+    if(myUClosed)
+    {
       ush = ShapeAnalysis::AdjustToPeriod(pnt.X(),U1,U2);
       pnt.SetX(pnt.X()+ush);
     }
+
     if(myVClosed) {
       vsh = ShapeAnalysis::AdjustToPeriod(pnt.Y(),V1,V2);
       pnt.SetY(pnt.Y()+vsh);
     }
+    
     mPnts(i) = pnt;
     Standard_Integer indU = myGrid->LocateUParameter ( pnt.X() );
     Standard_Integer indV = myGrid->LocateVParameter ( pnt.Y() );
@@ -2635,19 +2650,23 @@ void ShapeFix_ComposeShell::DispatchWires (TopTools_SequenceOfShape &faces,
     gp_Trsf2d T;
     Standard_Real uFact=1.;
     Standard_Boolean needT = myGrid->GlobalToLocalTransformation ( indU, indV, uFact, T );
-    if ( ush != 0. || vsh != 0. ) {
+    
+    if ( ush != 0. || vsh != 0. )
+    {
       gp_Trsf2d Sh;
       Sh.SetTranslation ( gp_Vec2d ( ush, vsh ) );
       T.Multiply ( Sh );
       needT = Standard_True;
     }
+
     if(wires(i).IsVertex()) 
       continue;
     Handle(Geom_Surface) surf = myGrid->Patch ( indU, indV );
     TopoDS_Face face;
     B.MakeFace ( face, surf, myLoc, ::Precision::Confusion() );
     Handle(ShapeExtend_WireData) sewd = wires(i).WireData();
-    for ( Standard_Integer j = 1; j <= sewd->NbEdges(); j++ ) {
+    for ( Standard_Integer j = 1; j <= sewd->NbEdges(); j++ )
+    {
       //      Standard_Integer nsplit = ApplyContext ( sewd, j, context );
       //      if ( nsplit <1 ) { j--; continue; }
       
@@ -2660,70 +2679,91 @@ void ShapeFix_ComposeShell::DispatchWires (TopTools_SequenceOfShape &faces,
       TopoDS_Edge anInitEdge = edge;
       Standard_Boolean ismanifold = (edge.Orientation() == TopAbs_FORWARD ||
                                     edge.Orientation() == TopAbs_REVERSED);
-      if ( rs.IsRecorded ( edge ) ) {
+
+      if (rs.IsRecorded(edge))
+      {
         //smh#8
-       TopoDS_Shape tmpNE = rs.Value(edge);
-       newEdge = TopoDS::Edge ( tmpNE );
-      } 
-      else {
-       
-       if(!ismanifold) 
-         anInitEdge.Orientation(TopAbs_FORWARD);
+        TopoDS_Shape tmpNE = rs.Value(edge);
+        newEdge = TopoDS::Edge ( tmpNE );
+      }
+      else
+      {
+        if(!ismanifold)
+          anInitEdge.Orientation(TopAbs_FORWARD);
+
+        newEdge = sbe.Copy ( anInitEdge, Standard_False );
         
-       newEdge = sbe.Copy ( anInitEdge, Standard_False );
-       if(!ismanifold)
-         newEdge.Orientation(edge.Orientation());
-       rs.Replace ( edge, newEdge );
-       Context()->Replace ( edge, newEdge );
+        if(!ismanifold)
+          newEdge.Orientation(edge.Orientation());
+
+        rs.Replace ( edge, newEdge );
+        Context()->Replace ( edge, newEdge );
       }
       
-      sbe.ReassignPCurve ( newEdge, myFace, face );
+      sbe.ReassignPCurve ( newEdge, myFace, face, GeomAbs_CN);
       
       // transform pcurve to parametric space of patch
-      if ( needT ) {
-       Standard_Real f, l;
-       Handle(Geom2d_Curve) c2d;
-       if ( sae.PCurve ( newEdge, face, c2d, f, l, Standard_False ) ) {
-         Standard_Real newf = f, newl = l;
-         Handle(Geom2d_Curve) c2dnew = sbe.TransformPCurve ( c2d, T, uFact, newf, newl );
-         if ( BRep_Tool::IsClosed ( newEdge, face ) ) {
-           Standard_Real cf, cl;
-           Handle(Geom2d_Curve) c2d2;
+      if (needT)
+      {
+        Standard_Real f, l;
+        Handle(Geom2d_Curve) c2d;
+        
+        if(sae.PCurve(newEdge, face, c2d, f, l, Standard_False))
+        {
+          Standard_Real newf = f, newl = l;
+          Handle(Geom2d_Curve) c2dnew = sbe.TransformPCurve(c2d, T, uFact, newf, newl);
+          
+          if(BRep_Tool::IsClosed(newEdge, face))
+          {
+            Standard_Real cf, cl;
+            Handle(Geom2d_Curve) c2d2;
             //smh#8
-           TopoDS_Shape tmpE = newEdge.Reversed();
-           TopoDS_Edge e2 = TopoDS::Edge (tmpE );
-           if ( sae.PCurve ( e2, face, c2d2, cf, cl, Standard_False ) ) {
-             if ( newEdge.Orientation() == TopAbs_FORWARD ) 
-                B.UpdateEdge ( newEdge, c2dnew, c2d2, face, 0. );
-             else B.UpdateEdge ( newEdge, c2d2, c2dnew, face, 0. );
-           }
-           else B.UpdateEdge ( newEdge, c2dnew, face, 0. );
-         }
-         else B.UpdateEdge ( newEdge, c2dnew, face, 0. );
-         B.Range ( newEdge, face, newf, newl );
-         if ( (newf != f || newl != l) && !BRep_Tool::Degenerated(newEdge) ) 
-           B.SameRange ( newEdge, Standard_False );
-       }
+            TopoDS_Shape tmpE = newEdge.Reversed();
+            TopoDS_Edge e2 = TopoDS::Edge (tmpE );
+            if(sae.PCurve(e2, face, c2d2, cf, cl, Standard_False))
+            {
+              if(newEdge.Orientation() == TopAbs_FORWARD)
+                B.UpdateEdge(newEdge, c2dnew, c2d2, face, 0., GeomAbs_CN);
+              else
+                B.UpdateEdge(newEdge, c2d2, c2dnew, face, 0., GeomAbs_CN);
+            }
+            else
+              B.UpdateEdge ( newEdge, c2dnew, face, 0. );
+          }
+          else
+            B.UpdateEdge ( newEdge, c2dnew, face, 0. );
+
+          B.Range ( newEdge, face, newf, newl );
+          
+          if(((newf != f) || (newl != l)) && !BRep_Tool::Degenerated(newEdge))
+            B.SameRange ( newEdge, Standard_False );
+        }
       }
-      
-      if(!BRep_Tool::SameRange(newEdge)) {
-       TopoDS_Edge etmp;
-       if(!ismanifold) {
-         TopoDS_Edge afe = TopoDS::Edge(newEdge.Oriented(TopAbs_FORWARD));
-         etmp  = sbe.Copy (afe , Standard_False );
-       }
-       else
-         etmp  = sbe.Copy ( newEdge, Standard_False );
-       sfe->FixAddCurve3d ( etmp );
-       Standard_Real cf, cl;
-       Handle(Geom_Curve) c3d;
-       if(sae.Curve3d(etmp,c3d,cf,cl,Standard_False)) {
-         B.UpdateEdge ( newEdge, c3d, 0. );
-         sbe.SetRange3d ( newEdge, cf, cl );
-       }
+
+      if(!BRep_Tool::SameRange(newEdge))
+      {
+        TopoDS_Edge etmp;
+        if(!ismanifold)
+        {
+          TopoDS_Edge afe = TopoDS::Edge(newEdge.Oriented(TopAbs_FORWARD));
+          etmp  = sbe.Copy (afe , Standard_False );
+        }
+        else
+          etmp  = sbe.Copy ( newEdge, Standard_False );
+
+        sfe->FixAddCurve3d ( etmp );
+        Standard_Real cf, cl;
+        Handle(Geom_Curve) c3d;
+        
+        if(sae.Curve3d(etmp,c3d,cf,cl,Standard_False))
+        {
+          B.UpdateEdge ( newEdge, c3d, 0. );
+          sbe.SetRange3d ( newEdge, cf, cl );
+        }
       }
-      else       
-       sfe->FixAddCurve3d ( newEdge );
+      else
+        sfe->FixAddCurve3d ( newEdge );
+      
       sewd->Set ( newEdge, j );
     }
   }
@@ -2731,29 +2771,42 @@ void ShapeFix_ComposeShell::DispatchWires (TopTools_SequenceOfShape &faces,
   // Collect wires in packets lying on same surface and dispatch them
   TColStd_Array1OfBoolean used ( 1, nb );
   used.Init ( Standard_False );
-  for(;;) {
-    TopTools_SequenceOfShape loops;
 
+  for(;;)
+  {
+    TopTools_SequenceOfShape loops;
+    
     Handle(Geom_Surface) Surf;
-    for ( i = 1; i <= nb; i++ ) {
-      if ( used(i) ) continue;
-      Handle(Geom_Surface) S = myGrid->Patch ( mPnts(i) );
-      if ( Surf.IsNull() ) Surf = S;
-      else if ( S != Surf ) continue;
+    for ( i = 1; i <= nb; i++ )
+    {
+      if(used(i)) continue;
+      
+      Handle(Geom_Surface) S = myGrid->Patch(mPnts(i));
+
+      if(Surf.IsNull())
+        Surf = S;
+      else if(S != Surf)
+        continue;
+
       used(i) = Standard_True;
       ShapeFix_WireSegment aSeg = wires(i);
-      if(aSeg.IsVertex()) {
-       TopoDS_Vertex aVert = aSeg.GetVertex();
-       if(aVert.Orientation() == TopAbs_INTERNAL)
-         loops.Append(wires(i).GetVertex());
+      if(aSeg.IsVertex())
+      {
+        TopoDS_Vertex aVert = aSeg.GetVertex();
+        if(aVert.Orientation() == TopAbs_INTERNAL)
+          loops.Append(wires(i).GetVertex());
       }
-      else {
-       Handle(ShapeExtend_WireData) aWD = aSeg.WireData();
-       if(!aWD.IsNull())
-         loops.Append ( aWD->Wire() );
+      else
+      {
+        Handle(ShapeExtend_WireData) aWD = aSeg.WireData();
+        
+        if(!aWD.IsNull())
+          loops.Append(aWD->Wire());
       }
     }
-    if ( Surf.IsNull() ) break;
+
+    if(Surf.IsNull())
+      break;
 
     MakeFacesOnPatch ( faces, Surf, loops );
   } 
index 5c4fec225e9c749752f575dcaed8820117cd9833..eb6b4a46444bcbec9b078d08e72283ccdeb6ae32 100755 (executable)
@@ -138,6 +138,20 @@ inline Standard_Integer  Min (const Standard_Integer Val1,
   return Val1 <= Val2 ? Val1 : Val2;
 }
 
+// ------------------------------------------------------------------
+// MinMax : Replaces  theParMIN = MIN(theParMIN, theParMAX),
+//                    theParMAX = MAX(theParMIN, theParMAX).
+// ------------------------------------------------------------------
+inline void MinMax(Standard_Integer& theParMIN, Standard_Integer& theParMAX)
+{
+  if(theParMIN > theParMAX)
+  {
+    const Standard_Integer aux = theParMAX;
+    theParMAX = theParMIN;
+    theParMIN = aux;
+  }
+}
+
 // ------------------------------------------------------------------
 // Modulus : Returns the remainder of division between two integers
 // ------------------------------------------------------------------
index 81a4504f049731f32325052bcc5f059cde6bbfe1..31e9baa17cedf4ddf8e1c8865ea45b89b1231a28 100755 (executable)
@@ -308,3 +308,14 @@ Standard_Real     Sqrt (const Standard_Real Value)
  return sqrt(Value); 
 }
 
+//=======================================================================
+//function :  RealMod
+//purpose  :  Returns the remainder of theDivident on theDivisor.
+//            Quotient is always integer number.
+//=======================================================================
+Standard_Real RealMod(const Standard_Real theDivident,
+                                    const Standard_Real theDivisor)
+{
+  const Standard_Integer n = RealToInt(theDivident/theDivisor);
+  return theDivident - n * theDivisor;
+}
index f1cf7f4b01a0bbbf115177eb2f33b8b133ce4231..da638c17cd03e32946dd9def455267391e4eae61 100755 (executable)
@@ -63,6 +63,8 @@ __Standard_API Standard_Real    ATanh       (const Standard_Real );
 __Standard_API Standard_Real    ACosh       (const Standard_Real );
 __Standard_API Standard_Real    Log         (const Standard_Real );
 __Standard_API Standard_Real    Sqrt        (const Standard_Real );
+__Standard_API Standard_Real    RealMod     (const Standard_Real theDivident,
+                                             const Standard_Real theDivisor);
 
 //class  Standard_OStream;
 //void             ShallowDump(const Standard_Real, Standard_OStream& );
@@ -265,6 +267,21 @@ inline Standard_Real     Min (const Standard_Real Val1,
   return Val1 <= Val2 ? Val1 : Val2;
 }
 
+// ------------------------------------------------------------------
+// MinMax : Replaces  theParMIN = MIN(theParMIN, theParMAX),
+//                    theParMAX = MAX(theParMIN, theParMAX).
+// ------------------------------------------------------------------
+inline void MinMax(Standard_Real& theParMIN, Standard_Real& theParMAX)
+{
+  if(theParMIN > theParMAX)
+  {
+    const Standard_Real aux = theParMAX;
+    theParMAX = theParMIN;
+    theParMIN = aux;
+  }
+}
+
+
 //-------------------------------------------------------------------
 // Pow : Returns a real to a given power
 //-------------------------------------------------------------------
index 29465333b5e58381efe6ee17bf002568ced541fa..7082a3ede93f7fa0cd5233e59319955b02aff15b 100644 (file)
@@ -4,7 +4,14 @@
 ## Comment : from pro5545
 ## ====================================
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFI_pro5545.rle] a
+
+sfixpcu a a -f
+checkshape a
+
 encoderegularity a 1
 tscale a 0 0 0 1000
 nexplode a e
index 0fa3afbac1a09109f241e76b0126205d249f8331..e31c1a7fcc162d89be79c4d28045946af2e98e9f 100644 (file)
@@ -4,7 +4,14 @@
 ## Comment : from pro6944
 ## ====================================
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFI_pro6944.rle] a
+
+sfixpcu a a -f
+checkshape a
+
 tscale a 0 0 0 1000
 nexplode a e
 blend result a 12 a_16 12 a_15 12 a_17
index ab6c53c45fe4db35e24199805635739b3e0b354e..2dafed2dc0d14f5011e48b759cc75342692b5079 100644 (file)
@@ -4,7 +4,14 @@
 ## Comment : from ?
 ## ====================================
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file cfi900H2.rle] a
+
+sfixpcu a a -f
+checkshape a
+
 nexplode a e
 blend result a 1 a_66
 
index 73430d6ec5e0de119cd94a19edfcb0845f25ef12..135ed98156b81cc8e0096df009ac1f2ec2600bac 100644 (file)
@@ -4,7 +4,14 @@
 ## Comment : from fra60610
 ## ====================================
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFI_fra60610.rle] a
+
+sfixpcu a a -f
+checkshape a
+
 nexplode a e
 blend result a 2 a_69
 
index 238ff3fa5020c3697c9c1f656e378283aaab68c6..c0c12bbd6243f020b5dd38f963aadb34504d88b4 100644 (file)
@@ -4,7 +4,14 @@
 ## Comment : from
 ## ====================================
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFI_cfi90fjc.rle] a
+
+sfixpcu a a -f
+checkshape a
+
 nexplode a e
 blend result a 5 a_5 5 a_13 5 a_28
 
index b8e5992256ca329b7513ec822c7b242c57e34892..956c3444926777ece904c54eabf80ce41c5d9937 100644 (file)
@@ -4,7 +4,14 @@
 ## Comment : from pro8783
 ## ====================================
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFI_pro8783.rle] a
+
+sfixpcu a a -f
+checkshape a
+
 explode a e
 mkevol result a
 updatevol a_4 0 15 0.5 9 1 5
index ed3742eb35cd127ea4e2b50384f17cfec9fe90a1..9d209822b08084d03de45fe1c9c2298169ee351f 100644 (file)
@@ -4,7 +4,14 @@
 ## Comment : from pro8792
 ## ====================================
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFI_pro8792.rle] a
+
+sfixpcu a a -f
+checkshape a
+
 explode a e
 mkevol result a
 updatevol a_20 0 15 0.5 20 1 5
index cfa9cdcf76011891085f6c09e4eb9bafacacc273..27e8ee9f27c3235e7ada53dedeed651a10378e1a 100644 (file)
@@ -4,7 +4,14 @@
 ## Comment : from pro11850
 ## ====================================
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFI_pro11850.rle] a
+
+sfixpcu a a -f
+checkshape a
+
 explode a e
 blend result a 3 a_22
 
index 019310ec01006867ee18fb4b1169514e08b05d00..adb55b0ad7e1ae504445bfa68e9f2d3e662bc604 100644 (file)
@@ -4,7 +4,14 @@
 ## Comment : from pro10117
 ## ====================================
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFI_pro10117.rle] a
+
+sfixpcu a a -f
+checkshape a
+
 explode a e
 blend result a 2 a_128 1 a_10
 
index e2252083a7b6ff6ad236eb77b0ab2e5026da26ed..8d1fdb15e586d3ea2396d5d73a461c0d9464f32d 100644 (file)
@@ -1,12 +1,19 @@
 # Original bug : cts21453
 # Date : 15sept98
 
+# for "sfixpcu" command
+pload XSDRAW
 
 restore [locate_data_file CTO900_cts21453a.rle] a
 restore [locate_data_file CTO900_cts21453b.rle] b
 
-bcommon result a b
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
 
+bcommon result a b
 
 
 set square 16681.4
index 77119f61117498e0a9fb5562939e46c83f469889..c618893c612980749f119c7fdc04a032ce1b7ecd 100644 (file)
@@ -1,7 +1,18 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CIN900_cts20hlh.rle] a
 restore [locate_data_file CIN900_cts20hli.rle] b
 restore [locate_data_file CIN900_cts20hlj.rle] c
 
+sfixpcu a a -f
+sfixpcu b b -f
+sfixpcu c c -f
+
+checkshape a
+checkshape b
+checkshape c
+
 bcut rab a b
 
 bcut result rab c
index a4df46bb6519e3bf2984f61c75d4626186bca1b2..2a19b9631d533a141ed84b4cf4689f06981ed12f 100644 (file)
@@ -1,6 +1,15 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CIN900_cts21hlq.rle] a
 restore [locate_data_file CIN900_cts21hlr.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bcut result a b
 
 set square 330507
index a4fcf33a777f3841df27075ff11411b8e83be77e..bb50074c9c3316fae1678111c4a4f1d171ff5c0d 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : ger60043
 # Date : 11mar98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ger60043-part.rle] part 
 restore [locate_data_file CTO900_ger60043-tool.rle] tool
 
+sfixpcu part part -f
+sfixpcu tool tool -f
+
+checkshape part
+checkshape tool
+
 bcut result part tool
 
 
index bc2857ace5e8ca853a7b5ff353d7608567212d16..822d97374ea3dd3b170bec8c3b93da53c8b90a24 100644 (file)
@@ -1,9 +1,16 @@
 # Original bug : ger60065
 # Date : 11mar98
 
+# for "sfixpcu" command
+pload XSDRAW
+
+
 restore [locate_data_file CTO900_ger60065-part.rle] part
 restore [locate_data_file CTO900_ger60065-tool.rle] tool
 
+sfixpcu part part -f
+sfixpcu tool tool -f
+
 bcut result part tool
 
 
index 6853474ee428a4b3603996c33423cc12b9349b36..d88186d1b8d3f6e1dfc126b0dd0df9d13c9c565a 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : jap60038
 # Date : 11mar98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_jap60038-part.rle] part
 restore [locate_data_file jap60038-tool.rle] tool
 
+sfixpcu part part -f
+sfixpcu tool tool -f
+
+checkshape part
+checkshape tool
+
 bcut result part tool
 
 set square 173510
index 46ef3966849b0db01e936dcd731f55c2e97a49d0..0134c6ba382e06b86c9a89eb8d84af8af9f148e0 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : pro11828
 # Date : 
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_pro11828-part.rle] part
 restore [locate_data_file CTO900_pro11828-tool.rle] tool
 
+sfixpcu part part -f
+sfixpcu tool tool -f
+
+checkshape part
+checkshape tool
+
 bcut result part tool
 
 
index 61a1ac95bb86768e4d0c055b7e771db8d8e09b52..39de4ef2c12d5cf6e77ebb5b0446ca3586bcec90 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : fra60656
 # Date : 23mar98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_fra60656-part.rle] part
 restore [locate_data_file CTO900_fra60656-tool.rle] tool
 
+sfixpcu part part -f
+sfixpcu tool tool -f
+
+checkshape part
+checkshape tool
+
 bcut result part tool
 
 set square 1.21042e+06
index 08b9141cb19878ae6b90f117cf205685dab03013..60429bb1ce2d5c3ff6fbaa49cc2c0f751d48a929 100644 (file)
@@ -1,9 +1,15 @@
 # Original bug : pro12663
 # Date : 24mar98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_pro12663-part.rle] part
 restore [locate_data_file CTO900_pro12663-tool.rle] tool
 
+sfixpcu part part -f
+sfixpcu tool tool -f
+
 bcut result part tool
 
 
index 87a283cafaf8e08600a644ba388dc6db4565a820..36f54038c77ed3aa93e7f9fd81abd54f963ce2bf 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : cts19305
 # Date : 30mar98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts19305-part.rle] part
 restore [locate_data_file CTO900_cts19305-tool.rle] tool
 
+sfixpcu part part -f
+sfixpcu tool tool -f
+
+checkshape part
+checkshape tool
+
 bcut result part tool
 
 
index 5e88d2738cf7252d602519ac53455e36108a6881..60cdfc6bb56ed3071d8429cde8e4fb8fbcd5c6cb 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : fra60810
 # Date : 30mar98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_fra60810-part.rle] part
 restore [locate_data_file CTO900_fra60810-tool.rle] tool
 
+sfixpcu part part -f
+sfixpcu tool tool -f
+
+checkshape part
+checkshape tool
+
 bcut result part tool
 
 
index 3b3ae1392ae668ad5b8a993d98a0f44c7306813c..c526e03aff1155d88b987d9665b6fef853f0c590 100644 (file)
@@ -1,11 +1,20 @@
 # Original bug : ger60598
 # Date : 18Sept98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ger60598c.rle] base
 restore [locate_data_file ger60598d.rle] prism
 
+sfixpcu base  base -f
+sfixpcu prism prism -f
+
 fsameparameter base
 
+checkshape base
+checkshape prism
+
 bcut result prism base
 
 set square 16596
index 13233647fcb9505de8d007e8d79030163f765865..d74661a6d368261de259216f0773331015a7f7a3 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : cts20374
 # Date : 24mar98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts20374-part.rle] part
 restore [locate_data_file cts20374-tool.rle] tool
 
+sfixpcu part part -f
+sfixpcu tool tool -f
+
+checkshape part
+checkshape tool
+
 bcut result part tool
 
 
index b574030360befecf0e15a49bbad1c5cf8cdf722d..1b21d9a7322fe827590c8bf7e7ffdae76a5c8efb 100644 (file)
@@ -1,14 +1,27 @@
 # Original bug : cts20736
 # Date : 28Sept97
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts20736a.rle] part
 restore [locate_data_file cts20736b.rle] aface
 
+sfixpcu part part -f
+sfixpcu aface aface -f
+
+checkshape aface
+
 btolx part
 btolx aface
 
+checkshape aface
+
 prism tool aface 0 0 -12
 
+checkshape part
+checkshape tool
+
 bcut result part tool
 
 set square 36087.8
index 4dcc916f7580c61b61fbe1bdcdac3cce1f6037c1..155a66dc74e5a008ea3fdc1ed51ba45baf1d3718 100644 (file)
@@ -1,8 +1,17 @@
 # Original bug : cts20150
 # Date : 13Mai98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO901_cts20150_base.rle]  base
-restore [locate_data_file CTO901_cts20150_outil.rle]  outil
+restore [locate_data_file CTO901_cts20150_outil.rle] outil
+
+sfixpcu base base -f
+sfixpcu outil outil -f
+
+checkshape base
+checkshape outil
 
 bcut result base outil
 
index 08ef17f41ddd43d29514cad97c12cc794bc68202..0c7f2f622aba7f16d7480c5005494854769d4567 100644 (file)
@@ -2,9 +2,18 @@
 # Date : 13Mai98
 # A6.gif
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO902_cts20455-part.rle] part
 restore [locate_data_file CTO902_cts20455-tool.rle] tool
 
+sfixpcu part part -f
+sfixpcu tool tool -f
+
+checkshape part
+checkshape tool
+
 bcut result part tool
 
 
index 568e9ecd6ab1b28321e23259ee41cd9740ae8a04..e3777374e771b70dd77a1f5e660de18a12feebcc 100644 (file)
@@ -2,9 +2,18 @@
 # Date : 13Mai98
 # A7.gif
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO902_cts20459-part.rle] part
 restore [locate_data_file CTO902_cts20459-tool.rle] tool
 
+sfixpcu part part -f
+sfixpcu tool tool -f
+
+checkshape part
+checkshape tool
+
 bcut result part tool
 
 
index a838cff2f3e8aca64de5fbafbaae33552d02262f..6306ca6da44c201d912df92b80536cdfb0e62c40 100644 (file)
@@ -2,9 +2,18 @@
 # Date : 13Mai98
 # B8.gif
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO902_cts20503-part.rle] part
 restore [locate_data_file CTO902_cts20503-tool.rle] tool
 
+sfixpcu part part -f
+sfixpcu tool tool -f
+
+checkshape part
+checkshape tool
+
 bcut result part tool
 
 
index 8020468fc0f80be9bd429915c75e580a0908dec2..6db36b5345dc5f8dd0413d711d4987284e1a6228 100644 (file)
@@ -2,9 +2,18 @@
 # Date : 13Mai98
 # C7
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO902_cts20498-part.rle] part
 restore [locate_data_file CTO902_cts20498-tool.rle] tool
 
+sfixpcu part part -f
+sfixpcu tool tool -f
+
+checkshape part
+checkshape tool
+
 bcut result part tool
 
 
index e1b89c01f4d4519be571dab31928901f7a7deccb..dd5637b8947cdea63594eb52de4af0d24b8a8565 100644 (file)
@@ -2,9 +2,18 @@
 # Date : 13Mai98
 # C8
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO902_cts20489-part.rle] part
 restore [locate_data_file CTO902_cts20489-tool.rle] tool
 
+sfixpcu part part -f
+sfixpcu tool tool -f
+
+checkshape part
+checkshape tool
+
 bcut result part tool
 
 
index 2dc0cca5c21b6e803e7ad8703b213ba284f1da20..5eb1a62b91ca890094f933941a6c82391775ca2e 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : cts20551
 # Date : 4June98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO902_cts20551b.rle] a
 restore [locate_data_file cts20551-tool.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bcut result a b
 
 set square 430968
index 9292dd8d06ac1a4b2569668869b18ed0f2e7a29b..5aeb3f1229a36eca73a7011ebb27c1a01612a018 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : pro13495
 # Date : 4June98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_pro13495a.rle] a 
 restore [locate_data_file pro13495b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bcut result a b
 
 set square 63800.8
index d3c36f8e4d517ca79e1add3f0de99289f5659b46..2ed1c5de34d9096cca2cb4ccb889c9172eb0c2d7 100644 (file)
@@ -1,9 +1,16 @@
 # Original bug : fra61199
 # Date : 29June98
+
+# for "sfixpcu" command
+pload XSDRAW
+
 cpulimit 3000
 restore [locate_data_file CTO904_fra61199a.rle] a 
 restore [locate_data_file CTO904_fra61199b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
 bcut result a b
 
 set square 1.21952e+06
index f136024d148cae79bfe0a0288d37f1a451fb4332..1cfdadbd0667f18b333afcec5d9896e51ca8bab6 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : cts21200
 # Date : 16July98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file cts21200a.rle] a 
 restore [locate_data_file cts21200b.rle] skface
 
+sfixpcu a a -f
+sfixpcu skface skface -f
+
+checkshape a
+checkshape skface
+
 prism b skface 0 0 -230
 
 bcut result a b
index e6edc7c00991ea2ae62a07830abec787df414690..9692c16406108d5d2725d86aade2de9f5f0f14c6 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : cts21208
 # Date : 16July98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts21208a.rle] a 
 restore [locate_data_file cts21208b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bcut result a b
 
 set square 1383.02
index 459784b7a6cb17fb6e9052bb5c8af1a4b89eca9e..111131a82872312862c3912fbc021c1bb9b51903 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : cts21210
 # Date : 16July98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts21210a.rle] a 
 restore [locate_data_file cts21210b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bcut result a b
 
 set square 1660.64
index 806d2cbefb389790b535f5d5e8f02b4fa27e1f00..1c6ede7b1d9b9454e014a497646c68cc7b7d40e4 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : hkg60150
 # Date : 16July98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_hkg60150a.rle] a 
 restore [locate_data_file CTO904_hkg60150b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bcut result a b
 
 set square 2167.4
index a31f3ce9edabbae73df7b716d656b301a52a3ffb..0765436fa8e57fb5eb3580e4f1e5d17ea9b6c7ee 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : hkg60156
 # Date : 16July98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_hkg60156a.rle] a 
 restore [locate_data_file CTO904_hkg60156b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bcut result a b
 
 set square 1927.45
index 2b084db9889ba889032d0f6f869284237bf24b51..be69d29da26175ec6300eafc553aff9ddb0bce57 100644 (file)
@@ -1,7 +1,14 @@
 ## cts20461
 puts "TODO #22911 ALL: Error : The area of the resulting shape is"
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file cts20461.rle] a
+
+sfixpcu a a -f
+checkshape a
+
 nexplode a f
 mksurface surf a_26
 nexplode a_26 e
index f16415b8e6951e3058727e3c11a1df9b070da8fe..99569f0913df99b317cf574efefafe0ba410977b 100644 (file)
@@ -1,8 +1,17 @@
 ## CTS19305
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts19305-part.rle] a
 restore [locate_data_file CTO900_cts19305-tool.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bcut result a b
 
 set square 76632.9
index b03073734e7618bae4cdceeb744daaa7a5b7ada9..8434c79d28f85272d489e160869232df274be3c0 100644 (file)
@@ -1,7 +1,14 @@
 # cts21347
+
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO909_part_1.brep] a
 restore [locate_data_file CTO909_tool_2.brep] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
 bcut result a b
 
 set square 1.64215e+06
index cee2555a32d605c87041dcb10e154c6c21102478..f33380b2b0e87e9fdf268f10e966e0d47dc0467a 100644 (file)
@@ -2,9 +2,18 @@ puts "ID260084"
 puts "Cut"
 puts ""
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file id260084a.rle] a
 restore [locate_data_file id260084b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 # Cut
 prism tool b 0 0 10
 bcut result a tool
index b4c845721809494fb2300f3452c27193bca13d92..ec4b774b2fb77f839d64e4853ca5db23692c1964 100644 (file)
@@ -1,6 +1,9 @@
 # Original bug : pro7637 (#3 with restore from Designer shape)
 # Date : 16apr97
 
+# for "sfixpcu" command
+pload XSDRAW
+
 dset SCALE 100
 
 ## restore the Prismed oblong created in Designer K1-2 (size 200 mm)
@@ -11,6 +14,12 @@ tscale p1 0 0 0 1*SCALE
 restore [locate_data_file CTO900_pro7637c_box_dsg.rle] p2
 tscale p2 0 0 0 1*SCALE
 
+sfixpcu p1 p1 -f
+sfixpcu p2 p2 -f
+
+checkshape p1
+checkshape p2
+
 bfuse result p2 p1
 
 set square 1.85425e+09
index b27e30afae81b667e3ef28f06d1a86380f23b7e0..83b5ebea85625760f34ca0537d11e9fa3f909b6e 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : cts16184
 # Date : 11mar98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts16184a.rle] a
 restore [locate_data_file cts16184b.brep] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bfuse result a b
 
 
index dc9b889f5fa5e0924e7fe2f60a07379feaae332d..bc5231ebb7e36d3d590850e814b20f1a3c1a329c 100644 (file)
@@ -3,11 +3,21 @@
 
 puts "TODO #22911 Mandriva2010: Faulty shapes in variables faulty_1 to faulty_2"
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file ger60054a.rle] a
 restore [locate_data_file CTO900_ger60054b.rle] b
+
+sfixpcu a a -f
+sfixpcu b b -f
+
 fsameparameter a
 fsameparameter b
 
+checkshape a
+checkshape b
+
 bfuse result a b
 
 set square 22058
index e196be47c9341fe970da028d4fc485d8eb4a7811..1758e2f159a7d1e6c59ea4c0df5b2561542cbfd2 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : ksi0014
 # Date : 11mar98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ksi0014a.rle] a
 restore [locate_data_file ksi0014b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bfuse result a b
 
 
index e19aa8b76999cfbc801c1f6b122194ec71879634..f6efa8a22afc094c616bcaa8b645ca81f69ef51c 100644 (file)
@@ -1,10 +1,19 @@
 # Original bug : cts60005
 # Date : 19mar98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file cts60005a.rle] a
 fsameparameter a
 restore [locate_data_file CTO900_cts60005b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bfuse result a b
 
 
index 585ada82c17630412731e88da78f98b72b13da0c..eb97611d51a33833fddf22e1d9040730ec86452d 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : pro8934
 # Date : 19mar98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_pro8934a.rle] a
 restore [locate_data_file CTO900_pro8934b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bfuse result a b
 
 set square 20480.4
index 9822946a3c7084f94eedb54a8b0c8be17708056e..b51279fd1224e66060bd1d343dbe2f207870dfab 100644 (file)
@@ -1,9 +1,16 @@
 # Original bug : pro10505   
 # Date : 20mar98
 
+# for "sfixpcu" command
+pload XSDRAW
+
+
 restore [locate_data_file CTO900_pro10505a.rle] a
 restore [locate_data_file CTO900_pro10505b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
 bfuse result a b
 
 set square 302396
index aca5f4db10634cb4fad484cf86de6726ec5eb66c..6e1172732ec7e3693f0fedc3f6d794d3de8f13c4 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : ger60239
 # Date : 23mar98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ger60239a.rle] a
 restore [locate_data_file CTO900_ger60239b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bfuse result a b
 
 set square 3468.6
index 20afba95046c7247c05d174edf53f9448c05ed43..e887218a68af5d6343b925878e8cfaa2197b0bc2 100644 (file)
@@ -1,8 +1,18 @@
 # Original bug : cts21180
 # Date : 21 Sept 98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts21180c.rle] part
 restore [locate_data_file CTO900_cts21180d.rle] tool
+
+sfixpcu part part -f
+sfixpcu tool tool -f
+
+checkshape part
+checkshape tool
+
 updatetolerance tool 1
 
 bfuse result part tool
index b2e6592c2da8b321b5e0cf0084e3ac7daa4b60c2..2cc953a4b298bb5dfefceaf95abd931e7b0cd3d9 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : cts20171
 # Date : 13Mai98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO901_cts20171_base.rle]  base
 restore [locate_data_file CTO901_cts20171_outil.rle]  outil
 
+sfixpcu base base -f
+sfixpcu outil outil -f
+
+checkshape base
+checkshape outil
+
 bfuse result base outil
 
 set square 47886.5
index 1b6bac80d3422c01b003bdce99d9738fd9ae4cba..7d3db9f434c8b2c03aa4a06fa9a4ebfe14295e16 100644 (file)
@@ -2,9 +2,17 @@
 # Date : 13Mai98
 # A1.gi
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO902_cts20452a.rle] a
 restore [locate_data_file CTO902_cts20452b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
 
 bfuse result a b
 
index 52ac576cac6506705f2a2005a8b3c981f10043c3..74b9bde3169c277783594c7433e283dad82d05b4 100644 (file)
@@ -2,9 +2,18 @@
 # Date : 13Mai98
 # D2
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file cts20551-tool.rle] a
 restore [locate_data_file CTO902_cts20551b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bfuse result a b
 
 
index c9163babbfaa7111710aa7d565ebfaa0eeff61c6..7a7b0f4d27b282ab204ede4191919e0acf05b445 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : pro12956
 # Date : 18Mai98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file pro12956a.rle] a
 restore [locate_data_file CTO904_pro12956b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bfuse result a b
 
 
index 22fbc0b93859226b62abc38e18b8b856e9371cfe..8e265b495b16a0e14224307835d074110f2e98d3 100644 (file)
@@ -1,8 +1,18 @@
 # Original bug : fra60275
 # Date : 4June98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_fra60275a.rle] s
 restore [locate_data_file fra60275b.rle] c
+
+sfixpcu s s -f
+sfixpcu c c -f
+
+checkshape s
+checkshape c
+
 tcopy  c w
 mkplane f w
 
index c39267e3d23875b3710ef7c19f1e8bf84fe434fd..82f89a9d12cb0225ffe95324b5a7c43e60a3d64d 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : pro13494
 # Date : 4June98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file pro13494a.rle] a 
 restore [locate_data_file pro13494b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 # pkv f
 explode a so
 #bfuse result a b
index befaf9fd260e9c7b1464b5f0c49c8a231af3769a..74fed08459f740f050c59665b225ecbd58c004bf 100644 (file)
@@ -1,10 +1,19 @@
 # Original bug : cts20974
 # Date : 12June98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts20974a.rle] a 
 fsameparameter a
 restore [locate_data_file CTO904_cts20974b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bfuse result a b
 
 set square 3362.81
index f5c850f966dba76730b20c66bd36a16bd495ccb4..8009acb331d6be92a7dabc29e3e4764f7b787acb 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : pro13555
 # Date : 12June98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_pro13555a.rle] a 
 restore [locate_data_file pro13555b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bfuse result a b
 
 set square 3479.01
index 242408454d6be0cb5390ab02ef042b26d21f2864..fb87aee569b1354c27b756e054eee590fd438c4d 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : cts21044
 # Date : 24June98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts21453a.rle] a 
 restore [locate_data_file CTO900_cts21453b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bfuse result a b
 
 set square 163507
index 2bc25eb781eaab20fa309cbb1ea026aa6267cac3..0ca5fb63df9a8b77b51999023ffc87174492e373 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : cts20907
 # Date : 24June98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts20907a.rle] a 
 restore [locate_data_file cts20907b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bfuse result a b
 
 set square 486.413
index 0ff80a753a4ea60db34e4a4b64c1dfda7927c966..f03d97a2f9b0cb2758ce22b0933574d5dddcf7aa 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : cts21124
 # Date : 24June98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts21124a.rle] a 
 restore [locate_data_file cts21124b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bfuse result a b
 
 set square 48061.7
index 6cc1ae40543cf8740c0973af1e46952204f51c29..337e4249adf9c270671320b3ecda8f99ea9b2b67 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : pro14893
 # Date : 16July98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_pro14893a.rle] a 
 restore [locate_data_file pro14893b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bfuse result a b
 
 set square 22717.7
index b467df10baeb467ea02a8cc6ac7a64e426e9311d..1a10369fb2dc026d9c3a2388674f7304e206e72d 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : cts20960
 # Date : 16July98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts20960a.rle] a 
 restore [locate_data_file cts20960b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bfuse result a b
 
 set square 38854
index 0133dd471d4c71d92b17c80380b4924e22316bc3..2fc397168345ceb011586a68eae9cdb96c67db5f 100644 (file)
@@ -1,11 +1,22 @@
 # Original bug : pro14892
 # Date : 16July98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file pro14892a.rle] a 
 restore [locate_data_file pro14892b.rle] aface
 
+sfixpcu a a -f
+sfixpcu aface aface -f
+
+checkshape a
+checkshape aface
+
 prism b aface 0 0 -50
 
+checkshape b
+
 bfuse result a b
 
 set square 601864
index b56136da089b311f3136029dd5e0fe5fd7b8073d..eec1e2983235d51acb35806f003ae743cb404be6 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : cts21364
 # Date : 26Aout98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts21364a.rle] a 
 restore [locate_data_file CTO904_cts21364b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bfuse result a b
 
 set square 46682.1
index 43a215c04b6dd741f293baeeeca7925ae4502bb1..80315d2e1abb3680a8367c325aeb16808784d8a7 100644 (file)
@@ -1,8 +1,17 @@
 #ger60239
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ger60239a.rle] c
 restore [locate_data_file CTO900_ger60239b.rle] d
 
+sfixpcu c c -f
+sfixpcu d d -f
+
+checkshape c
+checkshape d
+
 bfuse result c d
 
 set square 3468.6
index f4f5832c75eee9313fc6c2bcf296e52078587b82..ff22ddc6004bfe33c2d8a3a6210f10a316933dfd 100644 (file)
@@ -2,10 +2,18 @@ puts "ITA60531"
 puts "Fuse"
 puts ""
 
+# for "sfixpcu" command
+pload XSDRAW
 
 restore [locate_data_file ita60531a.rle] b
 restore [locate_data_file ita60531b.rle] f
 
+sfixpcu b b -f
+sfixpcu f f -f
+
+checkshape b
+checkshape f
+
 # Operation booleenne -> shape pas valide
 prism tool f 0 0 1
 
index 67e3607f13fedc6198df9baef1378d83487eecac..dd7a9b2d7be49d0002a0de92551e575ba0214c53 100644 (file)
@@ -3,9 +3,18 @@ puts "PRO16252"
 puts "Fuse"
 puts ""
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file pro16252a.brep] a
 restore [locate_data_file pro16252b.brep] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 fsameparameter b
 maxtolerance a
 maxtolerance b
index 17d0d0c431ee9c644608247a88c31113ed63a7de..67c54f209bdc952e18d2eeda8e832bf5681dd53b 100644 (file)
@@ -3,9 +3,19 @@ puts "PRO16261"
 puts "Fuse"
 puts ""
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file pro16261-1.brep] s
 restore [locate_data_file pro16261-2.brep] t
 
+sfixpcu s s -f
+sfixpcu t t -f
+
+checkshape s
+checkshape t
+
+
 maxtolerance s
 #face tangente
 
index cf50989098eb89dd143b124c76b92b9696dbfbfd..bb68894265b7480425d54bd3672260c0174a52bf 100644 (file)
@@ -2,9 +2,15 @@ puts "PRO16769"
 puts "Fuse"
 puts ""
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE900_pro16gff.rle] base
 restore [locate_data_file pro16769b.rle] tool
 
+sfixpcu base base -f
+sfixpcu tool tool -f
+
 bfuse result base tool
 fsameparameter result
 
index f0cb078c9ee69d904d890196fd57574df5d446a4..6c79ef2561be731ce08d6fadac90af577f203539 100644 (file)
@@ -1,6 +1,13 @@
 puts "TODO #22911 ALL: Error : The area of the resulting shape is"
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC228.brep] sh
+
+sfixpcu sh sh -f
+checkshape sh
+
 explode sh
 
 bop sh_1 sh_2
index 46c9c167ce87dbce6912935de797e7eed429f9a5..f2b482deafb4dadea65f3decf2ff288bc7fd68b6 100644 (file)
@@ -1,6 +1,13 @@
 puts "TODO #22911 ALL: Error : The area of the resulting shape is"
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC228.brep] sh
+
+sfixpcu sh sh -f
+checkshape sh
+
 explode sh
 
 bop sh_2 sh_1
index ce5c9048ed0731f29f67d24aa8f5326d2f33e258..b9be514198e9a890f21fc180e7c241cb9819e78b 100644 (file)
@@ -1,4 +1,12 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC337.brep] sh
+
+sfixpcu sh sh -f
+fixshape sh sh 
+checkshape sh
+
 explode sh
 
 bop sh_1 sh_2
index 043cd81c1126169d8d9124508b9baccad69dd284..3342984bfd389731da26b65e45783054be7f4eca 100644 (file)
@@ -1,4 +1,12 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC337.brep] sh
+
+sfixpcu sh sh -f
+fixshape sh sh 
+checkshape sh
+
 explode sh
 
 bop sh_2 sh_1
index 3e696b1bada25fe720fefe0343d7c2eefdc4f994..145fa225bce3fd44f814ffc5f305471148688a28 100644 (file)
@@ -1,6 +1,13 @@
 puts "TODO #22911 ALL: Error : The bopcut cannot be built."
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC228.brep] sh
+
+sfixpcu sh sh -f
+checkshape sh
+
 explode sh
 
 bop sh_1 sh_2
index 9ebb2dad97faa1c161effcdcc96b66cb063d64b7..a5891be9f961076e52ea3976907fa235db7d30a8 100644 (file)
@@ -1,6 +1,13 @@
 puts "TODO #22911 ALL: Error : The bopcut is not valid"
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC228.brep] sh
+
+sfixpcu sh sh -f
+checkshape sh
+
 explode sh
 
 bop sh_2 sh_1
index 209cd4e332109dbb8c1220104d70e1140baefb86..bdfeab0fd051d8d43559229caaf5f7649f42a5b6 100644 (file)
@@ -1,4 +1,11 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC337.brep] sh
+sfixpcu sh sh -f
+fixshape sh sh 
+checkshape sh
+
 explode sh
 
 bop sh_1 sh_2
index 1b8672acf4c99e7ff32dafcb97b60960463dbd17..01cc61bec8bd309c6e171f25a8d791f10c948449 100644 (file)
@@ -1,4 +1,12 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC337.brep] sh
+
+sfixpcu sh sh -f
+fixshape sh sh 
+checkshape sh
+
 explode sh
 
 bop sh_2 sh_1
index 750f5d706f33c197f84dac7e96c6dafe6878d303..4bee334802955d5cf433e59d76803f3cea2c6894 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : pro13075
 # Date : 19Mai98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_pro13075a.rle] a
 restore [locate_data_file CTO904_pro13075b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bop a b 
 bopcut result
 
index 0f86fa6445c91a9366155d6d11218c6c1e35e1e4..f40a1134c6cb111ad38d00e27040d1ce2dec6e5b 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : pro13495
 # Date : 19Mai98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_pro13495a.rle] a
 restore [locate_data_file pro13495b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bop a b
 bopcut result
 
index 7d28456e640c54596df38ba5f8acb9bb98e3060e..1cca615ab66b364631fe0051ea91e4453f60b924 100644 (file)
@@ -1,6 +1,13 @@
 puts "TODO #22911 ALL: Error : The bopfuse cannot be built."
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC228.brep] sh
+
+sfixpcu sh sh -f
+checkshape sh
+
 explode sh
 
 bop sh_1 sh_2
index 54c0cf4da43d79ce01ec1f196caaa7b8a9a8c918..cf0dddd681ddac8e5216213919b3cfb647fd60f3 100644 (file)
@@ -1,6 +1,13 @@
 puts "TODO #22911 ALL: Error : The bopfuse cannot be built."
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC228.brep] sh
+
+sfixpcu sh sh -f
+checkshape sh
+
 explode sh
 
 bop sh_2 sh_1
index 5cbc7761125bab78d9c399fd3318cca3e62fd6b7..b45954583321d7916a9fe8830b91a11814d98616 100644 (file)
@@ -1,4 +1,12 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC337.brep] sh
+
+sfixpcu sh sh -f
+fixshape sh sh 
+checkshape sh
+
 explode sh
 
 bop sh_1 sh_2
index 35b1ff447086419103ab7634d5b4cfc848bcacf5..986158860e2e657d721859e980ef7d50a1a01960 100644 (file)
@@ -1,4 +1,12 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC337.brep] sh
+
+sfixpcu sh sh -f
+fixshape sh sh 
+checkshape sh
+
 explode sh
 
 bop sh_2 sh_1
index d876991df16d8483387d41112c559c03bf6bd351..1d865e4ad1d14764bfb3620011042bf8770cc22a 100644 (file)
@@ -1,8 +1,18 @@
 # Original bug : fra60275
 # Date : 19Mai98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_fra60275a.rle] a
 restore [locate_data_file fra60275b.rle] b
+
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 tcopy  b w
 mkplane f w
 
index 2920983f19f8b776f75a0a0f5eeff13917f59d77..1a70be5b6a1d85f13800a343f4215369c6497b3b 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : cts20280
 # Date : 4June98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts20280a.rle] a
 restore [locate_data_file CTO904_cts20280b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bop a b 
 bopfuse result
 
index 86be9b147f7002ab4f9537fb0cfc5a078933c857..b53dd6d9182f3762530b25d600c3eed4fbbe4536 100644 (file)
@@ -1,8 +1,18 @@
 # Original bug : fra60275
 # Date : 19Mai98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_fra60275a.rle] a
 restore [locate_data_file fra60275b.rle] b
+
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 tcopy  b w
 mkplane f w
 
index 6827fbdbe788d476dbe634a3a40fd7d6ffc0380a..a289ce5be740894d24b1e8c5642140f05e642251 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : pro13075
 # Date : 19Mai98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_pro13075a.rle] a
 restore [locate_data_file CTO904_pro13075b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bop a b 
 bopsection result
 
index 2588e1a711f3e61eca76d16419943b0456f6452a..bcdb3f0a3a7a89e2c4d1def7f15817480ad90457 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : pro13495
 # Date : 19Mai98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_pro13495a.rle] a
 restore [locate_data_file pro13495b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bop a b
 bopsection result
 
index 0b39b5d9dcb86cf1eda008e22b2e3d9dbe56bee4..c4a19a997e0feed119499873fd55e70df4cdd582 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : cts20280
 # Date : 4June98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts20280a.rle] a
 restore [locate_data_file CTO904_cts20280b.rle] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bop a b 
 bopsection result
 
index 0b8fb047b9666f18b4bd5f13e719d9e487e3a9fd..cce464447e8eb40728c31c12787c21a8af18e55e 100644 (file)
@@ -1,5 +1,15 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CIN900_cts21hlq.rle] a
 restore [locate_data_file CIN900_cts21hlr.rle] b
+
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 bsection result a b
 
 set length 79.1327
index 35ea3451386b26956f2e5e53cf4a8f1243c860c4..6735ca22a8ad495e94ee11be97ca067614e72784 100755 (executable)
@@ -9,6 +9,7 @@ puts "========"
 restore [locate_data_file OCC208.brep] a 
 
 fixshape result a 0.01 0.01
+sfixpcu result result -f
 
 checkshape result
 set 2dviewer 0
index 906f3937789b34979589d06fd9632a68f755242d..6ea376adc79a5ef37b359b2d8384d723cc5165ba 100755 (executable)
@@ -3,9 +3,15 @@ puts "==========="
 puts "BUC60708"
 puts "==========="
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file buc60708a.brep] a 
+sfixpcu a a -f
 checkshape a
+
 restore [locate_data_file buc60708b.brep] b
+sfixpcu b b -f
 checkshape b
 
 bcommon result a b
index cad2dbf0427aab245381740d804d9c5d32e725d2..7e502b6530e386735f7ec87f978612ea8aa72ea2 100755 (executable)
@@ -4,9 +4,15 @@ puts "BUC60839"
 puts "============"
 puts ""                                                                                                                                                                        
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file BUC60839-1.brep] a 
+sfixpcu a a -f 
 checkshape a
+
 restore [locate_data_file BUC60839-2.brep] b
+sfixpcu b b -f 
 checkshape b
 
 puts "Starting fuse operation"
index 1824e6723fb35b594dbb2ae013961e439dca8bcc..d8f9affb12936f76e8ebb7bb83a7d15d20f0f453 100755 (executable)
@@ -6,9 +6,18 @@ puts ""
 # Any boolean operation is impossible between attached shapes
 #######################################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC17357-1.brep] b1
 restore [locate_data_file OCC17357-2.brep] b2
 
+sfixpcu b1 b1 -f
+sfixpcu b2 b2 -f
+
+checkshape b1
+checkshape b2
+
 bop b1 b2
 bopcommon result
 
index 7d49291e776776498230b18905f6eef6353817ab..670fa1153e0fae7567b22d846ffe17c706c481ec 100755 (executable)
@@ -6,9 +6,18 @@ puts ""
 # Any boolean operation is impossible between attached shapes
 #######################################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC17357-1.brep] b1
 restore [locate_data_file OCC17357-2.brep] b2
 
+sfixpcu b1 b1 -f
+sfixpcu b2 b2 -f
+
+checkshape b1
+checkshape b2
+
 bop b1 b2
 bopfuse result
 
index 3e7b43055b2eaea5caa046f778cde9a83cacc7de..6c8cb74299cceb71f3bad5d09f76dfac4b55102f 100755 (executable)
@@ -6,9 +6,18 @@ puts ""
 # Any boolean operation is impossible between attached shapes
 #######################################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC17357-1.brep] b1
 restore [locate_data_file OCC17357-2.brep] b2
 
+sfixpcu b1 b1 -f
+sfixpcu b2 b2 -f
+
+checkshape b1
+checkshape b2
+
 bop b1 b2
 bopcut result
 
index 2083ce5f33a2787b5de526129606436d76709d86..24d5d8b58b93004d0911666d3cf7ce07c8f2f6b0 100755 (executable)
@@ -6,9 +6,18 @@ puts ""
 # Any boolean operation is impossible between attached shapes
 #######################################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC17357-1.brep] b1
 restore [locate_data_file OCC17357-2.brep] b2
 
+sfixpcu b1 b1 -f
+sfixpcu b2 b2 -f
+
+checkshape b1
+checkshape b2
+
 bop b1 b2
 boptuc result
 
index 179c395dd0d4102f3ef0126fcd54a5680d43a2ba..c076b4935499b29e1494ea8cff4496a8dfd6d3aa 100755 (executable)
@@ -6,9 +6,18 @@ puts ""
 # Any boolean operation is impossible between attached shapes
 #######################################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC17357-1.brep] b1
 restore [locate_data_file OCC17357-2.brep] b2
 
+sfixpcu b1 b1 -f
+sfixpcu b2 b2 -f
+
+checkshape b1
+checkshape b2
+
 bop b1 b2
 bopsection result
 
index 4913814064cd1981e1c08ba101241046e7e9846d..bc148e33069e16678bf74804de78015e806d665a 100755 (executable)
@@ -8,12 +8,21 @@ puts ""
 
 set BugNumber OCC22557
 
+# for "sfixpcu" command
+pload XSDRAW
+
 puts "Load first shape ..."
 restore [locate_data_file bug22557_Bloc_racine_70deg.brep] b1 
 
 puts "Load second shape ..."
 restore [locate_data_file bug22557_PaveEntree.brep] b2 
 
+sfixpcu b1 b1 -f
+sfixpcu b2 b2 -f
+
+checkshape b1
+checkshape b2
+
 puts "Prepare boolean operation ..."
 bop b1 b2
 
index a3cf744931e0129425bd43c6abf4213f367c9cd2..e3e567b7fb4d8745c10ee3da3d44839e8e3df35f 100755 (executable)
@@ -8,8 +8,18 @@ puts ""
 
 set BugNumber OCC22770
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file 22770-tramp.brep] a 
 restore [locate_data_file 22770-trans.brep] b 
+
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 sewing result +t 0.01 a b +mint 0.01 -a
 
 set square 1.88469e+07
index 66c4e028737d9ca3a100b44ceac91a50ad4db598..c784760f8d03f689df719e1f53183ecf3be6f3f2 100755 (executable)
@@ -8,8 +8,18 @@ puts ""
 
 set BugNumber OCC22770
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file 22770-tramp.brep] a 
 restore [locate_data_file 22770-trans.brep] b 
+
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 sewing result +t 0.01 a b +mint 0.01 +s
 
 set square 1.88469e+07
index 1175d274f475f2b647a25bf79fa5b4d34d987e7f..6c47bfe4502a2bf135bc0bbb79a81f8d3a7fdc94 100755 (executable)
@@ -8,8 +8,18 @@ puts ""
 
 set BugNumber OCC22770
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file 22770-tramp.brep] a 
 restore [locate_data_file 22770-trans.brep] b 
+
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 sewing result a b -c
 
 set square 1.8847e+07
index a8a71313f97d2f34c51e54dc255cc0e862b0b31a..8397dfe2edcdca6e0ed48609ae5d973fac27e5d9 100755 (executable)
@@ -18,8 +18,18 @@ catch { pload XDE }
 # Open a transaction
 # NewCommand D
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file 22770-tramp.brep] a 
 restore [locate_data_file 22770-trans.brep] b 
+
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 sewing result a b +c
 
 set square 1.8847e+07
index 5adb15135536df16957d349822ced5df4aa3218c..aae9f8db43b72bee129818a300623318a2629979 100755 (executable)
@@ -8,8 +8,18 @@ puts ""
 
 set BugNumber OCC22770
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file 22770-tramp.brep] a 
 restore [locate_data_file 22770-trans.brep] b 
+
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 sewing result a b +c -f
 
 set square 1.8847e+07
index 6e18d39952fee8c4747d57f22d4c76156036befe..581ffff37504c1fad4c265c0e4bbc8151adcec46 100755 (executable)
@@ -18,8 +18,18 @@ catch { pload XDE }
 # Open a transaction
 # NewCommand D
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file 22770-tramp.brep] a 
 restore [locate_data_file 22770-trans.brep] b 
+
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 sewing result a b -p
 
 set square 1.8847e+07
index bc31bc4fb6249b3bba048ae98e5620e0fd42c4ff..367161c308fd0b119ee0145c82a6d76a4c0657e4 100755 (executable)
@@ -8,9 +8,18 @@ puts ""
 
 set BugNumber OCC22770
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file 22770-tramp.brep] a 
 restore [locate_data_file 22770-trans.brep] b 
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 sewing result 0.1 a b 
 
 set square 1.8847e+07
index 514f25b65ac485416aa6ca166ea69e1cfafdb01b..2dfda9e05a71434f797646103d64ad0d9e76a471 100755 (executable)
@@ -10,9 +10,18 @@ puts ""
 
 set BugNumber OCC22770
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file 22770-tramp.brep] a 
 restore [locate_data_file 22770-trans.brep] b 
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 sewing result 0.1 a b +mint 0.01 
 
 set square 1.88469e+07
index b598450d545164429369292f38e8f769eb7f2a8d..2cdb20a5f66a4d5cefc2b840bffadf894ed51b52 100755 (executable)
@@ -10,9 +10,18 @@ puts ""
 
 set BugNumber OCC22770
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file 22770-tramp.brep] a 
 restore [locate_data_file 22770-trans.brep] b 
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 sewing result 0.1 a b +mint 0.01 -a
 
 set square 1.88469e+07
index 458b9bbf1b2f670e1e7ef5a20337df86e3fd30c4..f2f6fa0a8dd65aac13b69da53ff548d55ce81ce9 100755 (executable)
@@ -10,9 +10,18 @@ puts ""
 
 set BugNumber OCC22770
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file 22770-tramp.brep] a 
 restore [locate_data_file 22770-trans.brep] b 
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 sewing result 0.1 a b +mint 0.01 +s
 
 set square 1.88469e+07
index 434392e1e746428a0baa969d0f13dcdf82f48d36..0e691686a3459715e7705f7a1dfb0142e15477a9 100755 (executable)
@@ -8,9 +8,18 @@ puts ""
 
 set BugNumber OCC22770
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file 22770-tramp.brep] a 
 restore [locate_data_file 22770-trans.brep] b 
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 sewing result 0.1 a b -c
 
 set square 1.8847e+07
index 3ea3fffc4eb8079e08a78aae988c1ef97dc27b22..4a0fd57c4231cfe9414d7a78719936fba11f4b13 100755 (executable)
@@ -8,9 +8,18 @@ puts ""
 
 set BugNumber OCC22770
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file 22770-tramp.brep] a 
 restore [locate_data_file 22770-trans.brep] b 
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 sewing result 0.1 a b +c
 
 set square 1.8847e+07
index dd81aead9342ae70b2a38b48ad86d0db841d406a..f1863601d1368584891229fb22842125437acb1f 100755 (executable)
@@ -8,9 +8,18 @@ puts ""
 
 set BugNumber OCC22770
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file 22770-tramp.brep] a 
 restore [locate_data_file 22770-trans.brep] b 
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 sewing result 0.1 a b +c -f
 
 set square 1.8847e+07
index 41710a7d2211e59a8c8452bcfac35a809de81768..1b7512f9339ebd3d4e2d97d7e4c248d7e5345264 100755 (executable)
@@ -8,9 +8,18 @@ puts ""
 
 set BugNumber OCC22770
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file 22770-tramp.brep] a 
 restore [locate_data_file 22770-trans.brep] b 
 
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 sewing result 0.1 a b -p
 
 set square 1.8847e+07
index af0acc45fb97eeb599a194e791b5ba4364353488..58fbb6712e6c8677f5d3978c9b5c0c00131005bb 100755 (executable)
@@ -10,8 +10,18 @@ puts ""
 
 set BugNumber OCC22770
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file 22770-tramp.brep] a 
 restore [locate_data_file 22770-trans.brep] b 
+
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 sewing result +t 0.01 a b 
 
 set square 1.88469e+07
index 41b7b405f926f78aa0f71d012b0f4900a04fa65a..87a2482805e5956fffb6c00e41754f101bfcc829 100755 (executable)
@@ -8,8 +8,18 @@ puts ""
 
 set BugNumber OCC22770
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file 22770-tramp.brep] a 
 restore [locate_data_file 22770-trans.brep] b 
+
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 sewing result +t 0.01 a b +mint 0.01 
 
 set square 1.88469e+07
index ae2158e40718afb0ffe447eb5b981ec25f038d50..4667e126e0c59776c7ad49a2367a4569dc598b95 100755 (executable)
@@ -6,7 +6,11 @@ puts ""
 ## Error in Draw command "checkshape": invalid face is not recognized
 ##################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file bug23530_BadFace.brep] result
+sfixpcu result result -f
 pcurve result
 
 decho off
index 35d5f52d131aa766fd95570c3678d3b7338d1438..18b7afa43bbab4f4251733a98306150d4cc2b3af 100755 (executable)
@@ -1,12 +1,18 @@
 puts "TODO OCC11111 ALL: Faulty OCC263: here is shading problem"
 puts "TODO OCC11111 ALL: Error : The square of result shape is"
 
+# for "sfixpcu" command
+pload XSDRAW
+
+
 puts "========"
 puts "OCC263"
 puts "========"
 
 restore [locate_data_file OCC263.brep] result
 
+sfixpcu result result -f
+
 isos result 0
 tclean result
 
index 83974cb1b23d4af86caf2f3d3431a2856ae08936..cffc32ea1943f7fd458487371d7020591f8b4b79 100755 (executable)
@@ -6,7 +6,11 @@ puts "OCC264"
 puts " (case 1)"
 puts "========"
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC264_01.brep] result
+sfixpcu result result -f 
 checkshape result
 
 tclean result
index 0d0348eb7a04dcfa335a1e8c40c90dbbc7d14152..01c429373abf7ec7681a46bc3837def5674b1eb7 100755 (executable)
@@ -6,7 +6,11 @@ puts "OCC264"
 puts " (case 11)"
 puts "========"
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC264_11.brep] result
+sfixpcu result result -f 
 checkshape result
 
 tclean result
index f129ed91c09505169d62aa23708a8763b0843841..48542e96d33a7c09d29447ec3593909bb02b69e7 100755 (executable)
@@ -4,7 +4,11 @@ puts "OCC264"
 puts " (case 7)"
 puts "========"
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC264_07.brep] result
+sfixpcu result result -f
 checkshape result
 
 tclean result
index db76719f711693f60ce313e59095533984a5af3c..ef9c011b633f444362bd674b406498351601de25 100755 (executable)
@@ -1,8 +1,14 @@
 
 puts "======== OCC269 ========"
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC269-1.brep] result
+
+sfixpcu result result -f
 checkshape result
+
 isos result 0
 tclean result
 
index 0c73a2ee92c0b7f0ab8f1bdb0d933468a3e5a370..ee8eeb156978d51994cf45a48707fe87b6621f2e 100755 (executable)
@@ -1,8 +1,14 @@
 
 puts "======== OCC269 ========"
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC269-3.brep] result
+
+sfixpcu result result -f
 checkshape result
+
 isos result 0
 tclean result
 
index e7d41ac3082d7a6195aaa00e5b82f45c8e403498..27ba390d89c99c922668bdf4f55305ab081598a0 100755 (executable)
@@ -5,7 +5,12 @@ puts "========================"
 puts " OCC287 "
 puts "========================"
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file shading_170.brep] result
+
+sfixpcu result result -f
 checkshape result
 
 tclean result
index cc6d332634384f16a36d416d70030a2dea2773ed..0562dae5290234319cb9bf4184ea89e017e21a3c 100755 (executable)
@@ -8,7 +8,11 @@ puts ""
 ##  but I believe that orientation of this face is correct.
 #################################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC302c.brep] result
+fixshape result result
 
 set che [checkshape result r]
 if { [regexp {OK} $che] !=1 } {
index 0d821463b486e0ee004716d2c7685bb6923d306f..cf7b4307f812581a50a6863abc4bf234379d3089 100755 (executable)
@@ -7,7 +7,11 @@ puts ""
 ## It's impossible to fuse two solids in the file attached.
 ############################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC337_clone1.brep] a 
+sfixpcu a a -f
 explode a
 
 set che [checkshape a_1]
index 347151252940c72d5c8a6a47f3d134d8af66f1e9..c2d63bde3a9aa81c4c49731fe49ebb513d264f34 100755 (executable)
@@ -5,7 +5,11 @@ puts " OCC347 "
 puts " (case 1) "
 puts "========================"
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC347a.brep] result
+sfixpcu result result -f
 checkshape result
 
 tclean result
index 635521d07917125ba046a2f21916fe0e06e751d8..615f1d934c4b7552d982f6a211ca2f5afad768b8 100755 (executable)
@@ -5,7 +5,12 @@ puts " OCC347 "
 puts " (case 2) "
 puts "========================"
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC347b.brep] result
+
+sfixpcu result result -f
 checkshape result
 
 tclean result
index 82e9091d50ab25e73b1f2c5c81ced8c5242d5196..71e919642f8b864333bef3242be4d89c48250234 100755 (executable)
@@ -5,10 +5,15 @@ puts "CTS19305"
 puts "========================"
 puts ""
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts19305-part.rle] part 
+sfixpcu part part -f
 checkshape part
 
 restore [locate_data_file CTO900_cts19305-tool.rle] tool
+sfixpcu tool tool -f
 checkshape tool
 
 bcut result part tool
index f6fcfd0ebff5f2a7bc546e45b1a913b443583e1c..5938c51db1dd20ab91b8ce6cf9e397a93abff85f 100755 (executable)
@@ -9,8 +9,13 @@ puts ""
 ## As result I have fail on shape that it is not closed.
 ######################################
 
+# for "ffixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC446b.brep] result
 
+ffixpcu result -f -s
+
 set che [checkshape result]
 if { [regexp {Faulty} $che ] == 1} {
     puts "Faulty OCC446 (case 2): Source shape is NotClosed"
index cf1efa8ae947cee4ba454d3c4a06934dcf2c676b..83e84a9d52936d893c6fd59032a464701e5e3404 100755 (executable)
@@ -9,8 +9,13 @@ puts ""
 ## As result I have fail on shape that it is not closed.
 ######################################
 
+# for "ffixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC446c.brep] result
 
+ffixpcu result -f -s
+
 set che [checkshape result]
 if { [regexp {Faulty} $che ] == 1} {
     puts "Faulty OCC446 (case 3): Source shape is NotClosed"
index a938728c0584f1ea919ec800a66d10f9e49c90ee..a7642ca22f916e0905cfdd1e5df6baca0b107552 100755 (executable)
@@ -6,7 +6,11 @@ puts "(case 2)"
 puts "========"
 puts ""
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file mds-part1.rle] a 
+sfixpcu a a -f
 set che [checkshape a]
 if { [regexp {Faulty} $che ] == 1 } {
     puts "Faulty OCC452 (shape 1): Source shape is invalid. It was detected by Checkshape command"
@@ -15,6 +19,7 @@ if { [regexp {Faulty} $che ] == 1 } {
 }
 
 restore [locate_data_file mds-part2.rle] b
+sfixpcu b b -f
 set che [checkshape b]
 if { [regexp {Faulty} $che ] == 1 } {
     puts "Faulty OCC452 (shape 2): Source shape is invalid. It was detected by Checkshape command"
@@ -23,6 +28,7 @@ if { [regexp {Faulty} $che ] == 1 } {
 }
 
 restore [locate_data_file CTO900_ger60239a.rle] c
+sfixpcu c c -f
 set che [checkshape c]
 if { [regexp {Faulty} $che ] == 1 } {
     puts "Faulty OCC452 (shape 3): Source shape is invalid. It was detected by Checkshape command"
@@ -31,6 +37,7 @@ if { [regexp {Faulty} $che ] == 1 } {
 }
 
 restore [locate_data_file CTO900_ger60239b.rle] d
+sfixpcu d d -f
 set che [checkshape d]
 if { [regexp {Faulty} $che ] == 1 } {
     puts "Faulty OCC452 (shape 4): Source shape is invalid. It was detected by Checkshape command"
index 3ec86b68f2a8a9f2b1e96e8b99783d859c8c2365..b0426dd3d0f732e98899cded3aeca32eef727495 100755 (executable)
@@ -6,7 +6,11 @@ puts "(case 3)"
 puts "========"
 puts ""
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ger60239a.rle] a 
+sfixpcu a a -f
 set che [checkshape a]
 if { [regexp {Faulty} $che ] == 1 } {
     puts "Faulty OCC452 (shape 5): Source shape is invalid. It was detected by Checkshape command"
@@ -15,6 +19,7 @@ if { [regexp {Faulty} $che ] == 1 } {
 }
 
 restore [locate_data_file CTO900_ger60239b.rle] b
+sfixpcu b b -f
 set che [checkshape b]
 if { [regexp {Faulty} $che ] == 1 } {
     puts "Faulty OCC452 (shape 6): Source shape is invalid. It was detected by Checkshape command"
index bc835520cf801df18804ccf39a1dd2c1bcefc52f..e06498de26d48365e4f1da321fbceb24e13385b8 100755 (executable)
@@ -10,10 +10,15 @@ puts ""
 ## Bad result of Fuse Operation (Cut&Common - bad too). SAM1470 (#2634) 
 #####################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC472a.brep] b1 
+sfixpcu b1 b1 -f
 checkshape b1
 
 restore [locate_data_file OCC472b.brep] b2
+sfixpcu b2 b2 -f
 checkshape b2
 
 bcut result b1 b2
index 4860fd4b1547cd45839ec26aff0ee5a67e00fc2d..5b049d762068d1d0abfa7e8dce0b76d38f6ae975 100755 (executable)
@@ -8,10 +8,15 @@ puts ""
 ## Bad result of Fuse Operation (Cut&Common - bad too). SAM1470 (#2634) 
 #####################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC472a.brep] b1 
+sfixpcu b1 b1 -f
 checkshape b1
 
 restore [locate_data_file OCC472b.brep] b2
+sfixpcu b2 b2 -f
 checkshape b2
 
 bcommon result b1 b2
index ab4d5b556fb31a2d8133e6f14a9582d52d55d9c5..5dcee9ee3c76f48393b890707a783c9ab601a15a 100755 (executable)
@@ -11,10 +11,15 @@ puts ""
 ## Bad result of Fuse Operation (Cut&Common - bad too). SAM1470 (#2634) 
 #####################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC472a.brep] b1 
+sfixpcu b1 b1 -f
 checkshape b1
 
 restore [locate_data_file OCC472b.brep] b2
+sfixpcu b2 b2 -f
 checkshape b2
 
 bfuse result b1 b2
index e05d8c9dc04b81c5b2352d109ee6c27fb249e609..6801af0a6f17da75eb55ebd4071912dc06037db5 100755 (executable)
@@ -6,9 +6,15 @@ puts ""
 # Regression on reading e3i files with respect of OCC30 and OCC40
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC485b.brep] s1 
 restore [locate_data_file OCC485a.brep] s2 
 
+sfixpcu s1 s1 -f
+sfixpcu s2 s2 -f
+
 checkshape s1
 checkshape s2
 
index 892685e6808d3a300a761f53fe900374b2a6b972..ba0506cc966eecbddab7eb3a4857425a8e5b2c1a 100755 (executable)
@@ -6,9 +6,15 @@ puts ""
 # Regression on reading e3i files with respect of OCC30 and OCC40
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC485b.brep] s1 
 restore [locate_data_file OCC485a.brep] s2 
 
+sfixpcu s1 s1 -f
+sfixpcu s2 s2 -f
+
 checkshape s1
 checkshape s2
 
index ef5d6ff58b0bad6ffe3aaab45b0d826f3e998da1..d3c7f95347d1d6d776d2346bded386cb97e82c1f 100755 (executable)
@@ -6,9 +6,15 @@ puts ""
 # Regression on reading e3i files with respect of OCC30 and OCC40
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC485b.brep] s1 
 restore [locate_data_file OCC485a.brep] s2 
 
+sfixpcu s1 s1 -f
+sfixpcu s2 s2 -f
+
 checkshape s1
 checkshape s2
 
index 55739ac89c275134f7769b4ede6a123b22c874f8..4338257282df117a5132b7332baf8cbd3cff8dd5 100755 (executable)
@@ -6,9 +6,15 @@ puts ""
 # Regression on reading e3i files with respect of OCC30 and OCC40
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC485b.brep] s1 
 restore [locate_data_file OCC485a.brep] s2 
 
+sfixpcu s1 s1 -f
+sfixpcu s2 s2 -f
+
 checkshape s1
 checkshape s2
 
index b7a375c85a93f41a4a276edfec354e4011738078..c75ef637faf2294131c868189048db65a8ba1c2b 100755 (executable)
@@ -6,9 +6,15 @@ puts ""
 # Regression on reading e3i files with respect of OCC30 and OCC40
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC485b.brep] s1 
 restore [locate_data_file OCC485a.brep] s2 
 
+sfixpcu s1 s1 -f
+sfixpcu s2 s2 -f
+
 checkshape s1
 checkshape s2
 
index a43243998f5a3cd6cd4e7195b7d5e58a0d9b9526..f2bd7e36b961dac1d5ab3aa61edcbd4337ae5f05 100755 (executable)
@@ -6,9 +6,15 @@ puts ""
 # Regression on reading e3i files with respect of OCC30 and OCC40
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC485b.brep] s1 
 restore [locate_data_file OCC485a.brep] s2 
 
+sfixpcu s1 s1 -f
+sfixpcu s2 s2 -f
+
 checkshape s1
 checkshape s2
 
index e8c9a7efb9f557e4985528526f39873bf0051adc..cadf193133d6106eaf6838439a4ef7498ea56d75 100755 (executable)
@@ -6,9 +6,15 @@ puts ""
 # Regression on reading e3i files with respect of OCC30 and OCC40
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC485b.brep] s1 
 restore [locate_data_file OCC485a.brep] s2 
 
+sfixpcu s1 s1 -f
+sfixpcu s2 s2 -f
+
 checkshape s1
 checkshape s2
 
index f519b5abb6e3ea4aada956884633fb6645612835..cf7b4fe7e9d53d0abc222df8912055e5b251703f 100755 (executable)
@@ -6,9 +6,15 @@ puts ""
 # Regression on reading e3i files with respect of OCC30 and OCC40
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC485b.brep] s1 
 restore [locate_data_file OCC485a.brep] s2 
 
+sfixpcu s1 s1 -f
+sfixpcu s2 s2 -f
+
 checkshape s1
 checkshape s2
 
index 367af52bcb6c645de88b8a773b5ed3f42a38294c..33780a56ac43b506f54bfaa2b1b255ff5b1c766d 100755 (executable)
@@ -7,7 +7,11 @@ puts ""
 ##Attached shape could not be displayed in the Shading mode.
 ##########################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC481.rle] result
+sfixpcu result result -f
 checkshape result
 
 tclean result
index b33b0806cbbb70640cdd2b0e0337f911f6c1de76..b46b1d35ae3909171448e68bb8a2b21299865ed1 100755 (executable)
@@ -7,10 +7,15 @@ puts ""
 ## Draw hangs up during performing fuse operation
 #######################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC485a.brep] a_1 
+sfixpcu a_1 a_1 -f
 checkshape a_1
 
 restore [locate_data_file OCC485a.brep] a_2
+sfixpcu a_2 a_2 -f
 checkshape a_2
 
 if [catch {bfuse result a_1 a_2 } result] {
index 5a5667d9e1bd023c67adee0b0ec9e6ee66db7486..36977236242d5a5d8614ef26a36849c3e5cf87b6 100755 (executable)
@@ -8,9 +8,18 @@ puts ""
 
 set BugNumber OCC6181
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC6181_A.brep] s1 
 restore [locate_data_file OCC6181_B.brep] s2 
 
+sfixpcu s1 s1 -f
+sfixpcu s2 s2 -f
+
+checkshape s1
+checkshape s2
+
 decho off
 set che_s1 [checkshape s1]
 set che_s2 [checkshape s2]
index f0b12771a41960bf53e2193275ffd31fa7a40122..bb31f67fc84ed1d31f86809dc0beebad230937ad 100755 (executable)
@@ -8,9 +8,15 @@ puts ""
 
 set BugNumber OCC6182
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC6182_A.brep] s1 
 restore [locate_data_file OCC6182_B.brep] s2 
 
+sfixpcu s1 s1 -f
+sfixpcu s2 s2 -f
+
 decho off
 set che_s1 [checkshape s1]
 set che_s2 [checkshape s2]
index cdf64646839998060a156775659b14a7668749a2..1c1693e53d2375484ed8d524565f7751ef60efe1 100755 (executable)
@@ -7,9 +7,14 @@ puts ""
 ## No possibility to cut the shapes. 
 ############################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC620a.brep] a 
+sfixpcu a a -f
 checkshape a
 restore [locate_data_file OCC620b.brep] b 
+sfixpcu b b -f
 checkshape b
 
 bop a b
index 94eb0c211b70e6511544dc5b2d1d791cb992da8c..2ddd1972c03e59e23803895ca66713400b3c08a1 100755 (executable)
@@ -7,9 +7,14 @@ puts ""
 ## No possibility to cut the shapes. 
 ############################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC620a.brep] a 
+sfixpcu a a -f
 checkshape a
 restore [locate_data_file OCC620b.brep] b 
+sfixpcu b b -f
 checkshape b
 
 bop a b
index fc46efeeb1d61e8e2a8150e0028defb84ec923a7..b69ef16cf10f25de0a2fce2c12512ca175049941 100755 (executable)
@@ -8,8 +8,14 @@ puts ""
 
 set BugNumber OCC6272
 
+# for "sfixpcu" command
+pload XSDRAW
+
+
 restore [locate_data_file OCC6272_bridge2.brep] a1 
 
+sfixpcu a1 a1 -f
+
 explode a1
 
 bop a1_1 a1_2
index 4bc54718e44dad8cb0f02e8e2eeaaea93072e959..5734eb976780ed05052e4d77547123aa9e07dc43 100755 (executable)
@@ -11,9 +11,16 @@ puts ""
 
 set BugNumber OCC6272
 
+# for "sfixpcu" command
+pload XSDRAW
+
+
 restore [locate_data_file OCC6272_bridge2.brep] a1 
 restore [locate_data_file OCC6272_revolution.brep] a2 
 
+sfixpcu a1 a1 -f
+sfixpcu a2 a2 -f
+
 bop a1 a2
 bopfuse result
 
index 12b3ca8ffb96bc079dc824a04e090b02fcdb0250..bd7803920b4e35dbbe1ac11b23aa526dab99b238 100755 (executable)
@@ -8,8 +8,14 @@ puts ""
 
 set BugNumber OCC6272
 
+# for "sfixpcu" command
+pload XSDRAW
+
+
 restore [locate_data_file OCC6272_bridge2.brep] a1 
 
+sfixpcu a1 a1 -f
+
 #
 # a1 is compound. It containes a_3, a_5, a_1, a_2, a_4, a_6 solids
 #
index 05d7c48819ed24b0294d632e3b821f7ff4e644d1..6d95c6406faadcfffbdd0bf99a9425064c8878d9 100755 (executable)
@@ -8,8 +8,14 @@ puts ""
 
 set BugNumber OCC6272
 
+# for "sfixpcu" command
+pload XSDRAW
+
+
 restore [locate_data_file OCC6272_bridge2.brep] a1 
 
+sfixpcu a1 a1 -f
+
 #
 # a1 is compound. It containes a_3, a_5, a_1, a_2, a_4, a_6 solids
 #
index 7ed242a4f854f86e8fab08b41cb747ace8e37777..31438c0f3245839e7d47ce845d81fe97634815b4 100755 (executable)
@@ -8,8 +8,14 @@ puts ""
 
 set BugNumber OCC6272
 
+# for "sfixpcu" command
+pload XSDRAW
+
+
 restore [locate_data_file OCC6272_bridge2.brep] a1 
 
+sfixpcu a1 a1 -f
+
 #
 # a1 is compound. It containes a_3, a_5, a_1, a_2, a_4, a_6 solids
 #
index 987aa25e56d6aeab460776805e97d4f01200c6c0..fcd537b42e51001f577b52e1e816e48a53998458 100755 (executable)
@@ -8,8 +8,14 @@ puts ""
 
 set BugNumber OCC6272
 
+# for "sfixpcu" command
+pload XSDRAW
+
+
 restore [locate_data_file OCC6272_bridge2.brep] a1 
 
+sfixpcu a1 a1 -f
+
 #
 # a1 is compound. It containes a_3, a_5, a_1, a_2, a_4, a_6 solids
 #
index 41152a865865c7c9cb2217d06e6e7d2314da653c..fd1b868c882229a8a5e1700d14ea17ca8236242d 100755 (executable)
@@ -7,7 +7,11 @@ puts ""
 ## After command sew in DRAW on attached shape free wires are disappeared.
 ####################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC714.brep] a 
+sfixpcu a a -f
 checkshape a
 
 set nb_info1 [nbshapes a]
index b8a4a1a21e47f8d70312ea3a9c2e9d4a82d7b8b2..b81ebb7d641269423c7bb4faad58e869fa861825 100755 (executable)
@@ -9,7 +9,12 @@ puts ""
 ## It's impossible to cut one shape from another.
 #################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC774.brep] a 
+sfixpcu a a -f
+
 explode a
 checkshape a_1
 checkshape a_2
index 8d902616ce3d10d9be9cc4e054364bdcbabff482..e4da6eaddc2e02528b4f66d19cf6ad97a367f390 100755 (executable)
@@ -9,7 +9,13 @@ puts "========"
 puts ""
 #################################
 ##
+
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC774.brep] a 
+sfixpcu a a -f
+
 explode a
 checkshape a_1
 checkshape a_2
index 8dfba8f219650f92bceed72addeeb4cc1873a35b..d7abc7396e12f686cf8ad0fc2e692da10c96d8e1 100755 (executable)
@@ -9,7 +9,12 @@ puts ""
 ## Incorrect result of cut of the cylinder from the shape.
 ######################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC778.brep] a 
+sfixpcu a a -f
+
 explode a
 checkshape a_1
 checkshape a_2
index 0fead207ebca2956809d97b089043c53736cf460..2e319ea09daa20107fa8711db47cf7d04a2eaca8 100755 (executable)
@@ -9,7 +9,12 @@ puts ""
 ## Incorrect result of cut of the cylinder from the shape
 #####################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC778.brep] a 
+sfixpcu a a -f
+
 explode a
 checkshape a_1
 checkshape a_2
index ea45927a6da9586d98fc60388bb4b738eccca2f4..7b8a8cd563629e5aad4c32a8cee8d66664a5612c 100755 (executable)
@@ -10,9 +10,15 @@ puts ""
 ## (section)
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC951_1.brep] b 
 restore [locate_data_file OCC951_2.brep] a 
 
+sfixpcu a a -f
+sfixpcu b b -f
+
 checkshape b
 checkshape a
 
index fd39ccdf8dba6a6b90cfc25ec9367d76635a7751..b2932c163a5e141f348e8d1550c9de9c0589cebd 100755 (executable)
@@ -10,9 +10,15 @@ puts ""
 ## (bopsection)
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC951_1.brep] b 
 restore [locate_data_file OCC951_2.brep] a 
 
+sfixpcu a a -f
+sfixpcu b b -f
+
 checkshape b
 checkshape a
 
index bf8f0a239d6f1fbf21cdad336cc60251ae64e13f..3a94121dc17b34555e47ad3d2bb202d38f71163e 100755 (executable)
@@ -10,9 +10,15 @@ puts ""
 ## (section)
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC951_1.brep] b 
 restore [locate_data_file OCC951_2.brep] a 
 
+sfixpcu a a -f
+sfixpcu b b -f
+
 checkshape b
 checkshape a
   
index 0cbdd41ef467439d22c4f7e68518616e3454af96..688ba2841394b255e1ea32ffd22d191b97c97fa3 100755 (executable)
@@ -10,9 +10,15 @@ puts ""
 ## (section)
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC951_1.brep] b 
 restore [locate_data_file OCC951_2.brep] a 
 
+sfixpcu a a -f
+sfixpcu b b -f
+
 checkshape b
 checkshape a
 
index 8d181b16eb69efbd386cd48b0d65ad2d26a0487d..7a5e9bc4e71a66b236d33015f904a4bc8cb13f42 100755 (executable)
@@ -10,9 +10,15 @@ puts ""
 ## (section)
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC951_1.brep] b 
 restore [locate_data_file OCC951_2.brep] a 
 
+sfixpcu a a -f
+sfixpcu b b -f
+
 checkshape b
 checkshape a
 
index 3dd64652160cc17e183e90051a7f57d3784be0be..a722b8e035127cad71e1fe59092aa4377449ad9f 100755 (executable)
@@ -10,9 +10,15 @@ puts ""
 ## (bopsection)
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC951_1.brep] b 
 restore [locate_data_file OCC951_2.brep] a 
 
+sfixpcu a a -f
+sfixpcu b b -f
+
 checkshape b
 checkshape a
 
index dcf984e10dff807d9c21b5f4fcc3e0571b630441..bf737339bd0814133fe4200617e4d4ee18efc649 100755 (executable)
@@ -10,9 +10,15 @@ puts ""
 ## (bopsection)
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC951_1.brep] s1 
 restore [locate_data_file OCC951_2.brep] s2 
 
+sfixpcu s1 s1 -f
+sfixpcu s2 s2 -f
+
 checkshape s1
 checkshape s2
 
index e801200b830e0cc57f1a50158e4957f41bbb6eb7..2f7f7392f77d842eb803b7e7a09a334cd837816f 100755 (executable)
@@ -10,9 +10,15 @@ puts ""
 ## (bopsection)
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC951_1.brep] s1 
 restore [locate_data_file OCC951_2.brep] s2 
 
+sfixpcu s1 s1 -f
+sfixpcu s2 s2 -f
+
 checkshape s1
 checkshape s2
 
index b82848fa0b140d346b9826a2084c36f7a10879c9..317ebf21322f56b4823dbaab65d02a92e7c49b97 100755 (executable)
@@ -10,9 +10,15 @@ puts ""
 ## (bopsection)
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC951_1.brep] b 
 restore [locate_data_file OCC951_2.brep] a 
 
+sfixpcu a a -f
+sfixpcu b b -f
+
 checkshape b
 checkshape a
   
index 3f561bf95ab9486bc2f8ee2c4afc915b1b7d59b5..1e19d4be2964c20bfda325b38b69c27ae34afc08 100755 (executable)
@@ -10,9 +10,15 @@ puts ""
 ## (bopsection)
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC951_1.brep] s1 
 restore [locate_data_file OCC951_2.brep] s2 
 
+sfixpcu s1 s1 -f
+sfixpcu s2 s2 -f
+
 checkshape s1
 checkshape s2
 
index 79fd3a630b7272e40bdc64ca15947f222aa4aab0..be36e2c923ee220f1fcbb38ef5a0adba66ce99ae 100755 (executable)
@@ -10,9 +10,15 @@ puts ""
 ## (bopsection)
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC951_1.brep] s1 
 restore [locate_data_file OCC951_2.brep] s2 
 
+sfixpcu s1 s1 -f
+sfixpcu s2 s2 -f
+
 checkshape s1
 checkshape s2
 
index 8b0800d61853508340602fbbe3b9ee37f7768782..3b96a27829de3297540021cd47ef08c118600f34 100755 (executable)
@@ -10,9 +10,15 @@ puts ""
 ## (bopsection)
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC951_1.brep] b 
 restore [locate_data_file OCC951_2.brep] a 
 
+sfixpcu a a -f
+sfixpcu b b -f
+
 checkshape b
 checkshape a
   
index 23e752c547663b6a82c4300a14b494074b5edb94..c88ed867da9968cbfc14fc9bf843061952bf72d8 100755 (executable)
@@ -10,9 +10,15 @@ puts ""
 ## (section)
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC951_1.brep] s1 
 restore [locate_data_file OCC951_2.brep] s2 
 
+sfixpcu s1 s1 -f
+sfixpcu s2 s2 -f
+
 checkshape s1
 checkshape s2
 
index 50ebc0733e363076f41ee99bf304264d9b0aaeb2..7213cd37c7b3d8972d970f846cbc5176107690e4 100755 (executable)
@@ -10,9 +10,15 @@ puts ""
 ## (section)
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC951_1.brep] s1 
 restore [locate_data_file OCC951_2.brep] s2 
 
+sfixpcu s1 s1 -f
+sfixpcu s2 s2 -f
+
 checkshape s1
 checkshape s2
 
index 8217619dd2894cb08de21ca20a63d6d1addcc6e8..938a48c01fcc2c7ae7c16e0f5a83b06eabaccf64 100755 (executable)
@@ -10,9 +10,15 @@ puts ""
 ## (section)
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC951_1.brep] s1 
 restore [locate_data_file OCC951_2.brep] s2 
 
+sfixpcu s1 s1 -f
+sfixpcu s2 s2 -f
+
 checkshape s1
 checkshape s2
 
index 82a31c9976fa6b784a45f4b7634c842d21bf49eb..d2e7ca38e40d9a03af37755892038b5c9479c615 100755 (executable)
@@ -10,9 +10,15 @@ puts ""
 ## (section)
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC951_1.brep] s1 
 restore [locate_data_file OCC951_2.brep] s2 
 
+sfixpcu s1 s1 -f
+sfixpcu s2 s2 -f
+
 checkshape s1
 checkshape s2
 
index 1f5696c348320bcc0261f018e3384afa547c86dc..60621351d8a1dbe844423f8ab0f9aec7f049668b 100644 (file)
@@ -6,9 +6,18 @@ puts ""
 # Operation "cut" crashes on attached shapes
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file bug23122_ExtTor.brep] s1
 restore [locate_data_file bug23122_IntTor.brep] s2
 
+sfixpcu s1 s1 -f
+sfixpcu s2 s2 -f
+
+checkshape s1
+checkshape s2
+
 bcut result s1 s2
 
 set square 6962.25
index 9248daf6181d03c0fa94529690f1baebd77a44df..0f4eecfb1bb737d7a9af71a378d3cc26f10ed52c 100755 (executable)
@@ -6,9 +6,15 @@ puts ""
 # Self intersection reported after Fuse operation
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file bug23933_a.brep] a
 restore [locate_data_file bug23933_b.brep] b
 
+sfixpcu a a -f
+sfixpcu b b -f
+
 checkshape a
 checkshape b
 bopargcheck a b -F
index 00b8f43a389e0aec3fae9d8884ccdd3e6265cb5c..7d707c366be799af48b9cd779b9d631da357d832 100755 (executable)
@@ -5,9 +5,15 @@ puts "OCC107"
 puts "================"
 puts ""
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC107-1.brep] ee 
+sfixpcu ee ee -f
 checkshape ee
+
 restore [locate_data_file OCC107-2.brep] ff
+sfixpcu ff ff -f
 checkshape ff
 
 distmini dd1 ee ff
index 044e6e6ac16bc9bd4cb2aa7459f3995caa70b15f..2ce5f570f3c939b2840c61f24015f200a5234698 100755 (executable)
@@ -4,8 +4,11 @@ puts "OCC15"
 puts "================"
 puts ""
 
-restore [locate_data_file OCC15.brep] result
+# for "sfixpcu" command
+pload XSDRAW
 
+restore [locate_data_file OCC15.brep] result
+sfixpcu result result -f
 checkshape result
 
 vinit
index a3cba8df8b2405ad4313ba1fad0baccb395f0eaa..69b2168caca52212cff112cad7963a9c90fa75ae 100755 (executable)
@@ -10,7 +10,11 @@ puts ""
 # No intersection found using BRepClass3d_Intersector3d
 ######################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC1651.brep] face 
+sfixpcu face face -f
 
 checkshape face
 
index 85ae54b4dfcd396aa19f8540a2c8f1d272c1e46f..d1e888a58ec66e485a47789c0ec20a588304d874 100755 (executable)
@@ -9,7 +9,11 @@ puts ""
 puts " Solid_14 will be the face which is unvisible during displaying entire solid."
 #####################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC17.brep] sh 
+sfixpcu sh sh -f
 
 checkshape sh
 
index 674c216e21a4d864d036b6d4bd43d9431c547f06..8bc52ce6fd1b93314442be9a4fcff8d11eea5768 100755 (executable)
@@ -6,9 +6,15 @@ puts "(case 6)"
 puts "========================"
 puts ""
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts16184a.rle] a 
+sfixpcu a a -f
 checkshape a
+
 restore [locate_data_file cts16184b.brep] b
+sfixpcu b b -f
 checkshape b
 
 bop a b
index 4223a4cd491398d58a328448bf4c337fab99286a..d865ea651e44ff63842cc775c684993cbffc4844 100755 (executable)
@@ -7,7 +7,12 @@ puts "========"
 ##Error of fillet prolongation. 
 ##########################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC211.brep] a 
+sfixpcu a a -f
+checkshape a
 
 explode a e
 
index 5857e5b5be3e97f069200ca702f9c3956d86cc20..5398b38b1063a9ab87ba922f91d8b605e689656f 100755 (executable)
@@ -7,7 +7,12 @@ puts "========"
 ##Error of fillet prolongation. 
 ##########################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC211.brep] a 
+sfixpcu a a -f
+checkshape a
 
 explode a e
 
index ea1a863db9d463cfe20d5b3973c11a03e1484a56..e9c7c9579a95f522d6bb12d8f0ae28eb5a4b66b0 100755 (executable)
@@ -9,7 +9,12 @@ puts ""
 
 cpulimit 4000
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC228.brep] a 
+sfixpcu a a -f
+
 explode a
 checkshape a_1
 checkshape a_2
index b949e02e007974c0642f6e1235777a182a69d616..af502a7970c210c1e2096179c27353cb1e6b4d63 100755 (executable)
@@ -3,7 +3,11 @@ puts "OCC25"
 puts "================"
 puts ""
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC25-1.brep] sh1 
+sfixpcu sh1 sh1 -f
 
 decho off
 set che [checkshape sh1]
@@ -17,6 +21,7 @@ if { [regexp {Faulty} $che ] == 1 } {
 
 # ================================================
 restore [locate_data_file OCC25-2.brep] sh2
+sfixpcu sh2 sh2 -f
 
 decho off
 set che [checkshape sh2]
index 5a5c898f2f856ce5991ee57a4c040784db883c0f..fb174fd5f44b53d7ef17ed1f5e9e4aa7f75896fa 100755 (executable)
@@ -4,7 +4,11 @@ puts " OCC258 "
 puts "(case 1)"
 puts "========================"
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file shading_143.brep] result
+sfixpcu result result -f -s
 checkshape result
 
 tclean result
index de68cd1703b7eb525b21bbcb4b2eaa7f7f0042d3..894831982aafa451eb6925378118ba0dd63aadc0 100755 (executable)
@@ -4,7 +4,11 @@ puts " OCC258 "
 puts "(case 2)"
 puts "========================"
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file shading_144.brep] result
+sfixpcu result result -f
 checkshape result
 
 tclean result
index 42b88a6350f238474b670f71bb6ac342025aa428..9895784afd7493986c71284195fc1e06a9040443 100755 (executable)
@@ -5,7 +5,12 @@ puts "================"
 puts ""
 puts "TODO OCC12345 ALL: Error : The square of result shape is"
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC26.brep] a 
+sfixpcu a a -f
+
 explode a
 checkshape a_1
 checkshape a_2
index c312158cbbd02078e818381a31cdcd00c6d2eef5..cf8e0a2eb44e38c1f5da97663f5a68445c0d40c4 100755 (executable)
@@ -4,7 +4,13 @@ puts "OCC26"
 puts "================"
 puts ""
 puts "TODO OCC12345 ALL: Error : The square of result shape is"
+
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC26.brep] a 
+sfixpcu a a -f
+
 explode a
 checkshape a_1
 checkshape a_2
index a3c733f480aeaf7ef4326bfe38352410f2ec847c..d407f0818b3c310144a0c4229b718ac5f0eedcdf 100755 (executable)
@@ -8,7 +8,11 @@ puts ""
 ## Visualization is too slow.
 ##############################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file OCC368.brep] result
+sfixpcu result result -f
 checkshape result
 
 tclean result
index d2b2a15e970916ed56e329460971e4cd69c5e1a3..1371bcaa67746ed4e75cc0893db72d2242f22e71 100755 (executable)
@@ -5,11 +5,15 @@ puts ""
 ##############################
 ## Exception occurs during fuse operation 
 ##############################
+# for "sfixpcu" command
+pload XSDRAW
 
 restore [locate_data_file OCC496a.brep] a_1 
+sfixpcu a_1 a_1 -f
 checkshape a_1
 
 restore [locate_data_file OCC496b.brep] a_2
+sfixpcu a_2 a_2 -f
 checkshape a_2
 
 bfuse result a_1 a_2
index 75e16f53c61a130d890f44b96ff416f1f5142ecb..660e8667a4efd60399ca1fa7de7390d666319779 100755 (executable)
@@ -6,8 +6,12 @@ puts ""
 ## BRepTools_WireExplorere gives not all edges from a wire
 ###################################################
 
+# for "sfixpcu" command
+pload XSDRAW
+
 pload XDE
 restore [locate_data_file OCC8.brep] result
+sfixpcu result result -f -s
 
 checkshape result
 
index 285356f4b19dc481be775186accb28afe2535e4a..2531a6a722a82275157ebcddfc5413cb699d6865 100755 (executable)
@@ -6,6 +6,7 @@ puts ""
 restore [locate_data_file OCC169.brep] a
 
 fixshape result a 1e-7
+sfixpcu result result -f
 checkshape result
 
 set square 6.27959
index f958faa47b8b0a6a7c700e5bd2ccb713285be185..3f285290aeda3d2168dedd47bd80cf49a5992470 100755 (executable)
@@ -2,12 +2,19 @@ puts "==========="
 puts "OCC22535"
 puts "==========="
 ######################################################
-# Cut cphere: invalid shape after reading from STEP
+# Cut sphere: invalid shape after reading from STEP
 ######################################################
 
+# for "fixshape" command
+pload XSDRAW
+
 set BugNumber OCC22535
 
 restore [locate_data_file OCC22535-sphere_cyl2_cut.brep] a 
+
+fixshape a a
+checkshape a
+
 testwritestep $imagedir/${test_image}.stp a
 stepread $imagedir/${test_image}.stp b *
 renamevar b_1 result
index bc216c97d6ec7ec11d14f6a99c5ae5e7fe6003e4..43c2e2c6846149479d94171b06f87a3623064509 100755 (executable)
@@ -5,9 +5,16 @@ puts "==========="
 # Cut cphere: invalid shape after reading from STEP
 ######################################################
 
+# for "fixshape" command
+pload XSDRAW
+
 set BugNumber OCC22535
 
 restore [locate_data_file OCC22535-cut_comp.brep] a 
+
+fixshape a a
+checkshape a
+
 testwritestep $imagedir/${test_image}.stp a
 stepread $imagedir/${test_image}.stp b *
 renamevar b_1 result
index 5e961c4536afdb80b2235a56f128b1fd1f4754cf..429937a74a6521060cb7e47e5c530233a086923e 100644 (file)
@@ -12,9 +12,9 @@ set ref_data {
 DATA        : Faulties = 0  ( 0 )  Warnings = 0  ( 0 )  Summary  = 0  ( 0 )
 TPSTAT      : Faulties = 0  ( 0 )  Warnings = 21  ( 12 )  Summary  = 21  ( 12 )
 CHECKSHAPE  : Wires    = 2  ( 0 )  Faces    = 2  ( 0 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
-NBSHAPES    : Solid    = 4  ( 4 )  Shell    = 4  ( 4 )  Face     = 35  ( 35 )   Summary  = 289  ( 266 )
-STATSHAPE   : Solid    = 4  ( 4 )  Shell    = 4  ( 4 )  Face     = 35  ( 35 )   FreeWire = 0  ( 0 )   FreeEdge  = 24 ( 24 )   SharedEdge = 103  ( 103 )
-TOLERANCE   : MaxTol   = 6.104502198e-06  (          1e-05 )  AvgTol   =  9.682983037e-07  (  2.91037487e-06 )
+NBSHAPES    : Solid    = 3  ( 4 )  Shell    = 4  ( 4 )  Face     = 35  ( 35 )   Summary  = 292  ( 266 )
+STATSHAPE   : Solid    = 3  ( 4 )  Shell    = 4  ( 4 )  Face     = 35  ( 35 )   FreeWire = 0  ( 0 )   FreeEdge  = 24 ( 24 )   SharedEdge = 105  ( 103 )
+TOLERANCE   : MaxTol   = 6.104502198e-06  (          1e-05 )  AvgTol   =  9.694977451e-07  (  2.91037487e-06 )
 LABELS      : N0Labels = 4  ( 4 )  N1Labels = 31  ( 31 )  N2Labels = 0  ( 0 )   TotalLabels = 35  ( 35 )   NameLabels = 7  ( 7 )   ColorLabels = 0  ( 0 )   LayerLabels = 28  ( 28 )
 PROPS       : Centroid = 0  ( 0 )  Volume   = 0  ( 0 )  Area     = 0  ( 0 )
 NCOLORS     : NColors  = 0  ( 0 )
index 1817468d8cbece45c55aa28f5739c4a0bcd74a0b..8555a8f0435b1d44d5ce77030be9feff98afdd2e 100644 (file)
@@ -1,4 +1,10 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CDA900_pro10142.rle] shp
+sfixpcu shp shp -f
+checkshape shp
+
 explode shp f
 depouille result shp 0 0 1 shp_2 -3 0 0 0 0 0 1 shp_3 -3 0 0 0 0 0 1  shp_4 -3 0 0 0 0 0 1  shp_5 -3 0 0 0 0 0 1  shp_6 -3 0 0 0 0 0 1  shp_7 -3 0 0 0 0 0 1 shp_8 -3 0 0 0 0 0 1 shp_9 -3 0 0 0 0 0 1 shp_10 -3 0 0 0 0 0 1 shp_11 -3 0 0 0 0 0 1 shp_12 -3 0 0 0 0 0 1 shp_13 -3 0 0 0 0 0 1 shp_14 -3 0 0 0 0 0 1 shp_15 -3 0 0 0 0 0 1 shp_16 -3 0 0 0 0 0 1 shp_17 -3 0 0 0 0 0 1 shp_18 -3 0 0 0 0 0 1 shp_19 -3 0 0 0 0 0 1 shp_20 -3 0 0 0 0 0 1 shp_21 -3 0 0 0 0 0 1 
 
index f35ed7425707f20926165cd0f4e5e4c527b7fb98..3f32d9199cf4444fe465ec46c2986a0459526197 100644 (file)
@@ -1,8 +1,14 @@
 # Original bug : cts21764
 # Date : 23 Nov 98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE903_cts21ggr.rle] base
 
+sfixpcu base base -f
+checkshape base
+
 explode base face
 copy base_14 facdep
 vertex v1 12.9980200374864 -13 16.2268812577167
index 9b556461533953b1afd090c5e2203d988b1aced1..dba70d33f58eb5237ceda0515cd54b08c0b848f8 100644 (file)
@@ -1,9 +1,14 @@
 # Original bug : pro16449
 # Date : 18 Dec 98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 puts "TODO OCC22803 All:Faulty shapes in variables faulty_1 to faulty_4"
 
 restore [locate_data_file CFE903_pro16gha.rle] base
+sfixpcu base base -f
+checkshape base
 
 explode base face
 
index b84ca0e0203974de63c0fd801fb4810eaa6709b7..4357456dc3765e3a64374292955bcc7a24b61479 100644 (file)
@@ -1,7 +1,12 @@
 # Original bug : cts20610
 # Date : 21 Dec 98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE903_cts20ghb.rle] base
+sfixpcu base base -f
+checkshape base
 
 explode base face
 
index 8f31d324c8a2702d09cb3e2ed7eca1539bd7828c..d47b4552ced614b218b2228fc7cb7eea37a7d07e 100644 (file)
@@ -1,9 +1,15 @@
 # Original bug : cts21832
 # Date : 26 Nov 98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file cts21832_base.brep] base
 restore [locate_data_file cts21832_cont.brep] cont
 
+sfixpcu base base -f
+sfixpcu base base -f
+
 explode cont wire
 copy cont_1 wire
 plane plan 0 0 0 -1 0 0
index 7cc8a7765455a2357b285326b64b06fcfbb8ef45..5d9a1fac93ea8baf3d04a62efb1ef4aefc00f57f 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : cts20170
 # Date : 8April98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file cts20170_base.rle] base
 restore [locate_data_file cts20170_face.rle] cont
 
+sfixpcu base base -f
+sfixpcu cont cont -f
+
+checkshape base
+checkshape cont
+
 explode base face
 
 featprism base cont cont 0 0 1 1 1
index 3dfb50aa94ceb44305b8b6364f3dcf890445c5ef..3d57c44b4b7cb85d242a3cbdf9efb4e6a6860ee2 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : cts20168
 # Date : 8April98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE900_cts20gaj.rle] base
 restore [locate_data_file cts20168_face.rle] cont
 
+sfixpcu base base -f
+sfixpcu cont cont -f
+
+checkshape base
+checkshape cont
+
 explode base face
 copy base_1 ffrom
 copy base_4 funtil
index 0fdeecba16183051836d0b2ec31e2167fff5f44f..b299c096656cc275a4ee17ef649f8cabb999cae2 100644 (file)
@@ -1,10 +1,17 @@
 # Original bug : cts20722
 # Date : 21August98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts20722c.rle] base
 restore [locate_data_file cts20722b.rle] cont
 restore [locate_data_file cts20722c.rle] funtil
 
+sfixpcu base base -f
+sfixpcu cont cont -f
+sfixpcu funtil funtil -f
+
 explode cont face
 #explode base face
 #copy base_14 funtil
index c50c5046b3667d3a9efef7b64d86770b3d96d0a0..33cc75160561861cc0724489a269546ae548b667 100644 (file)
@@ -1,10 +1,22 @@
 # Original bug : cts21180
 # Date : 17 Sept 98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts21180c.rle] base
 restore [locate_data_file cts21180_face.rle] cont
 restore [locate_data_file cts21180_until.rle] funtil
 
+sfixpcu base base -f
+sfixpcu cont cont -f
+sfixpcu funtil funtil -f
+
+checkshape base
+checkshape cont
+checkshape funtil
+
+
 featprism base cont cont 0 0 -1 1 1
 featperform prism result funtil
 
index 838df0cdaf241781a0a3a1be3a3661e41e4faee5..b03a895755c6db44b14a7db8764a560fc6a6f3b1 100644 (file)
@@ -6,9 +6,18 @@
 #miv
 cpulimit 2000
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE900_cts20geq.rle] base
 restore [locate_data_file cts20960_face.brep] cont
 
+sfixpcu base base -f
+sfixpcu cont cont -f
+
+checkshape base
+checkshape cont
+
 explode base face
 #copy base_26 funtil
 copy base_28 funtil
index 51fea72bdc50d90073bb50fcb754bb38f46b84f9..df5d3b77f0dfdb7a3da0e34253e2f62cc3f17be3 100644 (file)
@@ -1,9 +1,15 @@
 # Original bug : pro16769
 # Date : 02 Dec 98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE900_pro16gff.rle] base
 restore [locate_data_file pro16769_face.brep] cont
 
+sfixpcu base base -f
+sfixpcu cont cont -f
+
 explode base face
 
 mksurface p28 base_28
index 13306b32b269190fd1fb3b766350f813335020ea..c7db9e458ea18d73ca6985e28a51b9a8da0516b0 100644 (file)
@@ -1,5 +1,15 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE_osa_sgad.rle] a
 restore [locate_data_file osa-contour] b
+
+sfixpcu a a -f
+sfixpcu b b -f
+
+checkshape a
+checkshape b
+
 mkplane f b
 
 featprism a f f 1 0 0 0 1
index 49bfbc3f5458fc2da101d361db22a497b1a384a6..cec7b7b70e37806b1c744aa954d14240a4f69fa7 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : pro16290
 # Date : 12 Nov 98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE900_pro16gdq.rle] base
 restore [locate_data_file pro16290_face.rle] cont
 
+sfixpcu base base -f
+sfixpcu cont cont -f
+
+checkshape base
+checkshape cont
+
 explode base face
 copy base_7 funtil
 
index 528dcff036870c1bff6c174b8787a875077b2a1f..7127ead35cb55f98f0cd3da935aca4ccae0d3f8b 100644 (file)
@@ -1,9 +1,18 @@
 # Original bug : pro16290
 # Date : 12 Nov 98
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE900_pro16gdq.rle] base
 restore [locate_data_file pro16290_face.rle] cont
 
+sfixpcu base base -f
+sfixpcu cont cont -f
+
+checkshape base
+checkshape cont
+
 explode base face
 copy base_7 funtil
 copy base_7 skface
index d81cc62a5213b5b8cb955108211bcecf99c665d9..9cc95a01bacb410229b11abbb26b9fa409de3f8a 100644 (file)
@@ -1,2 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CTS18826.rle] a
 
+fixshape a a
+checkshape a
index dac9331b250cc961ed64514020c123f8ce807e2b..8147476937a8bbd6e66cb0f4eb7f004164b9034b 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTS18683.rle] a
 
+fixshape a a
+checkshape a
index d5f4b49b552d819459ee803355b3ae68fa0ea5d7..e8a13e4e124b709dd60ab7e23d89945108ce4ca7 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts19305-part.rle] a
 
+sfixpcu a a -f
+checkshape a
index 334b5c304e386653c7d03c746ff9100cdba42d28..92886117107e1e7a1dfd35b514b67a281e535cea 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file ger60054a.rle] a
 
+sfixpcu a a -f
+checkshape a
index 47fd996896476a9555351e24ebccbe18d6f92276..14f1d65d2e5af8c532396f5e1a67cbd38926df38 100644 (file)
@@ -1,2 +1,5 @@
-restore [locate_data_file CTO900_ger60065-part.rle] a
+# for "sfixpcu" command
+pload XSDRAW
 
+restore [locate_data_file CTO900_ger60065-part.rle] a
+sfixpcu a a -f
index 54b6b1abdf61cb012c61b9d75204cc6af0c7f920..56c2e9324978c6024c9837ae61dae09eaef9e70f 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ger60239b.rle] a
 
+sfixpcu a a -f
+checkshape a
index 7f326ece139071b454ff54a0e750f0c152a684ac..efdbdaffd98902edc6d4ee6ed87c86f4f89f3452 100644 (file)
@@ -4,6 +4,11 @@ if {[string compare $command "ShapeConvertRev"] == 0 } {
 if {[string compare $command "SplitAngle"] == 0 } {
     puts "TODO OCC23127 ALL: Faulty shapes in variables faulty_1 to faulty_9 "
 }
+
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ger60598c.rle] a
 
+sfixpcu a a -f
 
index e6a48fb4c98db501c81f8092c5173813980422f0..d12236df552147eb527e6b64fdbe4f34899c86c7 100644 (file)
@@ -1,2 +1,5 @@
-restore [locate_data_file CTO900_pro10505b.rle] a
+# for "sfixpcu" command
+pload XSDRAW
 
+restore [locate_data_file CTO900_pro10505b.rle] a
+sfixpcu a a -f
index f1d220d48dbd0612dd05ff76c3737029bd4d890c..5ca3861ac90c07ed4c4968bfb84aa34491765f7b 100644 (file)
@@ -1,2 +1,5 @@
-restore [locate_data_file CTO900_pro12663-part.rle] a
+# for "sfixpcu" command
+pload XSDRAW
 
+restore [locate_data_file CTO900_pro12663-part.rle] a
+sfixpcu a a -f
index b8a62e96b2caee91716d31c14b13ae120b2d7146..e1fcab985ebf8e9d8c75edd4e287849dd5ced670 100644 (file)
@@ -1,2 +1,5 @@
-restore [locate_data_file CTO900_pro12663-tool.rle] a
+# for "sfixpcu" command
+pload XSDRAW
 
+restore [locate_data_file CTO900_pro12663-tool.rle] a
+sfixpcu a a -f
index 29a830c5142738d101c008aa8ef84db7d347118d..95b60d03623be06307ccc534a2c1b28649a6d24d 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_pro8934b.rle] a
 
+sfixpcu a a -f
+checkshape a
index eead01e85fb39fa50026b48274ea6c5758da8f3c..89124f9cd1dd3c95109c5a788ad3f83f4b07e686 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO901_cts20150_base.rle] a
 
+sfixpcu a a -f
+checkshape a
index 85498e0e517509afb4ea9d7f4742671318045227..634d4b6b90155c6d62f2d0ac3cbca374601ced81 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts20280a.rle] a
 
+sfixpcu a a -f
+checkshape a
index 29c5e88d5d94aceb37031fa88cb73bad0f3c3347..22eeb18b63052f7005a863c443012895b333c114 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts20907a.rle] a
 
+sfixpcu a a -f
+checkshape a
index 3a034a16652453c5cf149e9f5ec00f2bc1f5edf8..9629f2327b2757e2a6d0c7736d42a6c73ca57043 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts20960a.rle] a
 
+sfixpcu a a -f
+checkshape a
index 643fab3f646cd6b2e4cdeebc9ad108af2dece91f..62fde92e186e6d6ede58a8bf34d2a6bc780f922c 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts20974b.rle] a
 
+sfixpcu a a -f
+checkshape a
index be15fdadc8813ebac487ae90f95af76eb3a12d3a..a1a523f35206590cdb7b6c621429887ef6ac425f 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts21124a.rle] a
 
+sfixpcu a a -f
+checkshape a
index 3bae21867073234f5b21a1fb1f2c0011c1535013..7bf21e58d3c57e51256f88ae97815d8dc31e19ff 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file cts21200a.rle] a
 
+sfixpcu a a -f
+checkshape a
index 44ada1bc32952a49cd1c74e44f0dc9e2c2d7e20f..eb6345004030757ae016fb73da5546dca04d99cf 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts21208a.rle] a
 
+sfixpcu a a -f
+checkshape a
index 7f9fd8f4e5678766287e2153ab481e3bc574d077..a70cc818f8729cfbf842fb4cb8d2174f5bced52c 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts21210a.rle] a
 
+sfixpcu a a -f
+checkshape a
index e3aab5ca7edb1ebf13f4dea81e92175a8c5389df..86b17d6468f60ff1a79cf1decc81aae6eca5ffb9 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts21364a.rle] a
 
+sfixpcu a a -f
+checkshape a
index 4c6700ab66936ab1d507f81fcb653c910df090d8..bdb280ee3186887492853520bb224b027b224127 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_fra60275a.rle] a
 
+sfixpcu a a -f
+checkshape a
index b13bd89f4f3d106793e2fb3f432b755e4df7e652..d05841230aedc754125e56f5f32442a4495f16ee 100644 (file)
@@ -1,2 +1,5 @@
-restore [locate_data_file CTO904_fra61199a.rle] a
+# for "sfixpcu" command
+pload XSDRAW
 
+restore [locate_data_file CTO904_fra61199a.rle] a
+sfixpcu a a -f
index 6ec1bc79b5e2650df22cebd87c89089706366156..deae14f0e2bb60361edc91d6fc54a13325bf2b36 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_hkg60150a.rle] a
 
+sfixpcu a a -f
+checkshape a
index 087ecd6b9abdb73f8b81ff67d2db67b655ab1ad1..692cfc080c79524719b79744d532968770518201 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file pro13494a.rle] a
 
+sfixpcu a a -f
+checkshape a
index fac15258ef3727bebf26d94c5a2b078e2f05e96d..a1a392271fe12448731804f6c5413e721ca69d76 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_pro13495a.rle] a
 
+sfixpcu a a -f
+checkshape a
index 1159ffa1acc13e12b4434c9e6ad2b10dd1339a68..fe7c8ffc318a1f50c90fa58f6f628e4f1eb6c8db 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_pro13555a.rle] a
 
+sfixpcu a a -f
+checkshape a
index b67891fc62e8318a2f89ca8e32c1f1fa592e7285..a7229f20009d4960a3c02518d2d1106400685f06 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file pro13555b.rle] a
 
+sfixpcu a a -f
+checkshape a
index 393353fe2832b2d6fc77b30ef89a28cda20d4bd5..ebd05fe6eb155291a3a092fcba6dcc01baff9fa2 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file cts20461.rle] a
 
+sfixpcu a a -f
+checkshape a
index bae6d4a67ffdc9ccdcf799a7f84e2c03766cae31..9d595554a71c79cd083bcdea46393393dd61e016 100644 (file)
@@ -1,2 +1,8 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO909_tool_2.brep] a
 
+sfixpcu a a -f
+checkshape a
+
index fddef1abbb77ba61758aa670eb481d0bac267c60..72717ec518ab8782477d57a4ff8e1be8400a8006 100644 (file)
@@ -1,3 +1,6 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 if {[string compare $command "SplitAngle"] == 0 } {
     set os "ALL"
     if {[array get env os_type] != ""} {
@@ -14,3 +17,4 @@ if {[string compare $command "SplitAngle"] == 0 } {
 
 restore [locate_data_file cd.brep] a
 
+sfixpcu a a -f
\ No newline at end of file
index 4d1cb5c72b528a5b4eba44324679ccd0cfcb89ab..da90c59d0f9def3874f96ef214babc2af3fcf5b6 100644 (file)
@@ -1,3 +1,6 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 if {[string compare $command "SplitAngle"] == 0 } {
     set os "ALL"
     if {[array get env os_type] != ""} {
@@ -14,3 +17,4 @@ if {[string compare $command "SplitAngle"] == 0 } {
 
 restore [locate_data_file cg.brep] a
 
+sfixpcu a a -f
index 349893a696917a1d4ddef34adf205aacd8290233..a3952b07c0292d6d9fe22d3a1ebe77df0a575ae7 100644 (file)
@@ -1,2 +1,6 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file pd.brep] a
 
+sfixpcu a a -f
index c0e3420db7f1bb656a3d934612bd8d12266b4c70..e50010a14e5a48ddb8a933360ead759397b4d728 100644 (file)
@@ -1,2 +1,5 @@
-restore [locate_data_file pg.brep] a
+# for "sfixpcu" command
+pload XSDRAW
 
+restore [locate_data_file pg.brep] a
+sfixpcu a a -f
index 29dcccd1d0f7d3a0583676ebfcb09ceab0a3253b..067625c56b05239fd6982bd0f056f2854ed77bb2 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts16184a.rle] a
 
+sfixpcu a a -f
+checkshape a
index b5235cca24c4d7ab82d8e0708e6cb342707b13c9..d66038834acc3f99b591bd57c5cc875116a694cb 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts20374-part.rle] a
 
+sfixpcu a a -f
+checkshape a
index 64893d370a9b099f0cddf4257711a0a376d25a61..ec4eb1ab7c24e5c1affa156796727ebd714d02b0 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts20736a.rle] a
 
+sfixpcu a a -f
+checkshape a
index 51dad415146119fc505390ee35e361a0f1e29888..1fdd74478e40c4fcad00d1ca94b11521f6cdfa07 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts21180c.rle] a
 
+sfixpcu a a -f
+checkshape a
index 84147ad48712acf77d7763adfee70189dea38bc2..b723a2f64bf3c55b73e6d1db5ed6519f486747d4 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts21453a.rle] a
 
+sfixpcu a a -f
+checkshape a
index adb4356107344d8600f2109f60b6c34cbb81e626..d7addf13f240024210d6a9a3de6913a396f9c6ee 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts60005b.rle] a
 
+sfixpcu a a -f
+checkshape a
index ed3ba5bbcc83c7322f917b54097c39108f5f9f52..2e64de78074b4bd0f88e225703a344ccab26f5b0 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_fra60656-part.rle] a
 
+sfixpcu a a -f
+checkshape a
index 44adca40b63a2067f06997af299740d705ec0a7b..027117f943f9ce7b93b7779c1e95b50898e533eb 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_fra60656-tool.rle] a
 
+sfixpcu a a -f
+checkshape a
index ef2fe293ec0806a3ad112f3ec1d2a4c683966863..c30e4ca60631ae9e052bcb362f5fc199b23d267c 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_fra60810-part.rle] a
 
+sfixpcu a a -f
+checkshape a
index 9c38c227a15aee293d777b4268c91634f5009fff..36bdccaccba0421275eb79d053211360ec31f756 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_fra60810-tool.rle] a
 
+sfixpcu a a -f
+checkshape a
index d69615ef23b54c3198edcfdff57031d15abdae57..b4ea48d7caeb9f7a9b5419bfe336057d35d261ad 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ger60043-tool.rle] a
 
+sfixpcu a a -f
+checkshape a
index eea02548422f0c6ffc6829f52542d09061e09ebe..2d352c2678678e20486bdd58511636709ab02172 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ger60054b.rle] a
 
+sfixpcu a a -f
+checkshape a
index a5bf94398c96e5da51a69965055fc440f3cddee6..f69af51095ce6ec720aec92b568396674ddb116e 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_jap60038-part.rle] a
 
+sfixpcu a a -f
+checkshape a
index f935c1e3d4ff2c4a5127ddce970740615a0bbd1b..b4a129b2b4be23531d2c8681c70f289f0a4fa680 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ksi0014a.rle] a
 
+sfixpcu a a -f
+checkshape a
index 79d5ad224ae866fa4a78acb633cd1c48fb5b7a9b..276b82303f763c7e45eba47f295f17e1075f86d6 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_pro11828-tool.rle] a
 
+sfixpcu a a -f
+checkshape a
index 57b3955c3de32391fbcd26c03a8e7b6d4466cc6d..1a85b5f7b31417e33f4520637a45c1f28bb40abe 100644 (file)
@@ -4,5 +4,12 @@ if { [string compare $command "ShapeConvertRev"] == 0 } {
 if {[string compare $command "SplitAngle"] == 0 } {
     puts "TODO OCC23127 ALL: Faulty shapes in variables faulty_1 to faulty_4 "
 }
+
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_pro5363c.rle] a
 
+fixshape a a
+checkshape a
+
index 68bfb4c7d9c446495fe2637a3e9fd482a156205e..055b5217006e4a68aaf790d44743f28ee937b276 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_pro7637c_prism_oblong_dsg.rle] a
 
+sfixpcu a a -f
+checkshape a
index 15c6a5d05f9e9787cc5e80c348c79a2e730ca697..0e8eb3a7970d49d0d0bbab678c5f50e0a38e1be4 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_pro8934a.rle] a
 
+sfixpcu a a -f
+checkshape a
index cdd219272fee2dc98169b090413f12f734a3d7a0..829ae4f211fa52ee57c76a32380425a1c512fe8a 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO901_cts20150_outil.rle] a
 
+sfixpcu a a -f
+checkshape a
index 81e7f4ed102bb8ab48a3d5241613688147c89e98..42ae71e39d53fd17919bb017728126cd733deb14 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO901_cts20171_base.rle] a
 
+sfixpcu a a -f
+checkshape a
index aafb36e3b44178b6081058c22114808855241ece..611ce11f3cc51a0041071c5866a8780a56ea7671 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO901_cts20171_outil.rle] a
 
+sfixpcu a a -f
+checkshape a
index 7a6e6a177db57881c17bbda9fa4382dbb072894b..239b58e9abcf40f790d3532612f11d447dce371b 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO902_cts20452b.rle] a
 
+sfixpcu a a -f
+checkshape a
index 363a105529e09a501c3cb97a0225c6347ba6b26a..aa0c85544dab2f9b909698f671a3ad413cd87213 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO902_cts20455-tool.rle] a
 
+sfixpcu a a -f
+checkshape a
index 6922d37866967e48eaab0c0866d2bceba39edca8..25860c5c9d1b34e0a3650af460126688bff30aac 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO902_cts20459-part.rle] a
 
+sfixpcu a a -f
+checkshape a
index 8187c6253d02fd779d357e75d5a6af73ad093adb..228af239422a05045f0f5d327010570b2d37e912 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO902_cts20489-tool.rle] a
 
+sfixpcu a a -f
+checkshape a
index bf96d7220f6647b57a61e3b2d4574f02ae6fea9b..af483e62a3a32dafe2710706348b276779ccedb2 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO902_cts20498-part.rle] a
 
+sfixpcu a a -f
+checkshape a
index 7d4b41c996a80f42fab81f088b618a98bbf17f3c..6c0bbf5b9238d737ae2ce46efc5517ab08f513dd 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO902_cts20503-part.rle] a
 
+sfixpcu a a -f
+checkshape a
index 9e0707727ad544f0e84575d3b290fd99b7aafcd0..1da02555543ae8803173217425bb804521450a41 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file cts20551-tool.rle] a
 
+sfixpcu a a -f
+checkshape a
index bc61a7ccb678e1f18c1227dd13d6df3c770369e8..d3a4f6c9e576429615302041b7dc48a1037603d9 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts20280b.rle] a
 
+sfixpcu a a -f
+checkshape a
index 95f3c49450bc102e01dfd648098eb4d5d16e772c..d33e0681778f9c610a435b44ab07f8864f9ed01f 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file cts21208b.rle] a
 
+sfixpcu a a -f
+checkshape a
index c7fa83017bb8bb37631f28c858f4fa5d676466a7..075a1dca58fbef0895ad9bb3ecc8e95061996a27 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_hkg60156a.rle] a
 
+sfixpcu a a -f
+checkshape a
index 6ea622fa383c906282d983aea6aba4355d83a65d..a2058f3a03f1e9145276b53056450f8d1cbd1900 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_pro12956b.rle] a
 
+sfixpcu a a -f
+checkshape a
index b5c9268a7a5af9ddf1fef3cfa43097e74cae8945..e11378fc4fe94836c53b1adc09d1d78e6b492c14 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_pro13075a.rle] a
 
+sfixpcu a a -f
+checkshape a
index dd42e80c0a628b08d01a740118b8248bae752946..6ecdb08737fc2ac9285d7ed1f9d15125b58f9e09 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file pro14892a.rle] a
 
+sfixpcu a a -f
+checkshape a
index ad8c3b016867bce1f04ce0ff9d81b5c98401636e..2d90a8a225d9ef3822f601fe8752ff42cf3bb949 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_pro14893a.rle] a
 
+sfixpcu a a -f
+checkshape a
index eec5e0c3c30dbad6c755a31469ab3e997008a9fe..5882d4698cb9f89404a34ee3f95b863bda464c18 100644 (file)
@@ -1 +1,6 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE901_cts21gft.rle] a
+
+sfixpcu a a -f
index 37a1ea83d03db2d2c00448f37dfdbca520400048..fba9dd2cfb1a9223693a63dc6e09974d41f40c47 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CTS18683.rle] a
+
+fixshape a a
+checkshape a
index dfa064dcc23d5518e02705a584bb16e51aeb394b..c460548a5b4c9561febcd17cd7c781deb8681756 100644 (file)
@@ -1 +1,6 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE901_cts21gft.rle]  a
+
+sfixpcu a a -f
index 26b85aef238479ca670f16cf37f90433c2c9e184..642a237c1a2f582fef17678ebfcd6c179a11057e 100644 (file)
@@ -1,2 +1,6 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 puts [DT_ApplySeq result a MDTV ToV4]
+sfixpcu result result -f
 puts [checkshape result]
index f02df9b4bc62a7281279b59848622641a86e751a..bd67c4a78ea6ddbc646df751f3e0ed8ba8360da3 100644 (file)
@@ -1,2 +1,6 @@
+# for "fixshape" command
+pload XSDRAW
+
 fixwgaps result a 0.001
+sfixpcu result result -f
 puts [checkshape result]
index b17db0351a9e64ced2a2a89c982f6195d17cc0b1..87ef36b9f8f802865b96bf000e0ccefee64b6410 100644 (file)
@@ -1,2 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 puts [fixshape result a 0.001 0.005]
+sfixpcu result result -f
+
 puts [checkshape result]
index 59747f9eec7a8169076f7b8174aa61bf2b5c3e43..51c597f2798151eca96d5a0f93fbb5b1d41f6319 100644 (file)
@@ -1 +1,6 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE903_ger60ggw.rle] result
+
+sfixpcu result result -f
index eec5e0c3c30dbad6c755a31469ab3e997008a9fe..5882d4698cb9f89404a34ee3f95b863bda464c18 100644 (file)
@@ -1 +1,6 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE901_cts21gft.rle] a
+
+sfixpcu a a -f
index 8141ff8ae0c76caea9db088f2a5152bc9d589e35..54728a3afe663d31d0a8ab54bfb5271e876ecb27 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CFI_cfi90fjb.rle] a
+
+fixshape a a
+checkshape a
index 4b4421c99eab19e1e6fc583a4640c1d5d7a21c1b..2689a5105ae576a82526598ff26a862148a6bd4a 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CFI_pro5807.rle] a
+
+fixshape a a
+checkshape a
index 3a56303df604d2f1a13423db213567914cd09fe1..b5b908915d75deb01d6e734807854328c1ff126c 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ger60054a.rle] a
+
+fixshape a a
+checkshape a
index 37a1ea83d03db2d2c00448f37dfdbca520400048..fba9dd2cfb1a9223693a63dc6e09974d41f40c47 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CTS18683.rle] a
+
+fixshape a a
+checkshape a
index de2a8d1dd90622490bc2210982cb9afe60a06dc1..9cc95a01bacb410229b11abbb26b9fa409de3f8a 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CTS18826.rle] a
+
+fixshape a a
+checkshape a
index f6eca858f51ed46c0ffb8eec32339be3a31d9e54..23c991e1c3e3b3154f553cc326cf7870f834e6c0 100644 (file)
@@ -1 +1,2 @@
 restore [locate_data_file aaa.rle] a
+checkshape a
index eec5e0c3c30dbad6c755a31469ab3e997008a9fe..ec6d62aafc158d7e56b4c7403ae14144474bf683 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE901_cts21gft.rle] a
+
+sfixpcu a a -f
+checkshape a
index 8141ff8ae0c76caea9db088f2a5152bc9d589e35..54728a3afe663d31d0a8ab54bfb5271e876ecb27 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CFI_cfi90fjb.rle] a
+
+fixshape a a
+checkshape a
index 4b4421c99eab19e1e6fc583a4640c1d5d7a21c1b..2689a5105ae576a82526598ff26a862148a6bd4a 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CFI_pro5807.rle] a
+
+fixshape a a
+checkshape a
index 3a56303df604d2f1a13423db213567914cd09fe1..b5b908915d75deb01d6e734807854328c1ff126c 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ger60054a.rle] a
+
+fixshape a a
+checkshape a
index 37a1ea83d03db2d2c00448f37dfdbca520400048..fba9dd2cfb1a9223693a63dc6e09974d41f40c47 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CTS18683.rle] a
+
+fixshape a a
+checkshape a
index de2a8d1dd90622490bc2210982cb9afe60a06dc1..9cc95a01bacb410229b11abbb26b9fa409de3f8a 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CTS18826.rle] a
+
+fixshape a a
+checkshape a
index ba59400f6c0b549d837781e3b43aabebaab532ed..723a6d07a3bf3d1887ea834c9fdb822fa7928c78 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE900_cts20geq.rle] a
+
+sfixpcu a a -f
+checkshape a
index b39d73e3131628b16ee1c34e94e5552e6129304c..c181638d71a2a1e6c8a5e9e18bed7ae633e0510a 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFI_pro5545.rle] a
+
+sfixpcu a a -f
+checkshape a
index 3a56303df604d2f1a13423db213567914cd09fe1..b5b908915d75deb01d6e734807854328c1ff126c 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ger60054a.rle] a
+
+fixshape a a
+checkshape a
index 18dbcff20e48fa21f151a56adfd2626bbd7ee536..9a9a6e20da8615123561ca000b7b9f3dfba47aab 100644 (file)
@@ -1 +1,6 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ger60598c.rle] a
+
+sfixpcu a a -f
index becbc0d3a257e8693fa7792f20a6fcd130dc5da3..0e8eb3a7970d49d0d0bbab678c5f50e0a38e1be4 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_pro8934a.rle] a
+
+sfixpcu a a -f
+checkshape a
index fa408efdf89f69ddade5327badba2bc2e80f1bf5..9629f2327b2757e2a6d0c7736d42a6c73ca57043 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts20960a.rle] a
+
+sfixpcu a a -f
+checkshape a
index a38afd788b28e2432ebca5f2c0fb500896afe2e9..86b17d6468f60ff1a79cf1decc81aae6eca5ffb9 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts21364a.rle] a
+
+sfixpcu a a -f
+checkshape a
index ba59400f6c0b549d837781e3b43aabebaab532ed..723a6d07a3bf3d1887ea834c9fdb822fa7928c78 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE900_cts20geq.rle] a
+
+sfixpcu a a -f
+checkshape a
index 9897b4f9f7c2b5a9b9c9b90e0e7972ae738714e6..637c5d3a9c263dbf40aaeefeb5cbea12d14aa073 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFI_pro10117.rle] a
+
+sfixpcu a a -f
+checkshape a
index 3a56303df604d2f1a13423db213567914cd09fe1..b5b908915d75deb01d6e734807854328c1ff126c 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ger60054a.rle] a
+
+fixshape a a
+checkshape a
index eec5e0c3c30dbad6c755a31469ab3e997008a9fe..5882d4698cb9f89404a34ee3f95b863bda464c18 100644 (file)
@@ -1 +1,6 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE901_cts21gft.rle] a
+
+sfixpcu a a -f
index 8141ff8ae0c76caea9db088f2a5152bc9d589e35..54728a3afe663d31d0a8ab54bfb5271e876ecb27 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CFI_cfi90fjb.rle] a
+
+fixshape a a
+checkshape a
index 4b4421c99eab19e1e6fc583a4640c1d5d7a21c1b..2689a5105ae576a82526598ff26a862148a6bd4a 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CFI_pro5807.rle] a
+
+fixshape a a
+checkshape a
index 85817a2321198eb341c307541ac5b5a62dae12b7..7ce7ba6f3c79e9a16b1b19d9c4f08886a62701a7 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CHE_cc4.rle] a
+
+fixshape a a
+checkshape a
index 3a56303df604d2f1a13423db213567914cd09fe1..b5b908915d75deb01d6e734807854328c1ff126c 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ger60054a.rle] a
+
+fixshape a a
+checkshape a
index 37a1ea83d03db2d2c00448f37dfdbca520400048..fba9dd2cfb1a9223693a63dc6e09974d41f40c47 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CTS18683.rle] a
+
+fixshape a a
+checkshape a
index de2a8d1dd90622490bc2210982cb9afe60a06dc1..9cc95a01bacb410229b11abbb26b9fa409de3f8a 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CTS18826.rle] a
+
+fixshape a a
+checkshape a
index 13ee3b2de0ad52f81f12b597a40e7115d02fe963..e27bfcb4ed9e2859475b3c3e6634fa79c0d9e099 100644 (file)
@@ -1,6 +1,12 @@
 #old file filtercb
 
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CHE_filter.rle] s
+sfixpcu s s -f
+checkshape s
+
 OFFSETSHAPE -.0015 {s_26 s_27 s_28 s_29} $calcul $type
 
 set volume 6.38048e-05
index e485d55842b4b345cf16bd196329de7519c18e00..ae34dbd06c62766001cff1b84b65ceecf0c8e40c 100644 (file)
@@ -1 +1,6 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CDA900_pro10142.rle] a
+sfixpcu a a -f
+checkshape a
index 41bceda46279a0b9126e218ca4666bab627d6c0b..81fa10f4c3db5c10f887250b423e9d2cd028beac 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE900_cts20gaj.rle] a
+
+sfixpcu a a -f
+checkshape a
index c61a85d98945fdc7854b516c98c2965c56e1808b..3be328cf9083e11554c0171a2cb2e4cec634a49c 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file cts20170_base.rle] a
+
+sfixpcu a a -f
+checkshape a
index 245f9f17bc84ee13d6d40c17125e87ed916a0f47..276b82303f763c7e45eba47f295f17e1075f86d6 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_pro11828-tool.rle] a
+
+sfixpcu a a -f
+checkshape a
index ba59400f6c0b549d837781e3b43aabebaab532ed..723a6d07a3bf3d1887ea834c9fdb822fa7928c78 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE900_cts20geq.rle] a
+
+sfixpcu a a -f
+checkshape a
index cf06abb26b032f070d95669e8abfab3fbe7540d1..067625c56b05239fd6982bd0f056f2854ed77bb2 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts16184a.rle] a
+
+sfixpcu a a -f
+checkshape a
index b5c61684096419fcb3e4bd4eb9cfe2b3654d31cc..e8a13e4e124b709dd60ab7e23d89945108ce4ca7 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts19305-part.rle] a
+
+sfixpcu a a -f
+checkshape a
index eec5e0c3c30dbad6c755a31469ab3e997008a9fe..ec6d62aafc158d7e56b4c7403ae14144474bf683 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE901_cts21gft.rle] a
+
+sfixpcu a a -f
+checkshape a
index b66afebba0a37c5c0e319c3c54d5c23d82fea24f..f69af51095ce6ec720aec92b568396674ddb116e 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_jap60038-part.rle] a
+
+sfixpcu a a -f
+checkshape a
index 877acd65f6112a1bf99e6c6fd458498b436c4bb2..b4a129b2b4be23531d2c8681c70f289f0a4fa680 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ksi0014a.rle] a
+
+sfixpcu a a -f
+checkshape a
index d6d8d841121ce1f69b2309c197d5bb9065bf3638..136032ed6393955d4b05db15321b76822b60a044 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE903_cts20ghb.rle] a
+
+sfixpcu a a -f
+checkshape a
index f0aa4156ea5b642d3017368a2574098ebdcaba02..7a3510f05db9adf22895327b4609b2dcf49586b5 100644 (file)
@@ -1 +1,6 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE903_cts21ggr.rle] a
+sfixpcu a a -f
+checkshape a
index c54aa6e648b3585a9ae6b7eeb6c1abe1cf293a79..fba052c3fa0cdc00a9ef8ae9f08b68ff571f5aa5 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE903_ger60ggw.rle] a
+
+sfixpcu a a -f
+checkshape a
index 7ff8b79661898980ae27897b2617cfd64648036a..9d3f946c9a0f4e4505b6dbf53e8e8ebb94f0020c 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE903_pro16gha.rle] a
+
+sfixpcu a a -f
+checkshape a
index 5990035b99d772fd99b0d6a8bf96b4471c048d6a..8436ba83fc57dab01eecfb36267db8e85fdbed4c 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE900_pro16gdq.rle] a
+
+sfixpcu a a -f
+checkshape a
index 04ae245b24d1e30ec364f8086b0191f8a189c048..239b58e9abcf40f790d3532612f11d447dce371b 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO902_cts20452b.rle] a
+
+sfixpcu a a -f
+checkshape a
index 14a1b1fb7bc846181d83377575c92f08f1357483..2d90a8a225d9ef3822f601fe8752ff42cf3bb949 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_pro14893a.rle] a
+
+sfixpcu a a -f
+checkshape a
index 547d235c280c1d346408794d103c3995578fdb09..aa0c85544dab2f9b909698f671a3ad413cd87213 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO902_cts20455-tool.rle] a
+
+sfixpcu a a -f
+checkshape a
index 7740634220214173a884820f55c83e7c9047a0bb..bcdb0bef5f8dcc7e24599768349e060e6782a9d6 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFE_osa_sgad.rle] a
+
+sfixpcu a a -f
+checkshape a
index 8141ff8ae0c76caea9db088f2a5152bc9d589e35..54728a3afe663d31d0a8ab54bfb5271e876ecb27 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CFI_cfi90fjb.rle] a
+
+fixshape a a
+checkshape a
index f1c634b7eec0db32f7c3d99825dd948d26fa6b23..b65121f46b97136ec22344b486281d88f9d50778 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFI_cfi90fjc.rle] a
+
+sfixpcu a a -f
+checkshape a
index 9897b4f9f7c2b5a9b9c9b90e0e7972ae738714e6..637c5d3a9c263dbf40aaeefeb5cbea12d14aa073 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFI_pro10117.rle] a
+
+sfixpcu a a -f
+checkshape a
index 403194583bb88215a006b5f1c9e7b00eb5bd319a..e5b68800697e2a828f35d59c0d0f6869c89074b6 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFI_pro11850.rle] a
+
+sfixpcu a a -f
+checkshape a
index b39d73e3131628b16ee1c34e94e5552e6129304c..c181638d71a2a1e6c8a5e9e18bed7ae633e0510a 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFI_pro5545.rle] a
+
+sfixpcu a a -f
+checkshape a
index 4b4421c99eab19e1e6fc583a4640c1d5d7a21c1b..2689a5105ae576a82526598ff26a862148a6bd4a 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CFI_pro5807.rle] a
+
+fixshape a a
+checkshape a
index 8f797d6115b4eb46be7a56c91505ccdac082b1e4..25860c5c9d1b34e0a3650af460126688bff30aac 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO902_cts20459-part.rle] a
+
+sfixpcu a a -f
+checkshape a
index 5fba89429dfe23e5420181eeb8aae6e4c390eb88..9f35434c97e2dc2f45c545043de8ec3c0645b2ba 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFI_pro6944.rle] a
+
+sfixpcu a a -f
+checkshape a
index a5cf807bedc3aa689e3fc06820664b077796a6e1..ef0851331ed8b659ec59bf30bb00e3848b3d1cdb 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFI_pro8783.rle] a
+
+sfixpcu a a -f
+checkshape a
index 97773f234e6feee452e555443aa1cd41a1102042..c055357a32284d8642f597102b038dbb13662402 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CFI_pro8792.rle] a
+
+sfixpcu a a -f
+checkshape a
index 7a93af3e24d91b6d7bc73573aa0013b9676bd155..228af239422a05045f0f5d327010570b2d37e912 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO902_cts20489-tool.rle] a
+
+sfixpcu a a -f
+checkshape a
index 02e03b7d0ae2eab462b434a7679c079a720f34ed..af483e62a3a32dafe2710706348b276779ccedb2 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO902_cts20498-part.rle] a
+
+sfixpcu a a -f
+checkshape a
index 43aecd596a100295ce2fed3b5bfb281ceb9854dc..6c0bbf5b9238d737ae2ce46efc5517ab08f513dd 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO902_cts20503-part.rle] a
+
+sfixpcu a a -f
+checkshape a
index c67082ec990ba3fd6b16d3a6dd82b11dd7969584..1e5ea3f76432811689e4bdb93ad14c483e5ddcdf 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CIN900_cts20hlh.rle] a
+
+sfixpcu a a -f
+checkshape a
index 7c5e425520b9b9c2f0b8d42eda9eb1fce5503ae0..60be48fdb050b564f750325d1a41b8063a876009 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CIN900_cts21hlr.rle] a
+
+sfixpcu a a -f
+checkshape a
index 5d9ae65753073f8d3d762b3e4d69f9629a2610ac..bdb280ee3186887492853520bb224b027b224127 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_fra60275a.rle] a
+
+sfixpcu a a -f
+checkshape a
index a976796de3dc70d3044d843c3f9d7f103e61e502..e11378fc4fe94836c53b1adc09d1d78e6b492c14 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_pro13075a.rle] a
+
+sfixpcu a a -f
+checkshape a
index 3a401f686677ece1f76c594bcd41cdbd57871cd4..4d715fa6a1f2baa4088006c5d35bf6874c8de72e 100644 (file)
@@ -1,2 +1,8 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CHE_filter.rle] a
+sfixpcu a a -f
+checkshape a
+
 set nb_f 16
index 3776524c8912d1efb596a4c512cc4fe0f54786cd..22eeb18b63052f7005a863c443012895b333c114 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts20907a.rle] a
+
+sfixpcu a a -f
+checkshape a
index fa408efdf89f69ddade5327badba2bc2e80f1bf5..9629f2327b2757e2a6d0c7736d42a6c73ca57043 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts20960a.rle] a
+
+sfixpcu a a -f
+checkshape a
index 1c3216d2f1776a93ebb55c5d37e5fda3ad436090..62fde92e186e6d6ede58a8bf34d2a6bc780f922c 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts20974b.rle] a
+
+sfixpcu a a -f
+checkshape a
index 778808b60e64ba872ad38587b939a9e9348f40d2..a1a523f35206590cdb7b6c621429887ef6ac425f 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts21124a.rle] a
+
+sfixpcu a a -f
+checkshape a
index b4052b52bc2651d7d0b2303e928840381dd0a50d..eb6345004030757ae016fb73da5546dca04d99cf 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts21208a.rle] a
+
+sfixpcu a a -f
+checkshape a
index 08fadfd50c7c628550769762754ac9ccf9ed2ddd..a70cc818f8729cfbf842fb4cb8d2174f5bced52c 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts21210a.rle] a
+
+sfixpcu a a -f
+checkshape a
index c27faf3d8624bae278ce49ad0e8d4434c1d83ec5..d66038834acc3f99b591bd57c5cc875116a694cb 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts20374-part.rle] a
+
+sfixpcu a a -f
+checkshape a
index 37f59f928f51b338a42aa5d5c440e4be28f04f3c..ec4eb1ab7c24e5c1affa156796727ebd714d02b0 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts20736a.rle] a
+
+sfixpcu a a -f
+checkshape a
index 203d8fd8ae7dbcc68f7263d2a6dcb06389f75100..a1a392271fe12448731804f6c5413e721ca69d76 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_pro13495a.rle] a
+
+sfixpcu a a -f
+checkshape a
index 7df324a2ae05ccd6f49c827b45b976c62c582fcf..1fdd74478e40c4fcad00d1ca94b11521f6cdfa07 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts21180c.rle] a
+
+sfixpcu a a -f
+checkshape a
index 8d53a0b8c706e2a366464e6ff71af44c7eed2f74..b723a2f64bf3c55b73e6d1db5ed6519f486747d4 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts21453a.rle] a
+
+sfixpcu a a -f
+checkshape a
index 6259b2b6bd7cb33cd76444daa6a212758bd6dce3..d7addf13f240024210d6a9a3de6913a396f9c6ee 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_cts60005b.rle] a
+
+sfixpcu a a -f
+checkshape a
index da7f41199367c52c1c725ff391a0d2e575fda3fb..2e64de78074b4bd0f88e225703a344ccab26f5b0 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_fra60656-part.rle] a
+
+sfixpcu a a -f
+checkshape a
index c98674f63ee8116f0126f46df31775d825bcab3c..027117f943f9ce7b93b7779c1e95b50898e533eb 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_fra60656-tool.rle] a
+
+sfixpcu a a -f
+checkshape a
index c79e72c7ea0ee886fb7698012a29fd099be73465..c30e4ca60631ae9e052bcb362f5fc199b23d267c 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_fra60810-part.rle] a
+
+sfixpcu a a -f
+checkshape a
index 9c8ef2b19becf42d7ce682c66387a39e14789a35..36bdccaccba0421275eb79d053211360ec31f756 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_fra60810-tool.rle] a
+
+sfixpcu a a -f
+checkshape a
index b75002a7376367b915e3d1c65f28eba15cc67009..b4ea48d7caeb9f7a9b5419bfe336057d35d261ad 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ger60043-tool.rle] a
+
+sfixpcu a a -f
+checkshape a
index 3a56303df604d2f1a13423db213567914cd09fe1..b5b908915d75deb01d6e734807854328c1ff126c 100644 (file)
@@ -1 +1,7 @@
+# for "fixshape" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ger60054a.rle] a
+
+fixshape a a
+checkshape a
index 7d3a8de26251787e355adf2da891e8d92d67b5ee..2d352c2678678e20486bdd58511636709ab02172 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ger60054b.rle] a
+
+sfixpcu a a -f
+checkshape a
index ccf8cd0431442fe6164c4b800a762f836e7ea044..56c2e9324978c6024c9837ae61dae09eaef9e70f 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ger60239b.rle] a
+
+sfixpcu a a -f
+checkshape a
index 18dbcff20e48fa21f151a56adfd2626bbd7ee536..9a9a6e20da8615123561ca000b7b9f3dfba47aab 100644 (file)
@@ -1 +1,6 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_ger60598c.rle] a
+
+sfixpcu a a -f
index 4ade6718a9348b6b5cfa66257d945c52cc1c6d33..055b5217006e4a68aaf790d44743f28ee937b276 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_pro7637c_prism_oblong_dsg.rle] a
+
+sfixpcu a a -f
+checkshape a
index becbc0d3a257e8693fa7792f20a6fcd130dc5da3..0e8eb3a7970d49d0d0bbab678c5f50e0a38e1be4 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_pro8934a.rle] a
+
+sfixpcu a a -f
+checkshape a
index 0592537508a12f626fcb9b81c325adf36975d055..95b60d03623be06307ccc534a2c1b28649a6d24d 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO900_pro8934b.rle] a
+
+sfixpcu a a -f
+checkshape a
index 38a1a8231629509bcbf4cac2f97bd7c90ca99a08..89124f9cd1dd3c95109c5a788ad3f83f4b07e686 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO901_cts20150_base.rle] a
+
+sfixpcu a a -f
+checkshape a
index bd74df0eaa7a257920a9d2480affa9f24e47d846..829ae4f211fa52ee57c76a32380425a1c512fe8a 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO901_cts20150_outil.rle] a
+
+sfixpcu a a -f
+checkshape a
index 9781fff712188ebb823bf9ea0b8e7ab85cd844d6..42ae71e39d53fd17919bb017728126cd733deb14 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO901_cts20171_base.rle] a
+
+sfixpcu a a -f
+checkshape a
index 0401c96e04f62baa46952619b7a239097e024266..611ce11f3cc51a0041071c5866a8780a56ea7671 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO901_cts20171_outil.rle] a
+
+sfixpcu a a -f
+checkshape a
index bb7c99db3d075071bdb406e7b41dadce4f2943ff..634d4b6b90155c6d62f2d0ac3cbca374601ced81 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts20280a.rle] a
+
+sfixpcu a a -f
+checkshape a
index 0873c0bf9f239e2826c06b4e31d40db6ae17cab3..d3a4f6c9e576429615302041b7dc48a1037603d9 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts20280b.rle] a
+
+sfixpcu a a -f
+checkshape a
index a38afd788b28e2432ebca5f2c0fb500896afe2e9..86b17d6468f60ff1a79cf1decc81aae6eca5ffb9 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_cts21364a.rle] a
+
+sfixpcu a a -f
+checkshape a
index 655a544394e21ec8cea7ebc2f91300d7d07d8fa5..deae14f0e2bb60361edc91d6fc54a13325bf2b36 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_hkg60150a.rle] a
+
+sfixpcu a a -f
+checkshape a
index fd30f76a83fa29d2d419665be188786e79056905..075a1dca58fbef0895ad9bb3ecc8e95061996a27 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_hkg60156a.rle] a
+
+sfixpcu a a -f
+checkshape a
index 879598aed1b3df788ab39da9f99236ebb0ef6a09..a2058f3a03f1e9145276b53056450f8d1cbd1900 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_pro12956b.rle] a
+
+sfixpcu a a -f
+checkshape a
index 29249ce1d3ddffa4e322d1c30bacade3eb0d09f2..fe7c8ffc318a1f50c90fa58f6f628e4f1eb6c8db 100644 (file)
@@ -1 +1,7 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO904_pro13555a.rle] a
+
+sfixpcu a a -f
+checkshape a
index ab8d47065e1a29705ec550be565c8e43297209a2..4e480f714f4131e545e185ed7973bf69dd27c10b 100644 (file)
@@ -1,4 +1,11 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO909_tool_2.brep] Shape1
+
+sfixpcu Shape1 Shape1 -f
+checkshape Shape1
+
 XNewDoc D_First
 
 XAddShape D_First Shape1
index 7e95ccfa3d7fe05057aa2b0e7439cd31e805388e..58bcfe041284a3c63f2273016b840b2a406d96f3 100644 (file)
@@ -1,4 +1,11 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO909_tool_2.brep] Shape1
+
+sfixpcu Shape1 Shape1 -f
+checkshape Shape1
+
 XNewDoc D_First
 
 XAddShape D_First Shape1
index cbdf500e89d0fce0fe3f30ffd999de0efb1558bb..817f5083364e91475f70e94a2195b8a1878a761c 100644 (file)
@@ -1,4 +1,11 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO909_tool_2.brep] Shape1
+
+sfixpcu Shape1 Shape1 -f
+checkshape Shape1
+
 XNewDoc D_First
 
 XAddShape D_First Shape1
index bf52405f8e5da62c5e7bd5a8ac67d7d993c8603d..4770cdc96033189d65224485b096eeffb8b8b604 100644 (file)
@@ -1,4 +1,11 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO909_tool_2.brep] Shape1
+
+sfixpcu Shape1 Shape1 -f
+checkshape Shape1
+
 XNewDoc D_First
 
 XAddShape D_First Shape1
index 0b1fbaa3d5471ea0585031ebf5f92e0d654497e3..cf6c9ffc4a7bd8002b88a46bc8d0735c56881670 100644 (file)
@@ -1,4 +1,11 @@
+# for "sfixpcu" command
+pload XSDRAW
+
 restore [locate_data_file CTO909_tool_2.brep] Shape1
+
+sfixpcu Shape1 Shape1 -f
+checkshape Shape1
+
 XNewDoc D_First
 
 XAddShape D_First Shape1