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

b311480e | 1 | -- Created on: 2000-07-10 |

2 | -- Created by: Vincent DELOS | |

3 | -- Copyright (c) 2000-2012 OPEN CASCADE SAS | |

4 | -- | |

5 | -- The content of this file is subject to the Open CASCADE Technology Public | |

6 | -- License Version 6.5 (the "License"). You may not use the content of this file | |

7 | -- except in compliance with the License. Please obtain a copy of the License | |

8 | -- at http://www.opencascade.org and read it completely before using this file. | |

9 | -- | |

10 | -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its | |

11 | -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France. | |

12 | -- | |

13 | -- The Original Code and all software distributed under the License is | |

14 | -- distributed on an "AS IS" basis, without warranty of any kind, and the | |

15 | -- Initial Developer hereby disclaims all such warranties, including without | |

16 | -- limitation, any warranties of merchantability, fitness for a particular | |

17 | -- purpose or non-infringement. Please see the License for the specific terms | |

18 | -- and conditions governing the rights and limitations under the License. | |

19 | ||

7fd59977 | 20 | |

21 | ||

22 | package BooleanOperations | |

23 | ||

24 | ---Purpose: package to perform Boolean Operations between two | |

25 | -- solids called Object and Tool. | |

26 | ||

27 | uses | |

28 | gp, | |

29 | Bnd, | |

30 | math, | |

31 | BRep, | |

32 | Geom, | |

33 | TopAbs, | |

34 | TopExp, | |

35 | TopoDS, | |

36 | TColStd, | |

37 | TopTools, | |

38 | Standard, | |

39 | TCollection, | |

40 | BRepAdaptor, | |

41 | GeomAdaptor, | |

42 | IntTools, | |

43 | BOPTColStd | |

44 | is | |

45 | ||

46 | class AncestorsAndSuccessors; | |

47 | ---Purpose: to have a fast access in the class ShapesDataStructure | |

48 | -- to the upper and lower shapes of a given shape. | |

49 | -- e.g. : ancestors of an edge are the wires that contain | |

50 | -- it and its successors are the vertices that it holds. | |

51 | ||

52 | ||

53 | --modified by NIZNHY-PKV Wed Feb 2 14:47:51 2005f | |

54 | -- class InterferenceResult; | |

55 | --Purpose: to describe a single interference between two shapes | |

56 | -- in the class ShapesDataStructure. | |

57 | ||

58 | -- pointer PInterferenceResult to InterferenceResult from BooleanOperations; | |

59 | ||

60 | -- class InterferencesList; | |

61 | --Purpose: if the considered shape S belongs to the Object this | |

62 | -- class will list all the shapes of the Tool whose | |

63 | -- bounding boxes intersects with the bounding box of S; | |

64 | -- if S belongs to the Tool we store all the shapes of | |

65 | -- the Object whose intersection with S is not empty. | |

66 | --modified by NIZNHY-PKV Wed Feb 2 14:48:00 2005t | |

67 | ||

68 | class ShapeAndInterferences; | |

69 | ---Purpose: contains a shape S, its bounding box, its state | |

70 | -- according to the other solid, its ancestors and | |

71 | -- successors, all of its interferences with the other | |

72 | -- solid. | |

73 | ||

74 | pointer PShapeAndInterferences to ShapeAndInterferences from BooleanOperations; | |

75 | ||

76 | class ShapesDataStructure; | |

77 | ---Purpose: contains all the shapes of the Object and Tool, all | |

78 | -- the shapes created by intersection, their bounding | |

79 | -- boxes, their states, their ancestors and successors, | |

80 | -- and all of their interferences. | |

81 | ||

82 | pointer PShapesDataStructure to ShapesDataStructure from BooleanOperations; | |

83 | ||

84 | class Explorer; | |

85 | ---Purpose: to find subshapes of a given shape of the Data Structure. | |

86 | ||

87 | class OnceExplorer; | |

88 | ---Purpose: the derived class of Explorer to find subshapes only once. | |

89 | ||

90 | --class BooleanOperations; | |

91 | ---Purpose: is to be deferred with inherited classes Cut, Common, | |

92 | -- Fuse to perform boolean operations . | |

93 | ||

94 | ||

95 | enumeration StateOfShape is | |

96 | ---Purpose: State of a Shape of the 1st solid according to the | |

97 | -- 2nd one. State INOROUT is used when we know that | |

98 | -- a shape is totally IN or totally OUT. State | |

99 | -- INTERSECTED refers to a shape of the 1st solid cut | |

100 | -- by the 2nd solid. When a shape has a state | |

101 | -- different of INTERSECTED or UNKNOWN all of its | |

102 | -- subshapes have the same state. | |

103 | IN, | |

104 | OUT, | |

105 | ON, | |

106 | UNKNOWN, | |

107 | INOROUT, | |

108 | INTERSECTED | |

109 | end StateOfShape; | |

110 | ||

111 | enumeration KindOfInterference is | |

112 | ---Purpose: Interferences describe an intersection between two | |

113 | -- shapes. They are classified following a hierarchy | |

114 | -- from the lower until the upper. | |

115 | SurfaceSurface, | |

116 | EdgeSurface, | |

117 | VertexSurface, | |

118 | EdgeEdge, | |

119 | VertexEdge, | |

120 | VertexVertex, | |

121 | UnknownInterference | |

122 | end StateOfShape; | |

123 | ||

124 | enumeration KindOfIntersection is | |

125 | ---Purpose: Describes the fact that we can have no | |

126 | -- intersection between two shapes, or a true or a | |

127 | -- tangent one. | |

128 | NoIntersection, | |

129 | TrueIntersection, | |

130 | SameDomain | |

131 | end KindOfIntersection; | |

132 | ||

133 | ||

134 | ------------------------ | |

135 | -- For internal needs -- | |

136 | ------------------------ | |

137 | ||

138 | class AncestorsSeqAndSuccessorsSeq; | |

139 | ||

140 | class IndexedDataMapOfShapeAncestorsSuccessors instantiates IndexedDataMap from TCollection | |

141 | (Shape from TopoDS,AncestorsSeqAndSuccessorsSeq from BooleanOperations,ShapeMapHasher from TopTools); | |

142 | ||

143 | ||

144 | ||

145 | class IndexedDataMapOfShapeInteger instantiates | |

146 | IndexedDataMap from TCollection(Shape from TopoDS, | |

147 | Integer from Standard, | |

148 | ShapeMapHasher from TopTools); | |

149 | ||

150 | end BooleanOperations; | |

151 | ||

152 | ||

153 |