Test for 0022778: Bug in BRepMesh
[occt.git] / src / TopOpeBRep / TopOpeBRep_ShapeIntersector2d.cdl
CommitLineData
b311480e 1-- Created on: 1993-05-07
2-- Created by: Jean Yves LEBEY
3-- Copyright (c) 1993-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
7fd59977 22
23
24class ShapeIntersector2d from TopOpeBRep
25
26---Purpose: Intersect two shapes.
27--
28-- A GeomShape is a shape with a geometric domain, i.e.
29-- a Face or an Edge.
30--
31-- The purpose of the ShapeIntersector2d is to find
32-- couples of intersecting GeomShape in two Shapes
33-- (which can be any kind of topologies : Compound,
34-- Solid, Shell, etc... )
35--
36-- It is in charge of exploration of the shapes and
37-- rejection. For this it is provided with two tools :
38--
39-- - ShapeExplorer from TopOpeBRepTool.
40-- - ShapeScanner from TopOpeBRep which implements bounding boxes.
41--
42-- Let S1,S2 the shapes sent to InitIntersection(S1,S2) method :
43-- - S1 is always SCANNED by a ShapeScanner from TopOpeBRep.
44-- - S2 is always EXPLORED by a ShapeExplorer from TopOpeBRepTool.
45
46uses
47
48 State from TopAbs,
49 Orientation from TopAbs,
50 Shape from TopoDS,
51 Face from TopoDS,
52 HBoxTool from TopOpeBRepTool,
53 ShapeTool from TopOpeBRepTool,
54 ShapeExplorer from TopOpeBRepTool,
55 ShapeScanner from TopOpeBRep,
56 FacesIntersector from TopOpeBRep,
57 EdgesIntersector from TopOpeBRep,
58 FaceEdgeIntersector from TopOpeBRep
59
60is
61
62 -- -------------------------------
63 -- intersection between two shapes
64 -- -------------------------------
65
66 Create returns ShapeIntersector2d from TopOpeBRep;
67
68 InitIntersection(me : in out; S1,S2 : Shape from TopoDS)
69 ---Purpose: Initialize the intersection of shapes S1,S2.
70 is static;
71
72 Reset(me : in out) is static private;
73 Init(me : in out; S1,S2 : Shape from TopoDS) is static private;
74
75 Shape(me; Index : Integer from Standard) returns Shape from TopoDS
76 ---Purpose: return the shape <Index> ( = 1 or 2) given to
77 -- InitIntersection().
78 -- Index = 1 will return S1, Index = 2 will return S2.
79 ---C++: return const &
80 is static;
81
82 MoreIntersection(me) returns Boolean from Standard
83 ---Purpose: returns True if there are more intersection
84 -- between two the shapes.
85 is static;
86
87 NextIntersection(me : in out)
88 ---Purpose: search for the next intersection between the two shapes.
89 is static;
90
91 ChangeEdgesIntersector(me : in out)
92 returns EdgesIntersector from TopOpeBRep
93 ---Purpose: return the current intersection of two Edges.
94 ---C++: return &
95 is static;
96
97 -- -----------------------------------------
98 -- intersection between two geometric shapes
99 -- -----------------------------------------
100
101 CurrentGeomShape(me; Index : Integer from Standard)
102 returns Shape from TopoDS
103 ---Purpose: return geometric shape <Index> ( = 1 or 2 ) of
104 -- current intersection.
105 ---C++ : return const &
106 is static;
107
108 SetIntersectionDone(me : in out) is static private;
109
110 -- ----------------------------
111 -- Faces intersection (private)
112 -- ----------------------------
113
114 InitFFIntersection(me : in out)
115 is static private;
116 FindFFIntersection(me : in out)
117 is static private;
118 MoreFFCouple(me) returns Boolean from Standard
119 is static private;
120 NextFFCouple(me : in out)
121 is static private;
122
123 -- ----------------------------
124 -- Edges intersection on SameDomain faces (private)
125 -- ----------------------------
126
127 InitEEFFIntersection(me : in out)
128 is static private;
129 FindEEFFIntersection(me : in out)
130 is static private;
131 MoreEEFFCouple(me) returns Boolean from Standard
132 is static private;
133 NextEEFFCouple(me : in out)
134 is static private;
135
136 -- debug
137 DumpCurrent(me; K : Integer from Standard) is static;
138 Index(me; K : Integer from Standard)
139 returns Integer from Standard
140 is static;
141
142fields
143
144 myShape1 : Shape from TopoDS;
145 myShape2 : Shape from TopoDS;
146
147 myHBoxTool : HBoxTool from TopOpeBRepTool;
148 myFaceExplorer : ShapeExplorer from TopOpeBRepTool;
149 myFaceScanner : ShapeScanner from TopOpeBRep;
150
151 myEdgeExplorer : ShapeExplorer from TopOpeBRepTool;
152 myEdgeScanner : ShapeScanner from TopOpeBRep;
153 myEEIntersector : EdgesIntersector from TopOpeBRep;
154
155 myIntersectionDone : Boolean from Standard;
156
157 myFFDone : Boolean from Standard;
158 myEEFFDone : Boolean from Standard;
159
160 myFFInit : Boolean from Standard;
161 myEEFFInit : Boolean from Standard;
162
163end ShapeIntersector2d from TopOpeBRep;