1 // Created on: 1995-12-08
2 // Created by: Jacques GOUSSARD
3 // Copyright (c) 1995-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
6 // This file is part of Open CASCADE Technology software library.
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
18 #include <BRep_Tool.hxx>
19 #include <BRepCheck.hxx>
20 #include <BRepCheck_ListIteratorOfListOfStatus.hxx>
21 #include <BRepCheck_Wire.hxx>
23 #include <TopoDS_Edge.hxx>
24 #include <TopoDS_Face.hxx>
25 #include <TopoDS_Iterator.hxx>
26 #include <TopoDS_Wire.hxx>
28 //=======================================================================
31 //=======================================================================
32 void BRepCheck::Add(BRepCheck_ListOfStatus& lst, const BRepCheck_Status stat)
34 BRepCheck_ListIteratorOfListOfStatus it(lst);
36 if (it.Value() == BRepCheck_NoError && stat != BRepCheck_NoError) {
40 if (it.Value() == stat) {
48 //=======================================================================
49 //function : SelfIntersection
51 //=======================================================================
52 Standard_Boolean BRepCheck::SelfIntersection(const TopoDS_Wire& W,
53 const TopoDS_Face& myFace,
57 Handle(BRepCheck_Wire) chkw = new BRepCheck_Wire(W);
58 BRepCheck_Status stat = chkw->SelfIntersect(myFace,RetE1,RetE2);
59 return (stat == BRepCheck_SelfIntersectingWire);
61 //=======================================================================
64 //=======================================================================
65 void BRepCheck::Print(const BRepCheck_Status stat,
70 case BRepCheck_NoError:
71 OS << "BRepCheck_NoError\n";
73 case BRepCheck_InvalidPointOnCurve:
74 OS << "BRepCheck_InvalidPointOnCurve\n";
76 case BRepCheck_InvalidPointOnCurveOnSurface:
77 OS << "BRepCheck_InvalidPointOnCurveOnSurface\n";
79 case BRepCheck_InvalidPointOnSurface:
80 OS << "BRepCheck_InvalidPointOnSurface\n";
82 case BRepCheck_No3DCurve:
83 OS << "BRepCheck_No3DCurve\n";
85 case BRepCheck_Multiple3DCurve:
86 OS << "BRepCheck_Multiple3DCurve\n";
88 case BRepCheck_Invalid3DCurve:
89 OS << "BRepCheck_Invalid3DCurve\n";
91 case BRepCheck_NoCurveOnSurface:
92 OS << "BRepCheck_NoCurveOnSurface\n";
94 case BRepCheck_InvalidCurveOnSurface:
95 OS << "BRepCheck_InvalidCurveOnSurface\n";
97 case BRepCheck_InvalidCurveOnClosedSurface:
98 OS << "BRepCheck_InvalidCurveOnClosedSurface\n";
100 case BRepCheck_InvalidSameRangeFlag:
101 OS << "BRepCheck_InvalidSameRangeFlag\n";
103 case BRepCheck_InvalidSameParameterFlag:
104 OS << "BRepCheck_InvalidSameParameterFlag\n";
106 case BRepCheck_InvalidDegeneratedFlag:
107 OS << "BRepCheck_InvalidDegeneratedFlag\n";
109 case BRepCheck_FreeEdge:
110 OS << "BRepCheck_FreeEdge\n";
112 case BRepCheck_InvalidMultiConnexity:
113 OS << "BRepCheck_InvalidMultiConnexity\n";
115 case BRepCheck_InvalidRange:
116 OS << "BRepCheck_InvalidRange\n";
118 case BRepCheck_EmptyWire:
119 OS << "BRepCheck_EmptyWire\n";
121 case BRepCheck_RedundantEdge:
122 OS << "BRepCheck_RedundantEdge\n";
124 case BRepCheck_SelfIntersectingWire:
125 OS << "BRepCheck_SelfIntersectingWire\n";
127 case BRepCheck_NoSurface:
128 OS << "BRepCheck_NoSurface\n";
130 case BRepCheck_InvalidWire:
131 OS << "BRepCheck_InvalidWire\n";
133 case BRepCheck_RedundantWire:
134 OS << "BRepCheck_RedundantWire\n";
136 case BRepCheck_IntersectingWires:
137 OS << "BRepCheck_IntersectingWires\n";
139 case BRepCheck_InvalidImbricationOfWires:
140 OS << "BRepCheck_InvalidImbricationOfWires\n";
142 case BRepCheck_EmptyShell:
143 OS << "BRepCheck_EmptyShell\n";
145 case BRepCheck_RedundantFace:
146 OS << "BRepCheck_RedundantFace\n";
148 case BRepCheck_UnorientableShape:
149 OS << "BRepCheck_UnorientableShape\n";
151 case BRepCheck_NotClosed:
152 OS << "BRepCheck_NotClosed\n";
154 case BRepCheck_NotConnected:
155 OS << "BRepCheck_NotConnected\n";
157 case BRepCheck_SubshapeNotInShape:
158 OS << "BRepCheck_SubshapeNotInShape\n";
160 case BRepCheck_BadOrientation:
161 OS << "BRepCheck_BadOrientation\n";
163 case BRepCheck_BadOrientationOfSubshape:
164 OS << "BRepCheck_BadOrientationOfSubshape\n";
166 case BRepCheck_CheckFail:
167 OS << "BRepCheck_CheckFail\n";
169 case BRepCheck_InvalidPolygonOnTriangulation:
170 OS << "BRepCheck_InvalidPolygonOnTriangulation\n";
172 case BRepCheck_InvalidToleranceValue:
173 OS << "BRepCheck_InvalidToleranceValue\n";
175 case BRepCheck_InvalidImbricationOfShells:
176 OS << "BRepCheck_InvalidImbricationOfShells\n";
178 case BRepCheck_EnclosedRegion:
179 OS << "BRepCheck_EnclosedRegion\n";