Commit | Line | Data |
---|---|---|

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 | ||

ad3217cd | 328 | imported ColoredShape; |

f376ac72 | 329 | imported TexturedShape; |

7fd59977 | 330 | |

331 | class Drawer; | |

332 | ||

333 | class InteractiveContext; | |

334 | ||

335 | class GraphicTool; | |

336 | ||

1bd2fa67 | 337 | class LocalContext; |

7fd59977 | 338 | |

339 | private class LocalStatus; | |

340 | ||

341 | private class GlobalStatus; | |

342 | ||

343 | deferred class InteractiveObject; | |

344 | ||

345 | ---Category: VARIOUS STANDARD INTERACTIVE OBJECTS | |

346 | -- each type of Datum has a given signature. | |

347 | -- the other interactive objects don't | |

348 | -- implement this signature. | |

349 | -- Mainly used for selection with Filters... | |

350 | ||

351 | ---Category: Datum | |

352 | class Point; --signature 1 | |

353 | class Axis; --signature 2 | |

354 | class Trihedron; --signature 3 | |

355 | class PlaneTrihedron; --signature 4 | |

356 | class Line; --signature 5 | |

357 | class Circle; --signature 6 | |

358 | class Plane; --signature 7 | |

359 | ||

360 | ||

361 | ---Category: Object of type Shape | |

362 | class Shape; --signature 0 | |

7fd59977 | 363 | |

364 | ||

365 | ---Category: General Objects | |

366 | class ConnectedInteractive; --signature 0 | |

d33222c1 | 367 | class MultipleConnectedInteractive; --signature 1 |

368 | imported PointCloud; | |

7fd59977 | 369 | |

370 | ---Category: DIMENSIONS AND RELATIONS | |

371 | ||

372 | class DimensionOwner; | |

373 | ||

374 | deferred class Relation; | |

375 | deferred class EllipseRadiusDimension; | |

376 | class MaxRadiusDimension; | |

377 | class MinRadiusDimension; | |

a6eb515f | 378 | imported LengthDimension; |

379 | imported AngleDimension; | |

380 | imported RadiusDimension; | |

381 | imported DiameterDimension; | |

7fd59977 | 382 | class Chamf2dDimension; |

383 | class Chamf3dDimension; | |

384 | class OffsetDimension; | |

385 | class FixRelation; | |

386 | class PerpendicularRelation; | |

387 | class ParallelRelation; | |

388 | class TangentRelation; | |

389 | class ConcentricRelation; | |

390 | class IdenticRelation; | |

391 | class SymmetricRelation; -- axial symmetry | |

392 | class MidPointRelation; -- equal distance from point | |

393 | class EqualRadiusRelation; | |

394 | class EqualDistanceRelation; | |

395 | ||

396 | ||

397 | ---Category: FILTERS | |

398 | ||

399 | ||

400 | class TypeFilter; | |

401 | class SignatureFilter; | |

402 | class ExclusionFilter; | |

403 | class AttributeFilter; | |

404 | class C0RegularityFilter; | |

405 | class BadEdgeFilter; | |

406 | ||

407 | pointer PToContext to InteractiveContext from AIS; | |

408 | ||

409 | ||

410 | ||

411 | ||

412 | class Selection; | |

413 | ||

414 | ||

415 | ---Category: The Collections | |

416 | ||

417 | ||

418 | class ListOfInteractive instantiates List from TCollection | |

419 | (InteractiveObject from AIS); | |

420 | ||

421 | class SequenceOfInteractive instantiates Sequence from TCollection | |

422 | (InteractiveObject from AIS); | |

423 | ||

424 | class SequenceOfDimension instantiates Sequence from TCollection | |

425 | (Relation from AIS); | |

426 | ||

427 | class MapOfInteractive instantiates Map from TCollection | |

428 | (InteractiveObject from AIS,MapTransientHasher from TColStd); | |

429 | ||

430 | ||

431 | class DataMapofIntegerListOfinteractive instantiates DataMap from | |

