summaryrefslogtreecommitdiff
path: root/src/BOP/BOP_AreaBuilder.cdl
blob: adeaa17e156a878fe41b6becca4020b641d02835 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
-- File:	BOP_AreaBuilder.cdl
-- Created:	Thu Dec 21 17:07:40 1995
-- Author:	Jean Yves LEBEY
--		<jyl@meteox>
---Copyright:	 Matra Datavision 1995

class AreaBuilder from BOP

    ---Purpose:  
     
    --  The Root class for the algorithms that are used  to   
     
    --      Reconstruct complex  topological  
    --  objects as  Faces or Solids.
    --      Loop is  the  composite topological object of
    --  the boundary. Wire for a Face. Shell for a Solid.
    --      LoopSet is a  tool describing the object  to
    --  build.  It gives an iteration  on Loops.  For each
    --  Loop it tells if it is on the boundary or if it is
    --  an interference.
    --      LoopClassifier  is an algorithm  used to test
    --  if a Loop is inside  another  Loop.
    --  The  result of the  reconstruction is an iteration
    --  on the reconstructed areas.  An  area is described
    --  by a set of Loops.
    --      A AreaBuilder is built with :
    --    - a LoopSet describing the object to reconstruct.
    --    - a LoopClassifier providing the classification algorithm.

uses

    State from TopAbs,

    Loop                     from BOP,
    ListOfLoop               from BOP,
    ListIteratorOfListOfLoop from BOP,
    ListOfListOfLoop         from BOP,
    LoopSet                  from BOP,
    LoopClassifier           from BOP,
    LoopEnum                 from BOP, 
    ListIteratorOfListOfListOfLoop from BOP
    
is

    Create  
    	returns AreaBuilder;
    	---Purpose:  
    	--- Empty  Constructor 
    	---
    Create(LS :out LoopSet from BOP;  
    	   LC :out LoopClassifier from BOP;
    	   ForceClass : Boolean = Standard_False)  
    	returns AreaBuilder;
    	---Purpose:  
    	--- Creates the objectr to build the areas on
    	--- the shapes described by <LS> using the classifier <LC>.
    	---
    Delete(me:out) is virtual;
    	---C++: alias "Standard_EXPORT virtual ~BOP_AreaBuilder(){Delete() ; }"
    	---Purpose:  
    	--- Destructor
    	---
    InitAreaBuilder(me :out;
    	    	    LS :out LoopSet from BOP;  
    	    	    LC :out LoopClassifier;
    	    	    ForceClass : Boolean from Standard = Standard_False) 
    	is virtual;
    	---Purpose:  
    	--- Sets a AreaBuilder to find the areas on
    	--- the shapes described by <LS> using the classifier <LC>.
    	---
    CompareLoopWithListOfLoop(me;
    	    	    	      LC  : out LoopClassifier from BOP;
    	    	    	      L   : Loop from BOP;
    	    	    	      LOL : ListOfLoop from BOP;
    	    	    	      aWhat  : LoopEnum from BOP) 
    	returns State from TopAbs  
    	is static protected;
    	---Purpose:  
    	--- Compare position of the Loop <L> with the Area <LOL>
    	--- using the Loop Classifier <LC>.
    	---       According to <aWhat>, Loops of <LOL> are selected or not
    	---       during <LOL> exploration. 
    	---
    	-- Result : TopAbs_OUT     if <LOL> is empty
    	---      TopAbs_UNKNOWN if position undefined
    	---      TopAbs_IN      if <L> is inside all the selected Loops of <LOL>
    	---      TopAbs_OUT     if <L> is outside one of the selected Loops of <LOL>
    	---      TopAbs_ON      if <L> is on one of the selected Loops of <LOL>	
    	---
    	---

    --- Iteration on Areas   
    --
    InitArea(me:out)  
    	returns Integer from Standard is static;
    	---Purpose:  
    	--- Initialize iteration on areas.
    	---
    MoreArea(me)  
    	returns Boolean from Standard is static;
     
    NextArea(me:out)  
    	is static;

    -- 
    --  Iteration on Loops inside the Area   
    --
    InitLoop(me:out)  
    	returns Integer from Standard is static;
    	---Purpose:  
    	--- Initialize iteration on loops of current Area. 
    	---
    MoreLoop(me)  
    	returns Boolean from Standard is static;
     
    NextLoop(me:out)  
    	is static;
     
    Loop(me)  
    	returns Loop from BOP is static; 
    	---C++: return const&
    	---Purpose:  
    	--- Returns the current Loop in the current area.
    	---
    ---
    --- 
    ---  Methods that are not for public usage 
    ---	     
    ADD_Loop_TO_LISTOFLoop  (me;  
    	    	    	     L  : Loop from BOP;
    	    	    	     LOL: out ListOfLoop from BOP)  
    	is virtual;
    	---Purpose: 
    	--- Internal 
    	---
    REM_Loop_FROM_LISTOFLoop(me;  
    	    	    	     ITLOL: out ListIteratorOfListOfLoop from BOP; 
     	    	    	     LOL  : out ListOfLoop from BOP)
	 is virtual;
    	---Purpose: 
    	--- Internal 
    	---
    ADD_LISTOFLoop_TO_LISTOFLoop(me;  
    	    	    	    	 LOL1 : out ListOfLoop from BOP;
    	    	    	         LOL2 : out ListOfLoop from BOP)
    	is virtual;
    	---Purpose: 
    	--- Internal 
    	---
    Atomize(me; 
    	    state : in out State from TopAbs;  
    	    newstate : State from TopAbs)
    	is static protected;
    	---Purpose: 
    	--- Internal 
    	---
fields

    myArea         : ListOfListOfLoop               from BOP is protected;
    myAreaIterator : ListIteratorOfListOfListOfLoop from BOP is protected;
    myLoopIterator : ListIteratorOfListOfLoop       from BOP is protected;
    myUNKNOWNRaise : Boolean  from Standard is protected;
    
end AreaBuilder;