115de309a24891eb13496a3bd855cddcc8f2baaf
[occt.git] / src / IntPoly / IntPoly_PlaneSection.cdl
1 -- Created on: 1995-07-17
2 -- Created by: Stagiaire Alain JOURDAIN
3 -- Copyright (c) 1995-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
9 -- under the terms of the GNU Lesser General Public 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 PlaneSection from IntPoly
18
19   ---Purpose: determines the section of a triangulated shape by a plane.
20   --          The section is a set of edges. 
21
22
23 uses  Real                      from Standard,
24       Integer                   from Standard,
25       Boolean                   from Standard,
26       Shape                     from TopoDS,
27       Edge                      from TopoDS,
28       Trsf                      from gp,
29       Pln                       from gp,
30       Pnt                       from gp,
31       Pnt2d                     from gp,
32       SequenceOfPnt2d           from TColgp,
33       SequenceOfSequenceOfPnt2d from IntPoly,
34       IndexedMapOfPnt2d         from IntPoly,
35       Pnt2dHasher               from IntPoly
36       
37 is    Create
38       returns PlaneSection from IntPoly;
39         
40       Create (S : Shape from TopoDS;
41               P : Pln   from gp)
42       returns PlaneSection from IntPoly;
43         
44       Section (me : in out)
45       is static;
46
47       Intersect (me : in out; Point1    :     Pnt   from gp;
48                               Point2    :     Pnt   from gp;
49                               Point3    :     Pnt   from gp;
50                               OutPoint1 : out Pnt2d from gp;
51                               OutPoint2 : out Pnt2d from gp)
52       ---Purpose: determines the 2 2D-points resulting of the intersection
53       --          of the triangle (Point1,Point2,Point3) by the plane
54       returns Boolean from Standard;     
55
56       Insert (me : in out; OldPnt : Pnt2d from gp;
57                            ComPnt : Pnt2d from gp;
58                            NewPnt : Pnt2d from gp)
59       ---Purpose: sees whether OldPnt and NewPnt begins or ends a section
60       --          created before and adds the 2 others points.
61       --          If not, creates a section
62       is static;
63       
64       Concat (me : in out; BegPnt :     Pnt2d from gp;
65                            EndPnt :     Pnt2d from gp;
66                            OutPnt : out Pnt2d from gp)
67       ---Purpose: sees whether BegPnt or EndPnt begins or ends a section
68       --          created before, and returns the other point to continue 
69       --          the construction
70       --          Returns 2 if the construction is 'Forward'
71       --          Returns 1 if the construction is 'Previous'
72       --          Returns 0 if not and creates a section
73       returns Integer from Standard;
74       
75       ConcatSection (me : in out; Section   : in out SequenceOfPnt2d from TColgp; 
76                                   NbSection :        Integer         from Standard;
77                                   Index     :        Integer         from Standard)
78       ---Purpose: sees whether Section begins or ends another one in  mySection,
79       --          from the rank 'Index' to the last one 'NbSection'
80       is static;
81       
82       ForwConstruction (me : in out; Point : Pnt2d from gp)
83       ---Purpose: builds a section from Point in this way  
84       --                       ___   ___   ___   ___
85       --               Point--/__/--/__/--/__/--/__/--->
86       is static;
87
88       PrevConstruction (me : in out; Point : Pnt2d from gp)
89       ---Purpose: builds a section from Point in this way  
90       --                    ___   ___   ___   ___
91       --               <---/__/--/__/--/__/--/__/--Point
92        is static;
93
94       NbEdges (me : in out)
95       returns Integer from Standard;
96       
97       Edge (me : in out; Index : Integer from Standard)
98       ---Purpose: builds an edge from a sequence of Pnt2d
99       --          this is a part of the section
100       returns Edge from TopoDS;
101       
102
103 fields
104       myShape         : Shape                     from TopoDS;
105       myTransform     : Trsf                      from gp;
106       myBackTransform : Trsf                      from gp;
107       mySection       : SequenceOfSequenceOfPnt2d from IntPoly;
108       myMapBegPoints  : IndexedMapOfPnt2d         from IntPoly;
109       myMapEndPoints  : IndexedMapOfPnt2d         from IntPoly;
110       myCpt           : Integer                   from Standard;
111       myIndex         : Integer                   from Standard;
112       myNbEdges       : Integer                   from Standard;
113       
114 end PlaneSection;