0025021: New option of BRepOffsetAPI_MakeOffset algorithm: open result for open wire
[occt.git] / src / BRepMAT2d / BRepMAT2d_BisectingLocus.cdl
1 -- Created on: 1993-07-06
2 -- Created by: Yves FRICAUD
3 -- Copyright (c) 1993-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 class BisectingLocus from BRepMAT2d 
18
19         ---Purpose  : BisectingLocus generates and contains the Bisecting_Locus
20         --            of a set of lines from Geom2d, defined by <ExploSet>.
21         --             
22         --            If the set of lines contains closed lines:
23         --            ------------------------------------------
24         --            These lines cut the plane  in areas. 
25         --            One map can  be  computed for each area.
26         --  
27         --            Bisecting locus computes a map in an area. 
28         --            The area is defined by a side (MAT_Left,MAT_Right) 
29         --            on one of the closed lines.
30         -- 
31         --            If the set of lines contains only open lines:
32         --            --------------------------------------------
33         --            the map recovers all the plane.
34         --  
35         --  Warning: Assume the orientation of the   closed  lines  are
36         --          compatible. 
37         --          
38         --          Assume the explo contains only lines located in the 
39         --          area where the bisecting locus will be computed.
40         --          
41         --          Assume a line don't cross itself or an other line.
42         --
43         --  Remark: 
44         --         the  curves  coming   from   the  explorer can   be
45         --         decomposed in different parts. It  the  case for the
46         --         curves other than circles or lines.
47         --         
48         --         The map of bisecting  locus is described by a graph.
49         --         - The  BasicsElements  correspond  to elements on
50         --           the figure described by the Explorer from BRepMAT2d.
51         --         - The Arcs correspond to the bisectors.
52         --         - The Nodes are the extremities of the arcs.
53
54 uses
55     Graph                    from MAT,
56     Arc                      from MAT,
57     BasicElt                 from MAT,
58     Node                     from MAT,
59     Side                     from MAT,
60     DataMapOfIntegerBasicElt from MAT,
61     DataMapOfBiIntInteger    from MAT2d,           
62     Bisec                    from Bisector,
63     Geometry                 from Geom2d,
64     Pnt2d                    from gp,
65     Tool2d                   from MAT2d,
66         Explorer                 from BRepMAT2d
67     
68 is
69     Create returns BisectingLocus from BRepMAT2d;
70     
71 ---Category: Construction.
72
73     Compute (me        : in out ; 
74              anExplo   : in out Explorer from BRepMAT2d;
75              LineIndex :        Integer       = 1;
76              aSide     :        Side from MAT = MAT_Left;
77              IsOpenResult :     Boolean       = Standard_False)
78         --- Purpose : Computation of the Bisector_Locus in a set of Lines 
79         --            defined in <anExplo>.
80         --            The bisecting locus are computed on the side <aSide>
81         --            from the line <LineIndex> in <anExplo>. 
82     is static;
83     
84 ---Category: Querying.
85
86     IsDone (me) returns Boolean from Standard
87         ---Purpose: Returns True if Compute has succeeded.
88     is static;
89
90     Graph(me) returns Graph from MAT
91         --- Purpose : Returns <theGraph> of <me>.
92     is static;
93     
94     NumberOfContours (me)
95         ---Purpose: Returns the number of contours.
96     returns Integer from Standard
97     is static;
98     
99     NumberOfElts( me ; IndLine : Integer) 
100         ---Purpose: Returns the number of BasicElts on the line
101         --          <IndLine>.
102     returns Integer from Standard
103     is static;
104
105     NumberOfSections (me; IndLine : Integer; Index : Integer)
106         ---Purpose: Returns the number of sections of a curve.
107         --          this curve is the Indexth curve in the IndLineth contour
108         --          given by anExplo. 
109         --          
110     returns Integer from Standard
111     is static;
112     
113     BasicElt ( me ; IndLine : Integer ; Index : Integer)
114         ---Purpose: Returns the BasicElts located at the position
115         --          <Index> on the contour designed by <IndLine>.
116         --  Remark: the BasicElts on a contour are sorted.
117         --                    
118     returns BasicElt from MAT
119     is static;
120     
121     GeomElt(me ; aBasicElt : BasicElt from MAT) 
122         --- Purpose : Returns the geometry linked to the <BasicElt>.
123     returns Geometry from Geom2d
124     is static;
125     
126     GeomElt(me ; aNode : Node from MAT) 
127         --- Purpose : Returns the geometry of  type <gp> linked to
128         --            the <Node>.
129     returns Pnt2d from gp
130     is static;
131     
132     GeomBis(me ; anArc : Arc from MAT ; Reverse :in out Boolean from Standard) 
133         --- Purpose  : Returns the  geometry of type <Bissec> 
134         --             linked   to the arc <ARC>. 
135         --             <Reverse> is False when the FirstNode of <anArc>
136         --             correspond to the first point of geometry.
137         --             
138     returns Bisec from Bisector
139     is static;
140     
141 ---Category: private methods.
142     
143     Fusion(me : in out)
144     is static private;
145
146     RenumerationAndFusion
147        (me         : in out;
148         IndexLine  : Integer;
149         LengthLine : Integer;
150         IndexLast  : in out Integer;
151         NewMap     : in out DataMapOfIntegerBasicElt from MAT) 
152     is static private;
153     
154 fields
155
156     theGraph    : Graph                 from MAT;
157     theTool     : Tool2d                from MAT2d;
158     isDone      : Boolean               from Standard;
159     nbSect      : DataMapOfBiIntInteger from MAT2d;
160     nbContours  : Integer               from Standard;  
161     
162 end BisectingLocus;
163
164