4e57c75e |
1 | -- Created by: Peter KURNEV |
973c2be1 |
2 | -- Copyright (c) 1999-2014 OPEN CASCADE SAS |
4e57c75e |
3 | -- |
973c2be1 |
4 | -- This file is part of Open CASCADE Technology software library. |
4e57c75e |
5 | -- |
d5f74e42 |
6 | -- This library is free software; you can redistribute it and/or modify it under |
7 | -- the terms of the GNU Lesser General Public License version 2.1 as published |
973c2be1 |
8 | -- by the Free Software Foundation, with special exception defined in the file |
9 | -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT |
10 | -- distribution for complete text of the license and disclaimer of any warranty. |
4e57c75e |
11 | -- |
973c2be1 |
12 | -- Alternatively, this file may be used under the terms of Open CASCADE |
13 | -- commercial license or contractual agreement. |
4e57c75e |
14 | |
15 | class AlgoTools3D from BOPTools |
16 | ---Purpose: |
17 | -- The class contains handy static functions |
18 | -- dealing with the topology |
19 | -- This is the copy of BOPTools_AlgoTools3D.cdl file |
20 | |
21 | uses |
22 | Pln from gp, |
23 | Dir from gp, |
24 | Pnt from gp, |
25 | Pnt2d from gp, |
26 | |
27 | Surface from Geom, |
28 | |
29 | Shape from TopoDS, |
30 | Wire from TopoDS, |
31 | Face from TopoDS, |
32 | Edge from TopoDS, |
33 | Solid from TopoDS, |
34 | |
35 | ShapeEnum from TopAbs, |
36 | Orientation from TopAbs, |
37 | State from TopAbs, |
38 | |
39 | ListOfShape from BOPCol, |
40 | |
1e143abb |
41 | Context from IntTools, |
4e57c75e |
42 | |
43 | IndexedDataMapOfShapeListOfShape from BOPCol |
44 | |
45 | is |
46 | |
47 | DoSplitSEAMOnFace (myclass; |
48 | aSp: Edge from TopoDS; |
49 | aF : Face from TopoDS); |
50 | ---Purpose: |
51 | -- Make the edge <aSp> seam edge for the face <aF> |
52 | -- |
53 | |
54 | GetNormalToFaceOnEdge (myclass; |
55 | aE: Edge from TopoDS; |
56 | aF: Face from TopoDS; |
57 | aT: Real from Standard; |
58 | aD:out Dir from gp); |
59 | ---Purpose: |
60 | --- Computes normal to the face <aF> for the point on the edge <aE> |
61 | --- at parameter <aT> |
62 | --- |
63 | GetNormalToFaceOnEdge (myclass; |
64 | aE: Edge from TopoDS; |
65 | aF: Face from TopoDS; |
66 | aD:out Dir from gp); |
67 | ---Purpose: |
68 | --- Computes normal to the face <aF> for the point on the edge <aE> |
69 | --- at arbitrary intermediate parameter |
70 | --- |
71 | |
72 | SenseFlag (myclass; |
73 | aNF1 : Dir from gp; |
74 | aNF2 : Dir from gp) |
75 | returns Integer from Standard; |
76 | ---Purpose: |
77 | --- Returns 1 if scalar product aNF1* aNF2>0. |
78 | --- Returns 0 if directions aNF1 aNF2 coinside |
79 | --- Returns -1 if scalar product aNF1* aNF2<0. |
80 | --- |
81 | GetNormalToSurface (myclass; |
82 | aS: Surface from Geom; |
83 | U : Real from Standard; |
84 | V : Real from Standard; |
85 | aD:out Dir from gp) |
86 | returns Boolean from Standard; |
87 | ---Purpose: |
88 | --- Compute normal <aD> to surface <aS> in point (U,V) |
89 | --- Returns TRUE if directions aD1U, aD1V coinside |
90 | --- |
91 | |
92 | GetApproxNormalToFaceOnEdge (myclass; |
93 | aE: Edge from TopoDS; |
94 | aF: Face from TopoDS; |
95 | aT: Real from Standard; |
96 | aPx:out Pnt from gp; |
97 | aD:out Dir from gp; |
1e143abb |
98 | theContext:out Context from IntTools); |
4e57c75e |
99 | ---Purpose: |
100 | --- Computes normal to the face <aF> for the 3D-point that |
101 | --- belonds to the edge <aE> at parameter <aT>. |
102 | -- Output: |
103 | --- aPx - the 3D-point where the normal computed |
104 | --- aD - the normal; |
105 | --- |
106 | -- Warning: |
107 | --- The normal is computed not exactly in the point on the |
108 | --- edge, but in point that is near to the edge towards to |
109 | --- the face material (so, we'll have approx. normal) |
110 | --- |
111 | |
112 | GetApproxNormalToFaceOnEdge(myclass; |
113 | theE : Edge from TopoDS; |
114 | theF : Face from TopoDS; |
115 | aT : Real from Standard; |
116 | aP : out Pnt from gp; |
117 | aDNF : out Dir from gp; |
118 | aDt2D: Real from Standard); |
119 | |
120 | PointNearEdge (myclass; |
121 | aE : Edge from TopoDS; |
122 | aF : Face from TopoDS; |
123 | aT : Real from Standard; |
124 | aDt2D: Real from Standard; |
125 | aP2D :out Pnt2d from gp; |
126 | aPx :out Pnt from gp); |
127 | ---Purpose: |
128 | --- Compute the point <aPx>, (<aP2D>) that is near to |
129 | --- the edge <aE> at parameter <aT> towards to the |
130 | --- material of the face <aF>. The value of shifting in |
131 | --- 2D is <aDt2D> |
132 | --- |
133 | PointNearEdge (myclass; |
134 | aE: Edge from TopoDS; |
135 | aF: Face from TopoDS; |
136 | aT: Real from Standard; |
137 | aP2D:out Pnt2d from gp; |
138 | aPx:out Pnt from gp; |
1e143abb |
139 | theContext:out Context from IntTools); |
4e57c75e |
140 | ---Purpose: |
141 | --- Computes the point <aPx>, (<aP2D>) that is near to |
142 | --- the edge <aE> at parameter <aT> towards to the |
143 | --- material of the face <aF>. The value of shifting in |
144 | -- 2D is dt2D=BOPTools_AlgoTools3D::MinStepIn2d() |
145 | --- |
146 | PointNearEdge (myclass; |
147 | aE: Edge from TopoDS; |
148 | aF: Face from TopoDS; |
149 | aP2D:out Pnt2d from gp; |
150 | aPx:out Pnt from gp; |
1e143abb |
151 | theContext:out Context from IntTools); |
4e57c75e |
152 | ---Purpose: |
153 | --- Compute the point <aPx>, (<aP2D>) that is near to |
154 | --- the edge <aE> at arbitrary parameter towards to the |
155 | --- material of the face <aF>. The value of shifting in |
156 | -- 2D is dt2D=BOPTools_AlgoTools3D::MinStepIn2d() |
157 | --- |
158 | |
159 | MinStepIn2d(myclass) |
160 | returns Real from Standard; |
161 | ---Purpose: |
162 | --- Returns simple step value that is used in 2D-computations |
163 | --- = 1.e-5 |
164 | --- |
165 | IsEmptyShape(myclass; |
166 | aS: Shape from TopoDS) |
167 | returns Boolean from Standard; |
168 | ---Purpose: |
169 | --- Returns TRUE if the shape <aS> does not contain |
170 | --- geometry information (e.g. empty compound) |
171 | --- |
172 | |
173 | OrientEdgeOnFace (myclass; |
174 | aE : Edge from TopoDS; |
175 | aF : Face from TopoDS; |
176 | aER : out Edge from TopoDS); |
177 | ---Purpose: |
178 | --- Get the edge <aER> from the face <aF> that is the same as |
179 | --- the edge <aE> |
180 | --- |
181 | |
182 | PointInFace(myclass; |
183 | theF:Face from TopoDS; |
184 | theP:out Pnt from gp; |
185 | theP2D:out Pnt2d from gp; |
1e143abb |
186 | theContext:out Context from IntTools) |
4e57c75e |
187 | returns Integer from Standard; |
188 | ---Purpose: Computes a point <theP> inside the face <theF>. <br> |
189 | -- <theP2D> - 2D representation of <theP> <br> |
190 | -- on the surface of <theF> <br> |
191 | -- Returns 0 in case of success. <br> |
192 | |
193 | end AlgoTools3D; |