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
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.
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.
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.
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.
61 ---Purpose: Basic analysis on geometry
64 ---Purpose: Analysis on 2d and 3d curve (projecting points)
67 ---Purpose: Analysis on surface (computing singularities)
70 ---Purpose: Analysis on edge (geometrical and topological querying,
71 -- curves consistency, etc.)
74 ---Purpose: Comprehensive alysis of the wire lying on the face or surface
77 ---Purpose: Analysis of the edges order in the wire
80 ---Purpose: Analysis of the vertex in context of the wire
83 ---Purpose: Analysis of the face size
86 ---Purpose: Checking orientation in the shell
89 ---Purpose: Calculating shape tolerances
91 --class OverlapEdges; now it is in package OverlapShape of Products
92 ---Purpose: Container for keeping information about
95 --class CheckCoincidenceTool; now it is in package OverlapShape of Products
96 ---Purpose: Tool for checking coincidence of faces and edges
98 -- Class intended for analyzing shape contents
101 ---Purpose: Dumps shape contents
104 -- Classes intended for free bounds analysis
107 ---Purpose: Constructing free bounds of the shape
110 ---Purpose: Data structure for storing free bound
112 class FreeBoundsProperties;
113 ---Purpose: Analysis of properties of free bounds
115 class TransferParameters;
116 ---Purpose: Transfers parameters between curve 3d of edge and its pcurves
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.
123 class SequenceOfFreeBounds instantiates
124 Sequence from TCollection (FreeBoundData from ShapeAnalysis);
126 class HSequenceOfFreeBounds instantiates
127 HSequence from TCollection (FreeBoundData from ShapeAnalysis,
128 SequenceOfFreeBounds from ShapeAnalysis);
130 class DataMapOfShapeListOfReal instantiates
131 DataMap from TCollection(Shape from TopoDS,
132 ListOfReal from TColStd,
133 ShapeMapHasher from TopTools);
135 --class SequenceOfOverlapEdges instantiates
136 --Sequence from TCollection (OverlapEdges from ShapeAnalysis);
137 -- now it is in package OverlapShape of Products
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
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.
153 TotCross2D(sewd: WireData from ShapeExtend; aFace: Face from TopoDS)
155 ---Purpose: Returns a total area of 2d wire
157 ContourArea(theWire : Wire from TopoDS) returns Real;
158 --sewd: WireData from ShapeExtend) returns Real;
159 ---Purpose: Returns a total area of 3d wire
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
166 AdjustByPeriod(Val: Real; ToVal: Real; Period: 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.
173 AdjustToPeriod(Val: Real; ValMin: Real; ValMax: 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.
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
195 GetFaceUVBounds(F: Face from TopoDS; Umin, Umax, Vmin, Vmax: out Real);
196 ---Purpose: Computes exact UV bounds of all wires on the face