0024023: Revamp the OCCT Handle -- ambiguity
[occt.git] / src / BRepCheck / BRepCheck_Analyzer.cdl
CommitLineData
b311480e 1-- Created on: 1995-12-08
2-- Created by: Jacques GOUSSARD
3-- Copyright (c) 1995-1999 Matra Datavision
973c2be1 4-- Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 5--
973c2be1 6-- This file is part of Open CASCADE Technology software library.
b311480e 7--
d5f74e42 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
973c2be1 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.
b311480e 13--
973c2be1 14-- Alternatively, this file may be used under the terms of Open CASCADE
15-- commercial license or contractual agreement.
7fd59977 16
17class Analyzer from BRepCheck
18
19 ---Purpose: A framework to check the overall
20 -- validity of a shape. For a shape to be valid in Open
21 -- CASCADE, it - or its component subshapes - must respect certain
22 -- criteria. These criteria are checked by the function IsValid.
23 -- Once you have determined whether a shape is valid or not, you can
24 -- diagnose its specific anomalies and correct them using the services of
25 -- the ShapeAnalysis, ShapeUpgrade, and ShapeFix packages.
26
27uses Shape from TopoDS,
28 ShapeEnum from TopAbs,
29 Result from BRepCheck,
30 DataMapOfShapeResult from BRepCheck
31
32raises NullObject from Standard,
33 NoSuchObject from Standard
34
35is
36
37 Create(S: Shape from TopoDS;
38 GeomControls : Boolean from Standard = Standard_True)
39 ---Purpose: Constructs a shape validation object defined by the shape S.
40 -- <S> is the shape to control. <GeomControls> If
41 -- False only topological informaions are checked.
42 -- The geometricals controls are
43 -- For a Vertex :
44 -- BRepCheck_InvalidToleranceValue NYI
45 -- For an Edge :
46 -- BRepCheck_InvalidCurveOnClosedSurface,
47 -- BRepCheck_InvalidCurveOnSurface,
48 -- BRepCheck_InvalidSameParameterFlag,
49 -- BRepCheck_InvalidToleranceValue NYI
50 -- For a face :
51 -- BRepCheck_UnorientableShape,
52 -- BRepCheck_IntersectingWires,
53 -- BRepCheck_InvalidToleranceValue NYI
54 -- For a wire :
55 -- BRepCheck_SelfIntersectingWire
56
57 ---C++: inline
58 returns Analyzer from BRepCheck
59 raises NullObject from Standard;
60
61
62
63 Init(me: in out; S: Shape from TopoDS;
64 GeomControls : Boolean from Standard = Standard_True)
65 ---Purpose: <S> is the shape to control. <GeomControls> If
66 -- False only topological informaions are checked.
67 -- The geometricals controls are
68 -- For a Vertex :
69 -- BRepCheck_InvalidTolerance NYI
70 -- For an Edge :
71 -- BRepCheck_InvalidCurveOnClosedSurface,
72 -- BRepCheck_InvalidCurveOnSurface,
73 -- BRepCheck_InvalidSameParameterFlag,
74 -- BRepCheck_InvalidTolerance NYI
75 -- For a face :
76 -- BRepCheck_UnorientableShape,
77 -- BRepCheck_IntersectingWires,
78 -- BRepCheck_InvalidTolerance NYI
79 -- For a wire :
80 -- BRepCheck_SelfIntersectingWire
81
82 raises NullObject from Standard
83 is static;
84
85
86
87 IsValid(me; S: Shape from TopoDS)
88 ---Purpose: <S> is a subshape of the original shape. Returns
89 -- <STandard_True> if no default has been detected on
90 -- <S> and any of its subshape.
91 returns Boolean from Standard
92 raises NoSuchObject from Standard
93 is static;
94
95
96 IsValid(me)
97 ---Purpose: Returns true if no defect is
98 -- detected on the shape S or any of its subshapes.
99 -- Returns true if the shape S is valid.
100 -- This function checks whether a given shape is valid by checking that:
101 -- - the topology is correct
102 -- - parameterization of edges in particular is correct.
103 -- For the topology to be correct, the following conditions must be satisfied:
104 -- - edges should have at least two vertices if they are not
105 -- degenerate edges. The vertices should be within the range of
106 -- the bounding edges at the tolerance specified in the vertex,
107 -- - edges should share at least one face. The representation of
108 -- the edges should be within the tolerance criterion assigned to them.
109 -- - wires defining a face should not self-intersect and should be closed,
110 -- - there should be one wire which contains all other wires inside a face,
111 -- - wires should be correctly oriented with respect to each of the edges,
112 -- - faces should be correctly oriented, in particular with
113 -- respect to adjacent faces if these faces define a solid,
114 -- - shells defining a solid should be closed. There should
115 -- be one enclosing shell if the shape is a solid;
116 -- To check parameterization of edge, there are 2 approaches depending on
117 -- the edge?s contextual situation.
118 -- - if the edge is either single, or it is in the context
119 -- of a wire or a compound, its parameterization is defined by
120 -- the parameterization of its 3D curve and is considered as valid.
121 -- - If the edge is in the context of a face, it should
122 -- have SameParameter and SameRange flags set to Standard_True. To
123 -- check these flags, you should call the function
124 -- BRep_Tool::SameParameter and BRep_Tool::SameRange for an
125 -- edge. If at least one of these flags is set to Standard_False,
126 -- the edge is considered as invalid without any additional check.
127 -- If the edge is contained by a face, and it has SameParameter and
128 -- SameRange flags set to Standard_True, IsValid checks
129 -- whether representation of the edge on face, in context of which the
130 -- edge is considered, has the same parameterization up to the
131 -- tolerance value coded on the edge. For a given parameter t on the edge
132 -- having C as a 3D curve and one PCurve P on a surface S (base
133 -- surface of the reference face), this checks that |C(t) - S(P(t))|
134 -- is less than or equal to tolerance, where tolerance is the tolerance
135 -- value coded on the edge.
136 ---C++: inline
137 returns Boolean from Standard
138 is static;
139
140
141
142 Result(me; SubS: Shape from TopoDS)
143
144 ---C++: return const&
145 ---C++: inline
146 returns any Result from BRepCheck
147 raises NoSuchObject from Standard
148 is static;
149
150
151 --- Private implementation method
152
153 Put(me: in out; S: Shape from TopoDS; Gctrl: Boolean from Standard)
154
155 is static private;
156
157
158 Perform(me: in out; S: Shape from TopoDS)
159
160 is static private;
161
162
163 ValidSub(me; S: Shape from TopoDS; SubType: ShapeEnum from TopAbs)
164
165 returns Boolean from Standard
166 is static private;
167
168
169fields
170
171 myShape : Shape from TopoDS;
172 myMap : DataMapOfShapeResult from BRepCheck;
173
174end Analyzer;