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 | |
24 | class 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 | |
46 | uses |
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 | |
60 | is |
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 | |
142 | fields |
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 | |
163 | end ShapeIntersector2d from TopOpeBRep; |