432 | TCollection(Integer from Standard, ListOfInteractive from AIS,MapIntegerHasher from TColStd); | |

433 | -- for further management of layers | |

434 | ||

435 | private class DataMapOfIOStatus instantiates DataMap from | |

436 | TCollection(InteractiveObject from AIS,GlobalStatus from AIS,MapTransientHasher from TColStd); | |

437 | -- Management of interactiveObjects Status... | |

438 | ||

439 | class IndexedDataMapOfOwnerPrs instantiates IndexedDataMap from TCollection | |

440 | (EntityOwner from SelectMgr,Presentation from Prs3d ,MapTransientHasher from TColStd); | |

441 | -- for dynamic selection management in local context... | |

442 | ||

443 | -- san: 18/04/2003 AIS_Selection class optimization | |

444 | -- agv: 04/05/2003 Replace NCollection_List for CDL list | |

445 | imported NListTransient; | |

446 | imported NListIteratorOfListTransient; | |

447 | imported NDataMapOfTransientIteratorOfListTransient; | |

448 | -- service map for AIS_Selection class optimized logic | |

449 | ||

450 | private class DataMapOfILC instantiates DataMap from TCollection | |

451 | (Integer from Standard, LocalContext from AIS, MapIntegerHasher from TColStd); | |

452 | ||

453 | private class DataMapOfSelStat instantiates DataMap from TCollection | |

454 | (SelectableObject from SelectMgr,LocalStatus from AIS,MapTransientHasher from TColStd); | |

455 | -- to tell if an object is sensitive to Standard Modes Of Selection.... | |

456 | ||

457 | -- Methods for dimensions | |

458 | ||

459 | Nearest( aShape : Shape from TopoDS; | |

460 | aPoint : Pnt from gp ) | |

461 | returns Pnt from gp; | |

462 | ---Purpose: | |

463 | -- Returns the nearest point in a shape. This is used by | |

464 | -- several classes in calculation of dimensions. | |

60bf98ae | 465 | |

466 | Nearest (theLine : Lin from gp; | |

467 | thePoint : Pnt from gp) | |

468 | returns Pnt from gp; | |

469 | ---Purpose: | |

470 | -- @return the nearest point on the line. | |

471 | ||

472 | Nearest (theCurve : Curve from Geom; | |

473 | thePoint : Pnt from gp; | |

474 | theFirstPoint : Pnt from gp; | |

475 | theLastPoint : Pnt from gp; | |

476 | theNearestPoint : out Pnt from gp) | |

477 | returns Boolean from Standard; | |

478 | ---Purpose: | |

479 | -- For the given point finds nearest point on the curve, | |

480 | -- @return TRUE if found point is belongs to the curve | |

481 | -- and FALSE otherwise. | |

482 | ||

7fd59977 | 483 | Farest( aShape : Shape from TopoDS; |

484 | aPoint : Pnt from gp ) | |

485 | returns Pnt from gp; | |

486 | ||

60bf98ae | 487 | ComputeGeometry (theEdge : Edge from TopoDS; |

488 | theCurve : out Curve from Geom; | |

489 | theFirstPnt : out Pnt from gp; | |

490 | theLastPnt : out Pnt from gp) | |

7fd59977 | 491 | ---Purpose: Used by 2d Relation only |

492 | -- Computes the 3d geometry of <anEdge> in the current WorkingPlane | |

493 | -- and the extremities if any | |

60bf98ae | 494 | -- Return TRUE if ok. |

7fd59977 | 495 | returns Boolean from Standard; |

60bf98ae | 496 | |

497 | ComputeGeometry (theEdge : Edge from TopoDS; | |

498 | theCurve : out Curve from Geom; | |

499 | theFirstPnt : out Pnt from gp; | |

500 | theLastPnt : out Pnt from gp; | |

501 | theIsInfinite : out Boolean from Standard) | |

502 | ---Purpose: Used by dimensions only. | |

