b311480e |
1 | -- Created on: 1996-12-11 |
2 | -- Created by: Robert COUBLANC |
3 | -- Copyright (c) 1996-1999 Matra Datavision |
973c2be1 |
4 | -- Copyright (c) 1999-2014 OPEN CASCADE SAS |
b311480e |
5 | -- |
973c2be1 |
6 | -- This file is part of Open CASCADE Technology software library. |
b311480e |
7 | -- |
d5f74e42 |
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 |
973c2be1 |
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. |
b311480e |
13 | -- |
973c2be1 |
14 | -- Alternatively, this file may be used under the terms of Open CASCADE |
15 | -- commercial license or contractual agreement. |
7fd59977 |
16 | |
17 | package AIS |
18 | |
19 | ---Purpose: Application Interactive Services provide the means to |
20 | -- create links between an application GUI viewer and |
21 | -- the packages which are used to manage selection |
22 | -- and presentation. The tools AIS defined in order to |
23 | -- do this include different sorts of entities: both the |
24 | -- selectable viewable objects themselves and the |
25 | -- context and attribute managers to define their |
26 | -- selection and display. |
27 | -- To orient the user as he works in a modeling |
28 | -- environment, views and selections must be |
29 | -- comprehensible. There must be several different sorts |
30 | -- of selectable and viewable object defined. These must |
31 | -- also be interactive, that is, connecting graphic |
32 | -- representation and the underlying reference |
33 | -- geometry. These entities are called Interactive |
34 | -- Objects, and are divided into four types: |
35 | -- - the Datum |
36 | -- - the Relation |
37 | -- - the Object |
38 | -- - None. |
39 | -- The Datum groups together the construction elements |
40 | -- such as lines, circles, points, trihedra, plane trihedra, |
41 | -- planes and axes. |
42 | -- The Relation is made up of constraints on one or |
43 | -- more interactive shapes and the corresponding |
44 | -- reference geometry. For example, you might want to |
45 | -- constrain two edges in a parallel relation. This |
46 | -- contraint is considered as an object in its own right, |
47 | -- and is shown as a sensitive primitive. This takes the |
48 | -- graphic form of a perpendicular arrow marked with |
49 | -- the || symbol and lying between the two edges. |
50 | -- The Object type includes topological shapes, and |
51 | -- connections between shapes. |
52 | -- None, in order not to eliminate the object, tells the |
53 | -- application to look further until it finds an object |
54 | -- definition in its generation which is accepted. |
55 | -- Inside these categories, you have the possibility |
56 | -- of an additional characterization by means of a |
57 | -- signature. The signature provides an index to the |
58 | -- further characterization. By default, the Interactive |
59 | -- Object has a None type and a signature of 0 |
60 | -- (equivalent to None.) If you want to give a particular |
61 | -- type and signature to your interactive object, you must |
62 | -- redefine the two virtual methods: Type and Signature. |
63 | -- In the C++ inheritance structure of the package, each |
64 | -- class representing a specific Interactive Object |
65 | -- inherits AIS_InteractiveObject. Among these |
66 | -- inheriting classes, AIS_Relation functions as the |
67 | -- abstract mother class for tinheriting classes defining |
68 | -- display of specific relational constraints and types of |
69 | -- dimension. Some of these include: |
70 | -- - display of constraints based on relations of |
71 | -- symmetry, tangency, parallelism and concentricity |
72 | -- - display of dimensions for angles, offsets, |
73 | -- diameters, radii and chamfers. |
74 | -- No viewer can show everything at once with any |
75 | -- coherence or clarity. Views must be managed |
76 | -- carefully both sequentially and at any given instant. |
77 | -- Another function of the view is that of a context to |
78 | -- carry out design in. The design changes are applied |
79 | -- to the objects in the view and then extended to the |
80 | -- underlying reference geometry by a solver. To make |
81 | -- sense of this complicated visual data, several display |
82 | -- and selection tools are required. To facilitate |
83 | -- management, each object and each construction |
84 | -- element has a selection priority. There are also |
85 | -- means to modify the default priority. |
86 | -- To define an environment of dynamic detection, you |
87 | -- can use standard filter classes or create your own. A |
88 | -- filter questions the owner of the sensitive primitive in |
89 | -- local context to determine if it has the the desired |
90 | -- qualities. If it answers positively, it is kept. If not, it is rejected. |
91 | -- The standard filters supplied in AIS include: |
92 | -- AIS_AttributeFilter |
93 | -- AIS_SignatureFilter |
94 | -- AIS_TypeFilter. |
95 | -- Only the type filter can be used in the default |
96 | -- operating mode, the neutral point. The others can |
97 | -- only be used in open local contexts. |
98 | -- Neutral point and local context constitute the two |
99 | -- operating modes of the central entity which pilots |
100 | -- visualizations and selections, the Interactive Context. |
101 | -- It is linked to a main viewer and if you like, a trash bin |
102 | -- viewer as well. |
103 | -- The neutral point, which is the default mode, allows |
104 | -- you to easily visualize and select interactive objects |
105 | -- which have been loaded into the context. Opening |
106 | -- local contexts allows you to prepare and use a |
107 | -- temporary selection environment without disturbing |
108 | -- the neutral point. A set of functions allows you to |
109 | -- choose the interactive objects which you want to act |
110 | -- on, the selection modes which you want to activate, |
111 | -- and the temporary visualizations which you will |
112 | -- execute. When the operation is finished, you close the |
113 | -- current local context and return to the state in which |
114 | -- you were before opening it (neutral point or previous |
115 | -- local context). |
116 | -- An interactive object can have a certain number of |
117 | -- graphic attributes which are specific to it, such as |
118 | -- visualization mode, color, and material. By the same |
119 | -- token, the interactive context has a set of graphic |
120 | -- attributes, the Drawer which is valid by default for the |
121 | -- objects it controls. When an interactive object is |
122 | -- visualized, the required graphic attributes are first |
123 | -- taken from the object's own Drawer if one exists, or |
124 | -- from the context drawer for the others. |
125 | |
126 | |
127 | uses |
128 | TCollection, |
129 | MMgt, |
130 | Quantity, |
131 | TColgp, |
132 | TColStd, |
133 | TopLoc, |
134 | gp, |
135 | Geom, |
136 | Bnd, |
137 | Aspect, |
7fd59977 |
138 | Graphic3d, |
139 | V3d, |
140 | TopAbs, |
141 | TopoDS, |
142 | Prs3d, |
143 | PrsMgr, |
144 | Select3D, |
145 | SelectMgr, |
146 | StdSelect, |
147 | DsgPrs, |
148 | TopTools, |
f376ac72 |
149 | Poly, |
150 | Image |
7fd59977 |
151 | |
152 | is |
153 | |
154 | |
0a768f56 |
155 | enumeration DisplayMode is WireFrame, Shaded; |
7fd59977 |
156 | ---Purpose: |
157 | -- Sets display modes other than neutral point ones, |
158 | -- for interactive objects. The possibilities include: |
159 | -- - wireframe, |
160 | -- - shaded, |
161 | |
162 | enumeration ConnectStatus is |
163 | CS_None, |
164 | CS_Connection, |
165 | CS_Transform, |
166 | CS_Both; |
167 | ---Purpose: Gives the status of connection of an Interactive |
168 | -- Object. This will be one of the following: |
169 | -- - No connection |
170 | -- - Connection |
171 | -- - Transformation |
172 | -- - Both connection and transformation |
173 | -- This enumeration is used in |
174 | -- AIS_ConnectedInteractive. Transform indicates |
175 | -- that the Interactive Object reference geometry has |
176 | -- changed location relative to the reference geometry. |
177 | |
178 | enumeration TypeOfIso is |
179 | TOI_IsoU, |
180 | TOI_IsoV, |
181 | TOI_Both; |
182 | ---Purpose: Declares the type of isoparameter displayed. |
183 | |
184 | enumeration DisplayStatus is |
185 | DS_Displayed, |
186 | DS_Erased, |
7fd59977 |
187 | DS_Temporary, |
188 | DS_None; |
189 | ---Purpose: |
190 | -- To give the display status of an Interactive Object. |
191 | -- This will be one of the following: |
192 | -- - DS_Displayed: the Interactive Object is |
193 | -- displayed in the main viewer; |
ed8cad74 |
194 | -- - DS_Erased: the Interactive Object is hidden in main viewer; |
7fd59977 |
195 | -- - DS_Temporary: the Interactive Object is temporarily displayed; |
196 | -- - DS_None: the Interactive Object is nowhere displayed. |
197 | |
198 | enumeration SelectStatus is |
199 | SS_Added, |
200 | SS_Removed, |
201 | SS_NotDone |
202 | end SelectStatus; |
203 | |
204 | enumeration StatusOfPick is |
205 | SOP_Error, |
206 | SOP_NothingSelected, |
207 | SOP_Removed, |
208 | SOP_OneSelected, |
209 | SOP_SeveralSelected |
210 | end StatusOfPick; |
211 | |
212 | enumeration StatusOfDetection is |
213 | SOD_Error, |
214 | SOD_Nothing, |
215 | SOD_AllBad, |
216 | SOD_Selected, |
217 | SOD_OnlyOneDetected, |
218 | SOD_OnlyOneGood, |
219 | SOD_SeveralGood |
220 | end StatusOfDetection; |
221 | |
222 | enumeration KindOfDimension is |
223 | KOD_NONE, |
224 | KOD_LENGTH, |
225 | KOD_PLANEANGLE, |
226 | KOD_SOLIDANGLE, |
227 | KOD_AREA, |
228 | KOD_VOLUME, |
229 | KOD_MASS, |
230 | KOD_TIME, |
231 | KOD_RADIUS, |
232 | KOD_DIAMETER, |
233 | KOD_CHAMF2D, |
234 | KOD_CHAMF3D, |
235 | KOD_OFFSET, |
236 | KOD_ELLIPSERADIUS; |
237 | ---Purpose: Declares the kinds of dimensions needed in the |
238 | -- display of Interactive Objects. |
239 | |
240 | enumeration KindOfInteractive is |
241 | KOI_None, |
242 | KOI_Datum, |
243 | KOI_Shape, |
244 | KOI_Object, |
af203d54 |
245 | KOI_Relation, |
246 | KOI_Dimension; |
247 | --- Purpose: Declares the type of Interactive Object. |
248 | -- This is one of the following: |
249 | -- - the Datum |
250 | -- - the Object |
251 | -- - the Relation |
252 | -- - the Dimension |
253 | -- - the None type. |
254 | -- The Datum is the construction element. These include |
255 | -- points, lines, axes and planes. The object brings |
256 | -- together topological shapes. The Relation includes |
257 | -- dimensions and constraints. The Dimension includes |
258 | -- length, radius, diameter and angle dimensions. |
259 | -- When the object is of an unknown type, the None |
260 | -- type is declared. |
261 | |
7fd59977 |
262 | enumeration ClearMode is |
263 | CM_All, |
264 | CM_Interactive, |
265 | CM_Filters, |
266 | CM_StandardModes, |
267 | CM_TemporaryShapePrs |
268 | end ClearMode; |
269 | ---Purpose: Declares which entities in an opened local context |
270 | -- are to be cleared of mode settings. Temporary |
271 | -- graphic presentations such as those for sub-shapes, |
272 | -- for example, are only created for the selection |
273 | -- process. By means of these enumerations, they can |
274 | -- be cleared from local context. |
a6eb515f |
275 | |
7fd59977 |
276 | enumeration KindOfUnit is |
277 | TOU_LENGTH, |
278 | TOU_SURFACE, |
279 | TOU_VOLUME, |
280 | TOU_PLANE_ANGLE, |
281 | TOU_SOLID_ANGLE, |
282 | TOU_MASS, |
283 | TOU_FORCE, |
284 | TOU_TIME; |
a6eb515f |
285 | ---Purpose: Declares the type of Interactive Object unit. |
286 | |
7fd59977 |
287 | enumeration TypeOfAxis is TOAX_Unknown,TOAX_XAxis,TOAX_YAxis,TOAX_ZAxis; |
a6eb515f |
288 | ---Purpose: Declares the type of axis. |
289 | |
7fd59977 |
290 | enumeration TypeOfPlane is TOPL_Unknown,TOPL_XYPlane,TOPL_XZPlane,TOPL_YZPlane; |
a6eb515f |
291 | ---Purpose: Declares the type of plane. |
7fd59977 |
292 | enumeration TypeOfDist is TOD_Unknown,TOD_Horizontal,TOD_Vertical; |
a6eb515f |
293 | ---Purpose: To declare the type of distance. |
294 | |
7fd59977 |
295 | enumeration TypeOfAttribute is |
296 | TOA_Line, |
a6eb515f |
297 | TOA_Dimension, |
7fd59977 |
298 | TOA_Wire, |
299 | TOA_Plane, |
300 | TOA_Vector, |
301 | TOA_UIso, |
302 | TOA_VIso, |
303 | TOA_Free, |
304 | TOA_UnFree, |
305 | TOA_Section, |
306 | TOA_Hidden, |
307 | TOA_Seen, |
308 | TOA_FirstAxis, |
309 | TOA_SecondAxis, |
310 | TOA_ThirdAxis; |
7fd59977 |
311 | |
a6eb515f |
312 | enumeration StandardDatum is SD_None,SD_Point,SD_Axis,SD_Trihedron,SD_PlaneTrihedron,SD_Line,SD_Circle,SD_Plane; |
313 | --- Purpose: Declares the type of standard datum of an Interactive Object. |
7fd59977 |
314 | |
315 | enumeration KindOfSurface is KOS_Plane, KOS_Cylinder, KOS_Cone, KOS_Sphere, KOS_Torus, |
a6eb515f |
316 | KOS_Revolution, KOS_Extrusion, KOS_OtherSurface; |
317 | |
318 | -- Enumerations for dimensions management -- |
319 | |
320 | enumeration DisplaySpecialSymbol is DSS_No, DSS_Before, DSS_After; |
321 | ---Purpose: Specifies dimension special symbol display options |
322 | |
fe83e1ea |
323 | enumeration DimensionSelectionMode is DSM_All, DSM_Line, DSM_Text; |
324 | ---Purpose: Specifies dimension selection modes. |
a6eb515f |
325 | |
7fd59977 |
326 | class Triangulation; |
327 | |
f376ac72 |
328 | imported TexturedShape; |
7fd59977 |
329 | |
330 | class Drawer; |
331 | |
332 | class InteractiveContext; |
333 | |
334 | class GraphicTool; |
335 | |
1bd2fa67 |
336 | class LocalContext; |
7fd59977 |
337 | |
338 | private class LocalStatus; |
339 | |
340 | private class GlobalStatus; |
341 | |
342 | deferred class InteractiveObject; |
343 | |
344 | ---Category: VARIOUS STANDARD INTERACTIVE OBJECTS |
345 | -- each type of Datum has a given signature. |
346 | -- the other interactive objects don't |
347 | -- implement this signature. |
348 | -- Mainly used for selection with Filters... |
349 | |
350 | ---Category: Datum |
351 | class Point; --signature 1 |
352 | class Axis; --signature 2 |
353 | class Trihedron; --signature 3 |
354 | class PlaneTrihedron; --signature 4 |
355 | class Line; --signature 5 |
356 | class Circle; --signature 6 |
357 | class Plane; --signature 7 |
358 | |
359 | |
360 | ---Category: Object of type Shape |
361 | class Shape; --signature 0 |
362 | class ConnectedShape; --signature 1 |
363 | class MultipleConnectedShape; --signature 2 |
364 | |
365 | |
366 | |
367 | ---Category: General Objects |
368 | class ConnectedInteractive; --signature 0 |
369 | class MultipleConnectedInteractive; --signature 1 |
370 | |
371 | ---Category: DIMENSIONS AND RELATIONS |
372 | |
373 | class DimensionOwner; |
374 | |
375 | deferred class Relation; |
376 | deferred class EllipseRadiusDimension; |
377 | class MaxRadiusDimension; |
378 | class MinRadiusDimension; |
a6eb515f |
379 | imported LengthDimension; |
380 | imported AngleDimension; |
381 | imported RadiusDimension; |
382 | imported DiameterDimension; |
7fd59977 |
383 | class Chamf2dDimension; |
384 | class Chamf3dDimension; |
385 | class OffsetDimension; |
386 | class FixRelation; |
387 | class PerpendicularRelation; |
388 | class ParallelRelation; |
389 | class TangentRelation; |
390 | class ConcentricRelation; |
391 | class IdenticRelation; |
392 | class SymmetricRelation; -- axial symmetry |
393 | class MidPointRelation; -- equal distance from point |
394 | class EqualRadiusRelation; |
395 | class EqualDistanceRelation; |
396 | |
397 | |
398 | ---Category: FILTERS |
399 | |
400 | |
401 | class TypeFilter; |
402 | class SignatureFilter; |
403 | class ExclusionFilter; |
404 | class AttributeFilter; |
405 | class C0RegularityFilter; |
406 | class BadEdgeFilter; |
407 | |
408 | pointer PToContext to InteractiveContext from AIS; |
409 | |
410 | |
411 | |
412 | |
413 | class Selection; |
414 | |
415 | |
416 | ---Category: The Collections |
417 | |
418 | |
419 | class ListOfInteractive instantiates List from TCollection |
420 | (InteractiveObject from AIS); |
421 | |
422 | class SequenceOfInteractive instantiates Sequence from TCollection |
423 | (InteractiveObject from AIS); |
424 | |
425 | class SequenceOfDimension instantiates Sequence from TCollection |
426 | (Relation from AIS); |
427 | |
428 | class MapOfInteractive instantiates Map from TCollection |
429 | (InteractiveObject from AIS,MapTransientHasher from TColStd); |
430 | |
431 | |
432 | class DataMapofIntegerListOfinteractive instantiates DataMap from |
433 | TCollection(Integer from Standard, ListOfInteractive from AIS,MapIntegerHasher from TColStd); |
434 | -- for further management of layers |
435 | |
436 | private class DataMapOfIOStatus instantiates DataMap from |
437 | TCollection(InteractiveObject from AIS,GlobalStatus from AIS,MapTransientHasher from TColStd); |
438 | -- Management of interactiveObjects Status... |
439 | |
440 | class IndexedDataMapOfOwnerPrs instantiates IndexedDataMap from TCollection |
441 | (EntityOwner from SelectMgr,Presentation from Prs3d ,MapTransientHasher from TColStd); |
442 | -- for dynamic selection management in local context... |
443 | |
444 | -- san: 18/04/2003 AIS_Selection class optimization |
445 | -- agv: 04/05/2003 Replace NCollection_List for CDL list |
446 | imported NListTransient; |
447 | imported NListIteratorOfListTransient; |
448 | imported NDataMapOfTransientIteratorOfListTransient; |
449 | -- service map for AIS_Selection class optimized logic |
450 | |
451 | private class DataMapOfILC instantiates DataMap from TCollection |
452 | (Integer from Standard, LocalContext from AIS, MapIntegerHasher from TColStd); |
453 | |
454 | private class DataMapOfSelStat instantiates DataMap from TCollection |
455 | (SelectableObject from SelectMgr,LocalStatus from AIS,MapTransientHasher from TColStd); |
456 | -- to tell if an object is sensitive to Standard Modes Of Selection.... |
457 | |
458 | -- Methods for dimensions |
459 | |
460 | Nearest( aShape : Shape from TopoDS; |
461 | aPoint : Pnt from gp ) |
462 | returns Pnt from gp; |
463 | ---Purpose: |
464 | -- Returns the nearest point in a shape. This is used by |
465 | -- several classes in calculation of dimensions. |
60bf98ae |
466 | |
467 | Nearest (theLine : Lin from gp; |
468 | thePoint : Pnt from gp) |
469 | returns Pnt from gp; |
470 | ---Purpose: |
471 | -- @return the nearest point on the line. |
472 | |
473 | Nearest (theCurve : Curve from Geom; |
474 | thePoint : Pnt from gp; |
475 | theFirstPoint : Pnt from gp; |
476 | theLastPoint : Pnt from gp; |
477 | theNearestPoint : out Pnt from gp) |
478 | returns Boolean from Standard; |
479 | ---Purpose: |
480 | -- For the given point finds nearest point on the curve, |
481 | -- @return TRUE if found point is belongs to the curve |
482 | -- and FALSE otherwise. |
483 | |
7fd59977 |
484 | Farest( aShape : Shape from TopoDS; |
485 | aPoint : Pnt from gp ) |
486 | returns Pnt from gp; |
487 | |
60bf98ae |
488 | ComputeGeometry (theEdge : Edge from TopoDS; |
489 | theCurve : out Curve from Geom; |
490 | theFirstPnt : out Pnt from gp; |
491 | theLastPnt : out Pnt from gp) |
7fd59977 |
492 | ---Purpose: Used by 2d Relation only |
493 | -- Computes the 3d geometry of <anEdge> in the current WorkingPlane |
494 | -- and the extremities if any |
60bf98ae |
495 | -- Return TRUE if ok. |
7fd59977 |
496 | returns Boolean from Standard; |
60bf98ae |
497 | |
498 | ComputeGeometry (theEdge : Edge from TopoDS; |
499 | theCurve : out Curve from Geom; |
500 | theFirstPnt : out Pnt from gp; |
501 | theLastPnt : out Pnt from gp; |
502 | theIsInfinite : out Boolean from Standard) |
503 | ---Purpose: Used by dimensions only. |
504 | -- Computes the 3d geometry of <anEdge>. |
505 | -- Return TRUE if ok. |
506 | returns Boolean from Standard; |
507 | |
508 | ComputeGeometry (theEdge : Edge from TopoDS; |
509 | theCurve : out Curve from Geom; |
510 | theFirstPnt : out Pnt from gp; |
511 | theLastPnt : out Pnt from gp; |
512 | theExtCurve : out Curve from Geom; |
513 | theIsInfinite : out Boolean from Standard; |
514 | theIsOnPlane : out Boolean from Standard; |
515 | thePlane : Plane from Geom) |
7fd59977 |
516 | ---Purpose: Used by 2d Relation only |
517 | -- Computes the 3d geometry of <anEdge> in the current WorkingPlane |
518 | -- and the extremities if any. |
519 | -- If <aCurve> is not in the current plane, <extCurve> contains |
520 | -- the not projected curve associated to <anEdge>. |
521 | -- If <anEdge> is infinite, <isinfinite> = true and the 2 |
522 | -- parameters <FirstPnt> and <LastPnt> have no signification. |
60bf98ae |
523 | -- Return TRUE if ok. |
7fd59977 |
524 | returns Boolean from Standard; |
60bf98ae |
525 | |
526 | ComputeGeometry (theFirstEdge : Edge from TopoDS; |
527 | theSecondEdge : Edge from TopoDS; |
528 | theFirstCurve : out Curve from Geom; |
529 | theSecondCurve : out Curve from Geom; |
530 | theFirstPnt1 : out Pnt from gp; |
531 | theLastPnt1 : out Pnt from gp; |
532 | theFirstPnt2 : out Pnt from gp; |
533 | theLastPnt2 : out Pnt from gp; |
534 | thePlane : Plane from Geom) |
7fd59977 |
535 | ---Purpose: Used by 2d Relation only |
536 | -- Computes the 3d geometry of <anEdge> in the current WorkingPlane |
537 | -- and the extremities if any |
60bf98ae |
538 | -- Return TRUE if ok. |
7fd59977 |
539 | returns Boolean from Standard; |
540 | |
60bf98ae |
541 | ComputeGeometry (theFirstEdge : Edge from TopoDS; |
542 | theSecondEdge : Edge from TopoDS; |
543 | theFirstCurve : out Curve from Geom; |
544 | theSecondCurve : out Curve from Geom; |
545 | theFirstPnt1 : out Pnt from gp; |
546 | theLastPnt1 : out Pnt from gp; |
547 | theFirstPnt2 : out Pnt from gp; |
548 | theLastPnt2 : out Pnt from gp; |
549 | theIsinfinite1 : out Boolean from Standard; |
550 | theIsinfinite2 : out Boolean from Standard) |
551 | ---Purpose: Used by dimensions only.Computes the 3d geometry |
552 | -- of<anEdge1> and <anEdge2> and checks if they are infinite. |
553 | returns Boolean from Standard; |
7fd59977 |
554 | |
60bf98ae |
555 | ComputeGeometry (theFirstEdge : Edge from TopoDS; |
556 | theSecondEdge : Edge from TopoDS; |
557 | theExtIndex : out Integer from Standard; |
558 | theFirstCurve : out Curve from Geom; |
559 | theSecondCurve : out Curve from Geom; |
560 | theFirstPnt1 : out Pnt from gp; |
561 | theLastPnt1 : out Pnt from gp; |
562 | theFirstPnt2 : out Pnt from gp; |
563 | theLastPnt2 : out Pnt from gp; |
564 | theExtCurve : out Curve from Geom; |
565 | theIsinfinite1 : out Boolean from Standard; |
566 | theIsinfinite2 : out Boolean from Standard; |
567 | thePlane : Plane from Geom) |
7fd59977 |
568 | ---Purpose: Used by 2d Relation only Computes the 3d geometry |
569 | -- of<anEdge1> and <anEdge2> in the current Plane and the |
570 | -- extremities if any. Return in ExtCurve the 3d curve |
571 | -- (not projected in the plane) of the first edge if |
572 | -- <indexExt> =1 or of the 2nd edge if <indexExt> = 2. If |
573 | -- <indexExt> = 0, ExtCurve is Null. if there is an edge |
574 | -- external to the plane, <isinfinite> is true if this |
575 | -- edge is infinite. So, the extremities of it are not |
576 | -- significant. Return TRUE if ok |
577 | returns Boolean from Standard; |
578 | |
60bf98ae |
579 | ComputeGeomCurve (aCurve : in out Curve from Geom; |
580 | first1 : Real from Standard; |
581 | last1 : Real from Standard; |
582 | FirstPnt1 : out Pnt from gp; |
583 | LastPnt1 : out Pnt from gp; |
584 | aPlane : Plane from Geom; |
585 | isOnPlane: out Boolean from Standard) |
7fd59977 |
586 | ---Purpose: Checks if aCurve belongs to aPlane; if not, projects aCurve in aPlane |
587 | -- and returns aCurve; |
588 | -- Return TRUE if ok |
589 | returns Boolean from Standard; |
590 | |
60bf98ae |
591 | ComputeGeometry (aVertex : Vertex from TopoDS; |
592 | point : out Pnt from gp; |
593 | aPlane : Plane from Geom; |
594 | isOnPlane: out Boolean from Standard) |
7fd59977 |
595 | returns Boolean from Standard; |
7fd59977 |
596 | |
60bf98ae |
597 | GetPlaneFromFace (aFace : Face from TopoDS; |
598 | aPlane : out Pln from gp; |
599 | aSurf : out Surface from Geom; |
600 | aSurfType : out KindOfSurface from AIS; |
601 | Offset : out Real from Standard) |
7fd59977 |
602 | returns Boolean from Standard; |
603 | ---Purpose: Tryes to get Plane from Face. Returns Surface of Face |
604 | -- in aSurf. Returns Standard_True and Plane of Face in |
605 | -- aPlane in following cases: |
606 | -- Face is Plane, Offset of Plane, |
607 | -- Extrusion of Line and Offset of Extrusion of Line |
60bf98ae |
608 | -- Returns pure type of Surface which can be: |
609 | -- Plane, Cylinder, Cone, Sphere, Torus, |
610 | -- SurfaceOfRevolution, SurfaceOfExtrusion |
611 | |
612 | InitFaceLength (aFace : Face from TopoDS; |
613 | aPlane : out Pln from gp; |
614 | aSurface : out Surface from Geom; |
615 | aSurfaceType : out KindOfSurface from AIS; |
616 | anOffset : out Real from Standard ); |
617 | |
618 | InitLengthBetweenCurvilinearFaces (theFirstFace : Face from TopoDS; |
619 | theSecondFace : Face from TopoDS; |
620 | theFirstSurf : in out Surface from Geom; |
621 | theSecondSurf : in out Surface from Geom; |
622 | theFirstAttach : out Pnt from gp; |
623 | theSecondAttach : out Pnt from gp; |
624 | theDirOnPlane : out Dir from gp); |
625 | ---Purpose: Finds attachment points on two curvilinear faces for length dimension. |
626 | -- @param thePlaneDir [in] the direction on the dimension plane to |
627 | -- compute the plane automatically. It will not be taken into account if |
628 | -- plane is defined by user. |
629 | |
630 | InitAngleBetweenPlanarFaces (theFirstFace : Face from TopoDS; |
631 | theSecondFace : Face from TopoDS; |
632 | theCenter : out Pnt from gp; |
633 | theFirstAttach : out Pnt from gp; |
634 | theSecondAttach : out Pnt from gp; |
635 | theIsFirstPointSet : Boolean from Standard = Standard_False) |
636 | returns Boolean from Standard; |
637 | ---Purpose: Finds three points for the angle dimension between |
638 | -- two planes. |
639 | |
640 | InitAngleBetweenCurvilinearFaces (theFirstFace : Face from TopoDS; |
641 | theSecondFace : Face from TopoDS; |
642 | theFirstSurfType : KindOfSurface from AIS; |
643 | theSecondSurfType : KindOfSurface from AIS; |
644 | theCenter : out Pnt from gp; |
645 | theFirstAttach : out Pnt from gp; |
646 | theSecondAttach : out Pnt from gp; |
647 | theIsFirstPointSet : Boolean from Standard = Standard_False) |
648 | returns Boolean from Standard; |
649 | ---Purpose: Finds three points for the angle dimension between |
650 | -- two curvilinear surfaces. |
7fd59977 |
651 | |
652 | ProjectPointOnPlane( aPoint : Pnt from gp; aPlane : Pln from gp ) |
653 | returns Pnt from gp; |
654 | |
655 | ProjectPointOnLine( aPoint : Pnt from gp; aLine : Lin from gp ) |
656 | returns Pnt from gp; |
657 | |
658 | TranslatePointToBound( aPoint : Pnt from gp; aDir : Dir from gp; aBndBox: Box from Bnd ) |
659 | returns Pnt from gp; |
660 | |
661 | InDomain( aFirstPar : Real from Standard; |
662 | aLastPar : Real from Standard; |
663 | anAttachPar : Real from Standard) |
664 | returns Boolean from Standard; |
665 | ---Purpose: returns True if point with anAttachPar is |
666 | -- in domain of arc |
667 | |
668 | NearestApex(elips : Elips from gp; |
669 | pApex : Pnt from gp; |
670 | nApex : Pnt from gp; |
671 | fpara : Real from Standard ; |
672 | lpara : Real from Standard ; |
673 | IsInDomain : out Boolean from Standard) |
674 | returns Pnt from gp; |
675 | ---Purpose: computes nearest to ellipse arc apex |
676 | |
677 | DistanceFromApex(elips : Elips from gp; |
678 | Apex : Pnt from gp; |
679 | par : Real from Standard ) |
680 | returns Real from Standard; |
681 | ---Purpose: computes length of ellipse arc in parametric units |
682 | |
683 | |
684 | ComputeProjEdgePresentation(aPres : mutable Presentation from Prs3d; |
685 | aDrawer : mutable Drawer from AIS; |
686 | anEdge : Edge from TopoDS; |
687 | ProjCurve: Curve from Geom; |
688 | FirstP : Pnt from gp; |
689 | LastP : Pnt from gp; |
690 | aColor : NameOfColor from Quantity = Quantity_NOC_PURPLE; |
691 | aWidth : Real from Standard = 2; |
692 | aProjTOL : TypeOfLine from Aspect = Aspect_TOL_DASH; |
693 | aCallTOL : TypeOfLine from Aspect = Aspect_TOL_DOT); |
694 | |
695 | ComputeProjVertexPresentation(aPres : mutable Presentation from Prs3d; |
696 | aDrawer : mutable Drawer from AIS; |
697 | aVertex : Vertex from TopoDS; |
698 | ProjPoint: Pnt from gp; |
699 | aColor : NameOfColor from Quantity = Quantity_NOC_PURPLE; |
700 | aWidth : Real from Standard = 2; |
701 | aProjTOM : TypeOfMarker from Aspect = Aspect_TOM_PLUS; |
702 | aCallTOL : TypeOfLine from Aspect = Aspect_TOL_DOT); |
703 | |
704 | end AIS; |