0024023: Revamp the OCCT Handle -- ambiguity
[occt.git] / src / BRepFill / BRepFill_Pipe.cdl
1 -- Created on: 1994-06-07
2 -- Created by: Bruno DUMORTIER
3 -- Copyright (c) 1994-1999 Matra Datavision
4 -- Copyright (c) 1999-2014 OPEN CASCADE SAS
5 --
6 -- This file is part of Open CASCADE Technology software library.
7 --
8 -- This library is free software; you can redistribute it and/or modify it under
9 -- the terms of the GNU Lesser General Public License version 2.1 as published
10 -- by the Free Software Foundation, with special exception defined in the file
11 -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 -- distribution for complete text of the license and disclaimer of any warranty.
13 --
14 -- Alternatively, this file may be used under the terms of Open CASCADE
15 -- commercial license or contractual agreement.
16
17
18 class Pipe from BRepFill 
19
20         ---Purpose: Create a  shape by sweeping a shape  (the profile)
21         --          along a wire (the spine).
22         --          
23         --          For each edge  or vertex from the spine  the  user
24         --          may ask for the shape generated from each subshape
25         --          of the profile.
26
27 uses
28
29     HArray2OfShape from TopTools,
30     MapOfShape     from TopTools,
31     DataMapOfShapeHArray2OfShape from BRepFill,
32     LocationLaw  from BRepFill,
33     Shape  from TopoDS,
34     Face   from TopoDS,
35     Wire   from TopoDS,
36     Edge   from TopoDS,
37     Vertex from TopoDS,  
38     Pnt    from  gp,
39     Trsf   from  gp,
40     Shape  from GeomAbs,
41     Trihedron from GeomFill
42
43 raises
44     DomainError from Standard, 
45     NotDone     from StdFail
46
47 is
48
49     Create returns Pipe from BRepFill;
50     
51     Create ( Spine   : Wire from TopoDS; 
52              Profile : Shape from TopoDS;
53              aMode   : Trihedron from GeomFill = GeomFill_IsCorrectedFrenet;
54              ForceApproxC1 : Boolean from Standard = Standard_False;
55              GeneratePartCase : Boolean from Standard = Standard_False) 
56     returns Pipe from BRepFill;
57     
58     Perform (me : in out;  Spine   : Wire from TopoDS; 
59                            Profile : Shape from TopoDS;
60                            GeneratePartCase : Boolean from Standard = Standard_False) 
61     is static;
62     
63     Spine(me) returns Shape from TopoDS
64         ---C++ : return const &
65     is static;
66
67     Profile(me) returns Shape from TopoDS
68         ---C++ : return const &
69     is static;
70
71     Shape(me) returns Shape from TopoDS
72         ---C++ : return const &
73     is static;
74
75     ErrorOnSurface (me)
76     returns Real from Standard;
77     
78     FirstShape(me) returns Shape from TopoDS
79         ---C++ : return const &
80     is static;
81
82     LastShape(me) returns Shape from TopoDS
83         ---C++ : return const &
84     is static;
85
86     Face(me : in out; ESpine, EProfile : Edge from TopoDS)
87     returns Face from TopoDS
88         ---Purpose: Returns the face created from an edge of the spine
89         --          and an edge of the profile.
90     raises
91         DomainError from Standard 
92         ---Purpose: if the edges are not in the spine or the profile
93         
94     is static;
95     
96     Edge(me : in out; ESpine : Edge from TopoDS; VProfile : Vertex from TopoDS)
97     returns Edge from TopoDS
98         ---Purpose: Returns the edge created from an edge of the spine
99         --          and a vertex of the profile.
100     raises
101         DomainError from Standard 
102         ---Purpose: if the edge or the vertex are not in  the spine or
103         --          the profile.
104         
105     is static;
106     
107     Section(me; VSpine : Vertex from TopoDS)
108     returns Shape from TopoDS
109         ---Purpose: Returns  the shape created from the profile at the
110         --          position of the vertex VSpine.
111     raises
112         DomainError from Standard
113         ---Purpose: if the vertex is not in the Spine
114     is static; 
115      
116      
117     PipeLine(me : in out;  Point :  Pnt  from  gp)  
118         ---Purpose: Create a Wire by sweeping the Point along the <spine>
119     returns  Wire  from  TopoDS 
120     raises
121         DomainError from Standard
122         ---Purpose: if the <Spine> is undefined      
123     is  static;
124
125
126     --
127     --  Private methods
128     --  
129     
130     MakeShape(me : in out; S : Shape from TopoDS; 
131                            FirstShape,  LastShape  :  Shape  from  TopoDS)
132     returns Shape from TopoDS
133         ---Purpose: Auxiliary  recursive  method  used  to  build  the
134         --          result. 
135     is static private;
136
137
138     FindEdge(me;  S : Shape from TopoDS;  
139                   E : Edge  from  TopoDS;  
140                   Init  : in  out Integer)       
141         ---Purpose: Auxiliary recursive method used to find the edge's index
142     returns  Integer
143     is static private;
144
145     FindVertex(me;  S : Shape from TopoDS;  
146                     V : Vertex  from  TopoDS;  
147                     Init  : in  out Integer) 
148     returns  Integer
149     is static private; 
150   
151     DefineRealSegmax(me : in out)
152     is static private; 
153     
154     RebuildTopOrBottomFace(me; aFace: Shape from TopoDS;
155                                IsTop: Boolean from Standard)
156     is static private; 
157     
158     ShareFaces(me: in out; theShape: Shape from TopoDS;
159                            theInitialFacesLen: Integer;
160                            theInitialEdgesLen: Integer;
161                            theInitialSectionsLen: Integer)
162         ---Purpose: Performs sharing coincident faces in theShape. Also modifies
163         --          myFaces, mySections and myEdges to contain shared shapes.
164         --          Returns the shared shape. If theShape is not modified this
165         --          method returns it.
166     returns Shape from TopoDS
167     is static private; 
168      
169 fields
170     mySpine   : Wire  from TopoDS;
171     myProfile : Shape from TopoDS;
172     myShape   : Shape from TopoDS; 
173     myTrsf    : Trsf  from  gp; 
174     myLoc     : LocationLaw  from BRepFill;
175     mySections: HArray2OfShape from TopTools; 
176     myFaces   : HArray2OfShape from TopTools;  
177     myEdges   : HArray2OfShape from TopTools;  
178     myReversedEdges : MapOfShape from TopTools;  
179     myTapes   : DataMapOfShapeHArray2OfShape from BRepFill;
180     myRails   : DataMapOfShapeHArray2OfShape from BRepFill;
181     myCurIndexOfSectionEdge : Integer from Standard;
182     myFirst   :  Shape  from  TopoDS; 
183     myLast    :  Shape  from  TopoDS; 
184      
185     myDegmax  : Integer from Standard;
186     mySegmax  : Integer from Standard;
187     myContinuity : Shape from GeomAbs;
188     myMode    : Trihedron from GeomFill;
189     myForceApproxC1 : Boolean from Standard;
190     
191     myErrorOnSurf : Real from Standard;
192     
193 end Pipe;