503 | -- Computes the 3d geometry of <anEdge>. | |

504 | -- Return TRUE if ok. | |

505 | returns Boolean from Standard; | |

506 | ||

507 | ComputeGeometry (theEdge : Edge from TopoDS; | |

508 | theCurve : out Curve from Geom; | |

509 | theFirstPnt : out Pnt from gp; | |

510 | theLastPnt : out Pnt from gp; | |

511 | theExtCurve : out Curve from Geom; | |

512 | theIsInfinite : out Boolean from Standard; | |

513 | theIsOnPlane : out Boolean from Standard; | |

514 | thePlane : Plane from Geom) | |

7fd59977 | 515 | ---Purpose: Used by 2d Relation only |

516 | -- Computes the 3d geometry of <anEdge> in the current WorkingPlane | |

517 | -- and the extremities if any. | |

518 | -- If <aCurve> is not in the current plane, <extCurve> contains | |

519 | -- the not projected curve associated to <anEdge>. | |

520 | -- If <anEdge> is infinite, <isinfinite> = true and the 2 | |

521 | -- parameters <FirstPnt> and <LastPnt> have no signification. | |

60bf98ae | 522 | -- Return TRUE if ok. |

7fd59977 | 523 | returns Boolean from Standard; |

60bf98ae | 524 | |

525 | ComputeGeometry (theFirstEdge : Edge from TopoDS; | |

526 | theSecondEdge : Edge from TopoDS; | |

527 | theFirstCurve : out Curve from Geom; | |

528 | theSecondCurve : out Curve from Geom; | |

529 | theFirstPnt1 : out Pnt from gp; | |

530 | theLastPnt1 : out Pnt from gp; | |

531 | theFirstPnt2 : out Pnt from gp; | |

532 | theLastPnt2 : out Pnt from gp; | |

533 | thePlane : Plane from Geom) | |

7fd59977 | 534 | ---Purpose: Used by 2d Relation only |

535 | -- Computes the 3d geometry of <anEdge> in the current WorkingPlane | |

536 | -- and the extremities if any | |

60bf98ae | 537 | -- Return TRUE if ok. |

7fd59977 | 538 | returns Boolean from Standard; |

539 | ||

60bf98ae | 540 | ComputeGeometry (theFirstEdge : Edge from TopoDS; |

541 | theSecondEdge : Edge from TopoDS; | |

542 | theFirstCurve : out Curve from Geom; | |

543 | theSecondCurve : out Curve from Geom; | |

544 | theFirstPnt1 : out Pnt from gp; | |

545 | theLastPnt1 : out Pnt from gp; | |

546 | theFirstPnt2 : out Pnt from gp; | |

547 | theLastPnt2 : out Pnt from gp; | |

548 | theIsinfinite1 : out Boolean from Standard; | |

549 | theIsinfinite2 : out Boolean from Standard) | |

550 | ---Purpose: Used by dimensions only.Computes the 3d geometry | |

551 | -- of<anEdge1> and <anEdge2> and checks if they are infinite. | |

552 | returns Boolean from Standard; | |

7fd59977 | 553 | |

60bf98ae | 554 | ComputeGeometry (theFirstEdge : Edge from TopoDS; |

555 | theSecondEdge : Edge from TopoDS; | |

556 | theExtIndex : out Integer from Standard; | |

557 | theFirstCurve : out Curve from Geom; | |

558 | theSecondCurve : out Curve from Geom; | |

559 | theFirstPnt1 : out Pnt from gp; | |

560 | theLastPnt1 : out Pnt from gp; | |

561 | theFirstPnt2 : out Pnt from gp; | |

562 | theLastPnt2 : out Pnt from gp; | |

563 | theExtCurve : out Curve from Geom; | |

564 | theIsinfinite1 : out Boolean from Standard; | |

565 | theIsinfinite2 : out Boolean from Standard; | |

566 | thePlane : Plane from Geom) | |

7fd59977 | 567 | ---Purpose: Used by 2d Relation only Computes the 3d geometry |

