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

b311480e | 1 | -- Created on: 1994-11-16 |

2 | -- Created by: Christian CAILLET | |

3 | -- Copyright (c) 1994-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 | -- |

973c2be1 | 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. | |

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 | class GeomBuilder from IGESConvGeom | |

18 | ||

19 | ---Purpose : This class provides some useful basic tools to build IGESGeom | |

20 | -- curves, especially : | |

21 | -- define a curve in a plane in 3D space (ex. Circular or Conic | |

22 | -- arc, or Copious Data defined in 2D) | |

23 | -- make a CopiousData from a list of points/vectors | |

24 | ||

25 | uses XY from gp, XYZ from gp, Trsf, Ax1, Ax2, Ax3, | |

26 | HSequenceOfXYZ, HArray1OfXY, HArray1OfXYZ, | |

27 | TransformationMatrix, CopiousData | |

28 | ||

29 | raises DomainError | |

30 | ||

31 | is | |

32 | ||

33 | Create returns GeomBuilder; | |

34 | ---Purpose : Creates a GeomBuilder at initial state. | |

35 | ||

36 | Clear (me : in out) is static; | |

37 | ---Purpose : Clears list of Points/Vectors and data about Transformation | |

38 | ||

39 | AddXY (me : in out; val : XY from gp) is static; | |

40 | ---Purpose : Adds a XY (Z=0) to the list of points | |

41 | ||

42 | AddXYZ (me : in out; val : XYZ from gp) is static; | |

43 | ---Purpose : Adds a XYZ to the list of points | |

44 | ||

45 | AddVec (me : in out; val : XYZ from gp) is static; | |

46 | ---Purpose : Adds a Vector part to the list of points. It will be used | |

47 | -- for CopiousData, datatype=3, only. | |

48 | -- AddXY and AddXYZ consider a null vector part (0,0,0) | |

49 | -- AddVec adds to the last added XY or XYZ | |

50 | ||

51 | NbPoints (me) returns Integer is static; | |

52 | ---Purpose : Returns the count of already recorded points | |

53 | ||

54 | Point (me; num : Integer) returns XYZ is static; | |

55 | ---Purpose : Returns a point given its rank (if added as XY, Z will be 0) | |

56 | ||

57 | MakeCopiousData (me; datatype : Integer; polyline : Boolean = Standard_False) | |

58 | returns mutable CopiousData | |

59 | ---Purpose : Makes a CopiousData with the list of recorded Points/Vectors | |

60 | -- according to <datatype>, which must be 1,2 or 3 | |

61 | -- If <polyline> is given True, the CopiousData is coded as a | |

62 | -- Polyline, but <datatype> must not be 3 | |

63 | -- <datatype> = 1 : Common Z is computed as average of all Z | |

64 | -- <datatype> = 1 or 2 : Vectors are ignored | |

65 | raises DomainError; | |

66 | -- Error if : <datatype> is not 1,2 or 3; or NbPoints is 0 | |

67 | ||

68 | MakeXY (me) returns mutable HArray1OfXY is static; | |

69 | ---Purpose : Returns the list of points as a HArray1OfXY. Z are ignored. | |

70 | ||

71 | MakeXYZ (me) returns mutable HArray1OfXYZ is static; | |

72 | ---Purpose : Returns the list of points as a HArray1OfXYZ | |

73 | ||

74 | ||

75 | Position (me) returns Trsf from gp is static; | |

76 | ---Purpose : Returns the Position in which the method EvalXYZ will | |

77 | -- evaluate a XYZ. It can be regarded as defining a local system. | |

78 | -- It is initially set to Identity | |

79 | ||

80 | SetPosition (me : in out; pos : Trsf from gp) is static; | |

81 | ---Purpose : Sets final position from an already defined Trsf | |

82 | ||

83 | SetPosition (me : in out; pos : Ax3 from gp) is static; | |

84 | ---Purpose : Sets final position from an Ax3 | |

85 | ||

86 | SetPosition (me : in out; pos : Ax2 from gp) is static; | |

87 | ---Purpose : Sets final position from an Ax2 | |

88 | ||

89 | SetPosition (me : in out; pos : Ax1 from gp) is static; | |

90 | ---Purpose : Sets final position from an Ax1 | |

91 | -- (this means that origin point and Z-axis are defined, the | |

92 | -- other axes are defined arbitrarily) | |

93 | ||

94 | IsIdentity (me) returns Boolean is static; | |

95 | ---Purpose : Returns True if the Position is Identity | |

96 | ||

97 | IsTranslation (me) returns Boolean is static; | |

98 | ---Purpose : Returns True if the Position is a Translation only | |

99 | -- Remark : Identity and ZOnly will answer True | |

100 | ||

101 | IsZOnly (me) returns Boolean is static; | |

102 | ---Purpose : Returns True if the Position corresponds to a Z-Displacement, | |

103 | -- i.e. is a Translation only, and only on Z | |

104 | -- Remark : Identity will answer True | |

105 | ||

106 | EvalXYZ (me; val : XYZ from gp; X,Y,Z : out Real) is static; | |

107 | ---Purpose : Evaluates a XYZ value in the Position already defined. | |

108 | -- Returns the transformed coordinates. | |

109 | -- For a 2D definition, X,Y will then be used to define a XY and | |

110 | -- Z will be regarded as a Z Displacement (can be ignored) | |

111 | ||

112 | MakeTransformation (me; unit : Real = 1) | |

113 | returns mutable TransformationMatrix is static; | |

114 | ---Purpose : Returns the IGES Transformation which corresponds to the | |

115 | -- Position. Even if it is an Identity : IsIdentity should be | |

116 | -- tested first. | |

117 | -- <unit> is the unit value in which the model is created : | |

118 | -- it is used to convert translation part | |

119 | ||

120 | fields | |

121 | ||

122 | theXYZ : HSequenceOfXYZ; | |

123 | theVec : HSequenceOfXYZ; | |

124 | thepos : Trsf from gp; | |

125 | ||

126 | end GeomBuilder; |