1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-26 10:19:45 +03:00
occt/src/IntWalk/IntWalk_IWalking.cdl
jgv b1c5c4e6a6 0024140: Endless loop in BRepAlgoAPI_Section
Test cases for issue CR24140
2013-10-03 15:48:51 +04:00

306 lines
11 KiB
Plaintext
Executable File

-- Created on: 1992-03-25
-- Created by: Isabelle GRIGNON
-- Copyright (c) 1992-1999 Matra Datavision
-- Copyright (c) 1999-2012 OPEN CASCADE SAS
--
-- The content of this file is subject to the Open CASCADE Technology Public
-- License Version 6.5 (the "License"). You may not use the content of this file
-- except in compliance with the License. Please obtain a copy of the License
-- at http://www.opencascade.org and read it completely before using this file.
--
-- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
-- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
--
-- The Original Code and all software distributed under the License is
-- distributed on an "AS IS" basis, without warranty of any kind, and the
-- Initial Developer hereby disclaims all such warranties, including without
-- limitation, any warranties of merchantability, fitness for a particular
-- purpose or non-infringement. Please see the License for the specific terms
-- and conditions governing the rights and limitations under the License.
generic class IWalking from IntWalk (
ThePointOfPath as any;
ThePointOfPathTool as any; -- as PathPointTool(ThePointOfPath)
ThePOPIterator as any; -- as Iterator from IntWalk(ThePointOfPath)
ThePointOfLoop as any;
ThePointOfLoopTool as any; -- as LoopPointTool(ThePointOfLoop)
ThePOLIterator as any; -- as Iterator from IntWalk(ThePointOfLoop)
ThePSurface as any;
ThePSurfaceTool as any; -- as PSurfaceTool(ThePSurface)
TheIWFunction as any) -- as IWFunction from IntWalk(ThePSurface)
---Purpose: This class implements an algorithm to find all the points
-- on a parametric surface verifying f(u,v)=0
-- where f is defined in the IWFunction class.
-- These points are found by a marching algorithm, using a set of
-- points as starting points.
uses Vector from math,
SequenceOfInteger from TColStd,
SequenceOfReal from TColStd,
StatusDeflection from IntWalk,
VectorOfInteger from IntWalk,
VectorOfWalkingData from IntWalk,
Vec from gp,
Dir2d from gp,
PntOn2S from IntSurf
raises NotDone from StdFail,
OutOfRange from Standard
class TheIWLine instantiates IWLine from IntWalk
(ThePointOfPath);
class SequenceOfIWLine instantiates Sequence from TCollection
(TheIWLine);
is
Create(Epsilon, Deflection, Step : Real from Standard)
---Purpose: Deflection is the maximum deflection admitted between two
-- consecutive points on a resulting polyline.
-- Step is the maximum increment admitted between two
-- consecutive points (in 2d space).
-- Epsilon is the tolerance beyond which 2 points
-- are confused.
returns IWalking from IntWalk;
SetTolerance(me: in out;Epsilon, Deflection, Step : Real from Standard)
---Purpose: Deflection is the maximum deflection admitted between two
-- consecutive points on a resulting polyline.
-- Step is the maximum increment admitted between two
-- consecutive points (in 2d space).
-- Epsilon is the tolerance beyond which 2 points
-- are confused
---C++: inline
is static;
Perform(me: in out;
Pnts1 : ThePOPIterator;
Pnts2 : ThePOLIterator;
Func : in out TheIWFunction;
S : ThePSurface;
Reversed : Boolean from Standard = Standard_False)
---Purpose: Searches a set of polylines starting on a point of Pnts1
-- or Pnts2.
-- Each point on a resulting polyline verifies F(u,v)=0
is static;
Perform(me: in out;
Pnts1 : ThePOPIterator;
Func : in out TheIWFunction;
S : ThePSurface;
Reversed : Boolean from Standard = Standard_False)
---Purpose: Searches a set of polylines starting on a point of Pnts1.
-- Each point on a resulting polyline verifies F(u,v)=0
is static;
IsDone(me)
---Purpose: Returns true if the calculus was successful.
returns Boolean from Standard
---C++: inline
is static;
NbLines(me)
---Purpose: Returns the number of resulting polylines.
-- An exception is raised if IsDone returns False.
returns Integer from Standard
---C++: inline
raises NotDone from StdFail
is static;
Value(me; Index: Integer from Standard)
---Purpose: Returns the polyline of range Index.
-- An exception is raised if IsDone is False.
-- An exception is raised if Index<=0 or Index>NbLines.
returns TheIWLine
---C++: return const&
---C++: inline
raises OutOfRange from Standard,
NotDone from StdFail
is static;
NbSinglePnts(me)
---Purpose: Returns the number of points belonging to Pnts on which no
-- line starts or ends.
-- An exception is raised if IsDone returns False.
returns Integer from Standard
---C++: inline
raises NotDone from StdFail
is static;
SinglePnt(me ; Index: Integer from Standard)
---Purpose: Returns the point of range Index .
-- An exception is raised if IsDone returns False.
-- An exception is raised if Index<=0 or
-- Index > NbSinglePnts.
returns ThePointOfPath
---C++: return const&
---C++: inline
raises OutOfRange from Standard,
NotDone from StdFail
is static;
-- -- private
Cadrage(me; BornInf, BornSup, UVap : in out Vector from math;
Step : in out Real from Standard;
-- StepV : in out Real from Standard;
StepSign : Integer from Standard)
returns Boolean from Standard
is static protected;
TestArretPassage (me: in out; Umult : SequenceOfReal from TColStd;
Vmult : SequenceOfReal from TColStd;
Section: in out TheIWFunction;
UV : in out Vector from math;
Irang : out Integer from Standard)
returns Boolean from Standard
is static protected;
TestArretPassage (me: in out; Umult : SequenceOfReal from TColStd;
Vmult : SequenceOfReal from TColStd;
UV : Vector from math;
Index : Integer from Standard;
Irang : out Integer from Standard)
returns Boolean from Standard
is static protected;
TestArretAjout(me: in out; Section: in out TheIWFunction;
UV : in out Vector from math;
Irang : out Integer from Standard;
PSol : out PntOn2S from IntSurf )
returns Boolean from Standard
is static protected;
TestArretCadre(me : in out; Umult : SequenceOfReal from TColStd;
Vmult : SequenceOfReal from TColStd;
Line : mutable TheIWLine;
Section: in out TheIWFunction;
UV : in out Vector from math;
Irang : out Integer from Standard)
is static protected;
TestDeflection(me: in out; Section : in out TheIWFunction;
Finished : Boolean from Standard;
UV : Vector from math;
StatusPrecedent : StatusDeflection from IntWalk;
NbDivision : in out Integer from Standard;
Step : in out Real from Standard;
-- StepV : in out Real from Standard;
StepSign : Integer from Standard)
returns StatusDeflection from IntWalk
is static protected;
ComputeOpenLine(me : in out; Umult : SequenceOfReal from TColStd;
Vmult : SequenceOfReal from TColStd;
Pnts1 : ThePOPIterator;
Section: in out TheIWFunction;
Rajout : in out Boolean from Standard)
is static protected;
OpenLine(me : in out; N : Integer from Standard;
Psol : PntOn2S from IntSurf;
Pnts1 : ThePOPIterator;
Section: in out TheIWFunction;
Line : mutable TheIWLine)
is static protected;
ComputeCloseLine(me : in out; Umult : SequenceOfReal from TColStd;
Vmult : SequenceOfReal from TColStd;
Pnts1 : ThePOPIterator;
Pnts2 : ThePOLIterator;
Section: in out TheIWFunction;
Rajout : in out Boolean from Standard)
is static protected;
AddPointInCurrentLine(me ; N : Integer from Standard;
PathPnt : ThePointOfPath;
CurrentLine : mutable TheIWLine)
is static protected;
MakeWalkingPoint(me : in out ; Case : Integer from Standard;
U,V : Real from Standard;
Section : in out TheIWFunction;
Psol : in out PntOn2S from IntSurf)
is static protected;
Clear (me: in out) is static protected;
---Purpose: Clears up internal containers
fields
done : Boolean from Standard;
seqSingle : ThePOPIterator;
fleche : Real from Standard;
pas : Real from Standard;
tolerance : Vector from math;
epsilon : Real from Standard;
reversed : Boolean from Standard;
wd1 : VectorOfWalkingData from IntWalk;
wd2 : VectorOfWalkingData from IntWalk;
nbMultiplicities : VectorOfInteger from IntWalk;
Um : Real from Standard; -- Min U de la surf
UM : Real from Standard; -- Max U de la surf
Vm : Real from Standard; -- Min V de la surf
VM : Real from Standard; -- Max V de la surf
previousPoint : PntOn2S from IntSurf;
prevtg : Boolean from Standard;
previousd3d : Vec from gp;
previousd2d : Dir2d from gp;
seqAjout : SequenceOfInteger from TColStd;
lines : SequenceOfIWLine;
NbPointsConfondusConsecutifs: Integer from Standard;
EpsilonSembleTropGrand : Integer from Standard;
end IWalking;