568 | -- of<anEdge1> and <anEdge2> in the current Plane and the | |

569 | -- extremities if any. Return in ExtCurve the 3d curve | |

570 | -- (not projected in the plane) of the first edge if | |

571 | -- <indexExt> =1 or of the 2nd edge if <indexExt> = 2. If | |

572 | -- <indexExt> = 0, ExtCurve is Null. if there is an edge | |

573 | -- external to the plane, <isinfinite> is true if this | |

574 | -- edge is infinite. So, the extremities of it are not | |

575 | -- significant. Return TRUE if ok | |

576 | returns Boolean from Standard; | |

577 | ||

60bf98ae | 578 | ComputeGeomCurve (aCurve : in out Curve from Geom; |

579 | first1 : Real from Standard; | |

580 | last1 : Real from Standard; | |

581 | FirstPnt1 : out Pnt from gp; | |

582 | LastPnt1 : out Pnt from gp; | |

583 | aPlane : Plane from Geom; | |

584 | isOnPlane: out Boolean from Standard) | |

7fd59977 | 585 | ---Purpose: Checks if aCurve belongs to aPlane; if not, projects aCurve in aPlane |

586 | -- and returns aCurve; | |

587 | -- Return TRUE if ok | |

588 | returns Boolean from Standard; | |

589 | ||

60bf98ae | 590 | ComputeGeometry (aVertex : Vertex from TopoDS; |

591 | point : out Pnt from gp; | |

592 | aPlane : Plane from Geom; | |

593 | isOnPlane: out Boolean from Standard) | |

7fd59977 | 594 | returns Boolean from Standard; |

7fd59977 | 595 | |

60bf98ae | 596 | GetPlaneFromFace (aFace : Face from TopoDS; |

597 | aPlane : out Pln from gp; | |

598 | aSurf : out Surface from Geom; | |

599 | aSurfType : out KindOfSurface from AIS; | |

600 | Offset : out Real from Standard) | |

7fd59977 | 601 | returns Boolean from Standard; |

602 | ---Purpose: Tryes to get Plane from Face. Returns Surface of Face | |

603 | -- in aSurf. Returns Standard_True and Plane of Face in | |

604 | -- aPlane in following cases: | |

605 | -- Face is Plane, Offset of Plane, | |

606 | -- Extrusion of Line and Offset of Extrusion of Line | |

60bf98ae | 607 | -- Returns pure type of Surface which can be: |

608 | -- Plane, Cylinder, Cone, Sphere, Torus, | |

609 | -- SurfaceOfRevolution, SurfaceOfExtrusion | |

610 | ||

611 | InitFaceLength (aFace : Face from TopoDS; | |

612 | aPlane : out Pln from gp; | |

613 | aSurface : out Surface from Geom; | |

614 | aSurfaceType : out KindOfSurface from AIS; | |

615 | anOffset : out Real from Standard ); | |

616 | ||

617 | InitLengthBetweenCurvilinearFaces (theFirstFace : Face from TopoDS; | |

618 | theSecondFace : Face from TopoDS; | |

619 | theFirstSurf : in out Surface from Geom; | |

620 | theSecondSurf : in out Surface from Geom; | |

621 | theFirstAttach : out Pnt from gp; | |

622 | theSecondAttach : out Pnt from gp; | |

623 | theDirOnPlane : out Dir from gp); | |

624 | ---Purpose: Finds attachment points on two curvilinear faces for length dimension. | |

625 | -- @param thePlaneDir [in] the direction on the dimension plane to | |

626 | -- compute the plane automatically. It will not be taken into account if | |

627 | -- plane is defined by user. | |

628 | ||

629 | InitAngleBetweenPlanarFaces (theFirstFace : Face from TopoDS; | |

630 | theSecondFace : Face from TopoDS; | |

631 | theCenter : out Pnt from gp; | |

632 | theFirstAttach : out Pnt from gp; | |

633 | theSecondAttach : out Pnt from gp; | |

634 | theIsFirstPointSet : Boolean from Standard = Standard_False) | |

