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

7fd59977 | 1 | -- File: IGESConvGeom_GeomBuilder.cdl |

2 | -- Created: Wed Nov 16 14:16:50 1994 | |

3 | -- Author: Christian CAILLET | |

4 | -- <cky@stylox> | |

5 | ---Copyright: Matra Datavision 1994 | |

6 | ||

7 | ||

8 | class GeomBuilder from IGESConvGeom | |

9 | ||

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

11 | -- curves, especially : | |

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

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

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

15 | ||

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

17 | HSequenceOfXYZ, HArray1OfXY, HArray1OfXYZ, | |

18 | TransformationMatrix, CopiousData | |

19 | ||

20 | raises DomainError | |

21 | ||

22 | is | |

23 | ||

24 | Create returns GeomBuilder; | |

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

26 | ||

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

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

29 | ||

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

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

32 | ||

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

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

35 | ||

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

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

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

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

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

41 | ||

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

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

44 | ||

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

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

47 | ||

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

49 | returns mutable CopiousData | |

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

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

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

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

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

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

56 | raises DomainError; | |

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

58 | ||

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

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

61 | ||

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

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

64 | ||

65 | ||

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

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

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

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

70 | ||

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

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

73 | ||

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

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

76 | ||

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

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

79 | ||

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

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

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

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

84 | ||

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

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

87 | ||

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

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

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

91 | ||

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

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

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

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

96 | ||

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

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

99 | -- Returns the transformed coordinates. | |

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

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

102 | ||

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

104 | returns mutable TransformationMatrix is static; | |

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

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

107 | -- tested first. | |

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

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

110 | ||

111 | fields | |

112 | ||

113 | theXYZ : HSequenceOfXYZ; | |

114 | theVec : HSequenceOfXYZ; | |

115 | thepos : Trsf from gp; | |

116 | ||

117 | end GeomBuilder; |