0024171: Eliminate CLang compiler warning -Wreorder
[occt.git] / src / ShapeAnalysis / ShapeAnalysis.cdl
1 -- Created on: 1998-06-03
2 -- Created by: data exchange team
3 -- Copyright (c) 1998-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
21
22
23 package ShapeAnalysis 
24
25     ---Purpose: This package is intended to analyze geometrical objects
26 -- and topological shapes. Analysis domain includes both
27 -- exploring geometrical and topological properties of
28 -- shapes and checking their conformance to Open CASCADE requirements.
29 -- The directions of analysis provided by tools of this package are:
30 -- computing quantities of subshapes,  
31 -- computing parameters of points on curve and surface,  
32 -- computing surface singularities,  
33 -- checking edge and wire consistency,  
34 -- checking edges order in the wire,  
35 -- checking face bounds orientation,  
36 -- checking small faces,  
37 -- analyzing shape tolerances,  
38 -- analyzing of free bounds of the shape.  
39
40 uses
41     gp,
42     TColStd,
43     TCollection,
44     TColgp,
45     Bnd,
46     Geom, 
47     Geom2d,
48     GeomAdaptor,
49     Extrema,
50     IntRes2d,
51     TopAbs,
52     TopLoc,
53     TopoDS,
54     TopTools,
55     ShapeExtend,
56     Adaptor3d
57     
58 is
59  
60     class Geom;
61         ---Purpose: Basic analysis on geometry
62     
63     class Curve;
64         ---Purpose: Analysis on 2d and 3d curve (projecting points)
65     
66     class Surface;
67         ---Purpose: Analysis on surface (computing singularities)
68     
69     class Edge;
70         ---Purpose: Analysis on edge (geometrical and topological querying,
71         --          curves consistency, etc.)    
72
73     class Wire;
74         ---Purpose: Comprehensive alysis of the wire lying on the face or surface
75     
76     class WireOrder;
77         ---Purpose: Analysis of the edges order in the wire
78     
79     class WireVertex;
80         ---Purpose: Analysis of the vertex in context of the wire
81         
82     class CheckSmallFace;                                                                                 
83         ---Purpose: Analysis of the face size         
84         
85     class Shell;                    
86         ---Purpose: Checking orientation in the shell                                                                          
87                         
88     class ShapeTolerance;
89         ---Purpose: Calculating shape tolerances
90
91     --class OverlapEdges;  now it is in package OverlapShape of Products
92         ---Purpose: Container for keeping information about
93         --          overlapping edges
94
95     --class CheckCoincidenceTool;  now it is in package OverlapShape of Products
96         ---Purpose: Tool for checking coincidence of faces and edges
97
98      -- Class intended for analyzing shape contents
99     
100     class ShapeContents;
101         ---Purpose: Dumps shape contents
102     
103     
104     -- Classes intended for free bounds analysis
105
106     class FreeBounds;                                                                                     
107         ---Purpose: Constructing free bounds of the shape                                                 
108                                                                                                           
109     class FreeBoundData;                                                                                  
110         ---Purpose: Data structure for storing free bound                                                 
111     
112     class FreeBoundsProperties;                                                                           
113         ---Purpose: Analysis of properties of free bounds                                                 
114                                                                                                           
115     class TransferParameters;
116         ---Purpose: Transfers parameters between curve 3d of edge and its pcurves
117         
118         class TransferParametersProj;
119             ---Purpose: Transfers parameters between curve 3d of edge and its 
120             --          pcurves. This algorithm uses projection for not 
121             --          sameparameter edges.
122     
123     class SequenceOfFreeBounds instantiates                                                               
124         Sequence  from TCollection (FreeBoundData from ShapeAnalysis);                                    
125                                                                                                           
126     class HSequenceOfFreeBounds instantiates                                                              
127         HSequence from TCollection (FreeBoundData        from ShapeAnalysis,                              
128                                     SequenceOfFreeBounds from ShapeAnalysis);                             
129
130     class DataMapOfShapeListOfReal instantiates
131         DataMap from TCollection(Shape          from TopoDS,
132                                  ListOfReal     from TColStd,
133                                  ShapeMapHasher from TopTools);
134
135     --class SequenceOfOverlapEdges instantiates 
136         --Sequence from TCollection (OverlapEdges from ShapeAnalysis); 
137             -- now it is in package OverlapShape of Products
138         
139     --class IndexedDataMapOfShapeSequenceOfOverlapEdges instantiates
140         --IndexedDataMap from TCollection(Shape          from TopoDS,
141                                         --SequenceOfOverlapEdges from ShapeAnalysis,
142                                         --ShapeMapHasher from TopTools);
143             -- now it is in package OverlapShape of Products
144                                         
145
146     OuterWire (face: Face from TopoDS) returns Wire from TopoDS;
147         ---Purpose: Returns the outer wire on the face <Face>.
148         --          This is replacement of the method BRepTools::OuterWire
149         --          until it works badly.
150         --          Returns the first wire oriented as outer according to
151         --          FClass2d_Classifier. If none, last wire is returned.
152
153     TotCross2D(sewd: WireData from ShapeExtend; aFace: Face from TopoDS)
154     returns Real;
155         ---Purpose: Returns a total area of 2d wire
156         
157     ContourArea(theWire : Wire from TopoDS) returns Real;
158        --sewd: WireData from ShapeExtend) returns Real;
159         ---Purpose: Returns a total area of 3d wire
160         
161     IsOuterBound (face: Face from TopoDS) returns Boolean;
162         ---Purpose: Returns True if <F> has outer bound.
163         ---Remarks: This method checks only presence of outer bound, it does not
164         --          check mutual orientation of the bounds on a face
165
166     AdjustByPeriod(Val: Real; ToVal: Real; Period: Real)
167     returns Real;
168         ---Purpose: Returns a shift required to move point
169         --          <Val> to the range [ToVal-Period/2,ToVal+Period/2].
170         --          This shift will be the divisible by Period.
171         --          Intended for adjusting parameters on periodic surfaces.
172         
173     AdjustToPeriod(Val: Real; ValMin: Real; ValMax: Real)
174     returns Real;
175         ---Purpose: Returns a shift required to move point
176         --          <Val> to the range [ValMin,ValMax].
177         --          This shift will be the divisible by Period
178         --          with Period = ValMax - ValMin.
179         --          Intended for adjusting parameters on periodic surfaces.
180
181     FindBounds (shape: Shape  from TopoDS;
182                 V1   : in out Vertex from TopoDS;
183                 V2   : in out Vertex from TopoDS);
184         ---Purpose: Finds the start and end vertices of the shape
185         --          Shape can be of the following type:
186         --          vertex: V1 and V2 are the same and equal to <shape>,
187         --          edge  : V1 is start and V2 is end vertex (see ShapeAnalysis_Edge
188         --                  methods FirstVertex and LastVertex),
189         --          wire  : V1 is start vertex of the first edge, V2 is end vertex
190         --                  of the last edge (also see ShapeAnalysis_Edge).
191         --                  If wire contains no edges V1 and V2 are nullified
192         --          If none of the above V1 and V2 are nullified
193         ---Remark:  V1 and V2 can be of any orientation
194         
195     GetFaceUVBounds(F: Face from TopoDS; Umin, Umax, Vmin, Vmax: out Real);
196         ---Purpose: Computes exact UV bounds of all wires on the face        
197         
198 end ShapeAnalysis;