635 | returns Boolean from Standard; | |

636 | ---Purpose: Finds three points for the angle dimension between | |

637 | -- two planes. | |

638 | ||

639 | InitAngleBetweenCurvilinearFaces (theFirstFace : Face from TopoDS; | |

640 | theSecondFace : Face from TopoDS; | |

641 | theFirstSurfType : KindOfSurface from AIS; | |

642 | theSecondSurfType : KindOfSurface from AIS; | |

643 | theCenter : out Pnt from gp; | |

644 | theFirstAttach : out Pnt from gp; | |

645 | theSecondAttach : out Pnt from gp; | |

646 | theIsFirstPointSet : Boolean from Standard = Standard_False) | |

647 | returns Boolean from Standard; | |

648 | ---Purpose: Finds three points for the angle dimension between | |

649 | -- two curvilinear surfaces. | |

7fd59977 | 650 | |

651 | ProjectPointOnPlane( aPoint : Pnt from gp; aPlane : Pln from gp ) | |

652 | returns Pnt from gp; | |

653 | ||

654 | ProjectPointOnLine( aPoint : Pnt from gp; aLine : Lin from gp ) | |

655 | returns Pnt from gp; | |

656 | ||

657 | TranslatePointToBound( aPoint : Pnt from gp; aDir : Dir from gp; aBndBox: Box from Bnd ) | |

658 | returns Pnt from gp; | |

659 | ||

660 | InDomain( aFirstPar : Real from Standard; | |

661 | aLastPar : Real from Standard; | |

662 | anAttachPar : Real from Standard) | |

663 | returns Boolean from Standard; | |

664 | ---Purpose: returns True if point with anAttachPar is | |

665 | -- in domain of arc | |

666 | ||

667 | NearestApex(elips : Elips from gp; | |

668 | pApex : Pnt from gp; | |

669 | nApex : Pnt from gp; | |

670 | fpara : Real from Standard ; | |

671 | lpara : Real from Standard ; | |

672 | IsInDomain : out Boolean from Standard) | |

673 | returns Pnt from gp; | |

674 | ---Purpose: computes nearest to ellipse arc apex | |

675 | ||

676 | DistanceFromApex(elips : Elips from gp; | |

677 | Apex : Pnt from gp; | |

678 | par : Real from Standard ) | |

679 | returns Real from Standard; | |

680 | ---Purpose: computes length of ellipse arc in parametric units | |

681 | ||

682 | ||

6e33d3ce | 683 | ComputeProjEdgePresentation(aPres : Presentation from Prs3d; |

684 | aDrawer : Drawer from AIS; | |

7fd59977 | 685 | anEdge : Edge from TopoDS; |

686 | ProjCurve: Curve from Geom; | |

687 | FirstP : Pnt from gp; | |

688 | LastP : Pnt from gp; | |

689 | aColor : NameOfColor from Quantity = Quantity_NOC_PURPLE; | |

690 | aWidth : Real from Standard = 2; | |

691 | aProjTOL : TypeOfLine from Aspect = Aspect_TOL_DASH; | |

692 | aCallTOL : TypeOfLine from Aspect = Aspect_TOL_DOT); | |

693 | ||

6e33d3ce | 694 | ComputeProjVertexPresentation(aPres : Presentation from Prs3d; |

695 | aDrawer : Drawer from AIS; | |

7fd59977 | 696 | aVertex : Vertex from TopoDS; |

697 | ProjPoint: Pnt from gp; | |

698 | aColor : NameOfColor from Quantity = Quantity_NOC_PURPLE; | |

699 | aWidth : Real from Standard = 2; | |

700 | aProjTOM : TypeOfMarker from Aspect = Aspect_TOM_PLUS; | |

701 | aCallTOL : TypeOfLine from Aspect = Aspect_TOL_DOT); | |

702 | ||

703 | end AIS; |