0024166: Unable to create file with "Save" menu of voxeldemo Qt sample
[occt.git] / src / BRepCheck / BRepCheck.cxx
CommitLineData
b311480e 1// Created on: 1995-12-08
2// Created by: Jacques GOUSSARD
3// Copyright (c) 1995-1999 Matra Datavision
4// Copyright (c) 1999-2012 OPEN CASCADE SAS
5//
6// The content of this file is subject to the Open CASCADE Technology Public
7// License Version 6.5 (the "License"). You may not use the content of this file
8// except in compliance with the License. Please obtain a copy of the License
9// at http://www.opencascade.org and read it completely before using this file.
10//
11// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13//
14// The Original Code and all software distributed under the License is
15// distributed on an "AS IS" basis, without warranty of any kind, and the
16// Initial Developer hereby disclaims all such warranties, including without
17// limitation, any warranties of merchantability, fitness for a particular
18// purpose or non-infringement. Please see the License for the specific terms
19// and conditions governing the rights and limitations under the License.
20
7fd59977 21
22
23#include <BRepCheck.ixx>
24
25#include <BRepCheck_ListIteratorOfListOfStatus.hxx>
26#include <BRepCheck_Wire.hxx>
27
28#include <BRep_Tool.hxx>
29
30#include <TopoDS_Iterator.hxx>
31#include <TopoDS.hxx>
32
33
34//=======================================================================
35//function : Add
36//purpose :
37//=======================================================================
38
39void BRepCheck::Add(BRepCheck_ListOfStatus& lst, const BRepCheck_Status stat)
40{
41 BRepCheck_ListIteratorOfListOfStatus it(lst);
42 while (it.More()) {
43 if (it.Value() == BRepCheck_NoError && stat != BRepCheck_NoError) {
44 lst.Remove(it);
45 }
46 else {
47 if (it.Value() == stat) {
48 return;
49 }
50 it.Next();
51 }
52 }
53 lst.Append(stat);
54}
55
56
57
58//=======================================================================
59//function : SelfIntersection
60//purpose :
61//=======================================================================
62
63Standard_Boolean BRepCheck::SelfIntersection(const TopoDS_Wire& W,
64 const TopoDS_Face& myFace,
65 TopoDS_Edge& RetE1,
66 TopoDS_Edge& RetE2)
67{
68
69 Handle(BRepCheck_Wire) chkw = new BRepCheck_Wire(W);
70 BRepCheck_Status stat = chkw->SelfIntersect(myFace,RetE1,RetE2);
71 return (stat == BRepCheck_SelfIntersectingWire);
72}
73
74
75//=======================================================================
76//function : Print
77//purpose :
78//=======================================================================
79
80void BRepCheck::Print(const BRepCheck_Status stat,
81 Standard_OStream& OS)
82{
83
84 switch (stat) {
85 case BRepCheck_NoError:
86 OS << "BRepCheck_NoError\n";
87 break;
88 case BRepCheck_InvalidPointOnCurve:
89 OS << "BRepCheck_InvalidPointOnCurve\n";
90 break;
91 case BRepCheck_InvalidPointOnCurveOnSurface:
92 OS << "BRepCheck_InvalidPointOnCurveOnSurface\n";
93 break;
94 case BRepCheck_InvalidPointOnSurface:
95 OS << "BRepCheck_InvalidPointOnSurface\n";
96 break;
97 case BRepCheck_No3DCurve:
98 OS << "BRepCheck_No3DCurve\n";
99 break;
100 case BRepCheck_Multiple3DCurve:
101 OS << "BRepCheck_Multiple3DCurve\n";
102 break;
103 case BRepCheck_Invalid3DCurve:
104 OS << "BRepCheck_Invalid3DCurve\n";
105 break;
106 case BRepCheck_NoCurveOnSurface:
107 OS << "BRepCheck_NoCurveOnSurface\n";
108 break;
109 case BRepCheck_InvalidCurveOnSurface:
110 OS << "BRepCheck_InvalidCurveOnSurface\n";
111 break;
112 case BRepCheck_InvalidCurveOnClosedSurface:
113 OS << "BRepCheck_InvalidCurveOnClosedSurface\n";
114 break;
115 case BRepCheck_InvalidSameRangeFlag:
116 OS << "BRepCheck_InvalidSameRangeFlag\n";
117 break;
118 case BRepCheck_InvalidSameParameterFlag:
119 OS << "BRepCheck_InvalidSameParameterFlag\n";
120 break;
121 case BRepCheck_InvalidDegeneratedFlag:
122 OS << "BRepCheck_InvalidDegeneratedFlag\n";
123 break;
124 case BRepCheck_FreeEdge:
125 OS << "BRepCheck_FreeEdge\n";
126 break;
127 case BRepCheck_InvalidMultiConnexity:
128 OS << "BRepCheck_InvalidMultiConnexity\n";
129 break;
130 case BRepCheck_InvalidRange:
131 OS << "BRepCheck_InvalidRange\n";
132 break;
133 case BRepCheck_EmptyWire:
134 OS << "BRepCheck_EmptyWire\n";
135 break;
136 case BRepCheck_RedundantEdge:
137 OS << "BRepCheck_RedundantEdge\n";
138 break;
139 case BRepCheck_SelfIntersectingWire:
140 OS << "BRepCheck_SelfIntersectingWire\n";
141 break;
142 case BRepCheck_NoSurface:
143 OS << "BRepCheck_NoSurface\n";
144 break;
145 case BRepCheck_InvalidWire:
146 OS << "BRepCheck_InvalidWire\n";
147 break;
148 case BRepCheck_RedundantWire:
149 OS << "BRepCheck_RedundantWire\n";
150 break;
151 case BRepCheck_IntersectingWires:
152 OS << "BRepCheck_IntersectingWires\n";
153 break;
154 case BRepCheck_InvalidImbricationOfWires:
155 OS << "BRepCheck_InvalidImbricationOfWires\n";
156 break;
157 case BRepCheck_EmptyShell:
158 OS << "BRepCheck_EmptyShell\n";
159 break;
160 case BRepCheck_RedundantFace:
161 OS << "BRepCheck_RedundantFace\n";
162 break;
163 case BRepCheck_UnorientableShape:
164 OS << "BRepCheck_UnorientableShape\n";
165 break;
166 case BRepCheck_NotClosed:
167 OS << "BRepCheck_NotClosed\n";
168 break;
169 case BRepCheck_NotConnected:
170 OS << "BRepCheck_NotConnected\n";
171 break;
172 case BRepCheck_SubshapeNotInShape:
173 OS << "BRepCheck_SubshapeNotInShape\n";
174 break;
175 case BRepCheck_BadOrientation:
176 OS << "BRepCheck_BadOrientation\n";
177 break;
178 case BRepCheck_BadOrientationOfSubshape:
179 OS << "BRepCheck_BadOrientationOfSubshape\n";
180 break;
181 case BRepCheck_CheckFail:
182 OS << "BRepCheck_CheckFail\n";
183 break;
7fd59977 184 default:
185 break;
7fd59977 186 }
187}
188
189