CommitLineData
b311480e 1-- Created on: 1994-11-16
2-- Created by: Christian CAILLET
3-- Copyright (c) 1994-1999 Matra Datavision
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
17class 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
25uses XY from gp, XYZ from gp, Trsf, Ax1, Ax2, Ax3,
26 HSequenceOfXYZ, HArray1OfXY, HArray1OfXYZ,
27 TransformationMatrix, CopiousData
28
29raises DomainError
30
31is
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.
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
120fields
121
122 theXYZ : HSequenceOfXYZ;
123 theVec : HSequenceOfXYZ;
124 thepos : Trsf from gp;
125
126end GeomBuilder;