IGeometricObject_DG Interface
- IsSame
- IsSameInstance
- Copy
- Clone
- Translate
- Translate1
- Rotate
- Rotate1
- Rotate2
- Rotate3
- Scale
- ToGlobal
- ToLocal
- ChangeFrame
- Transform
Represents common properties of a 3D curve or a surface.
Methods of this interface modify the geometry of the object. This is required when a low-level operation like intersection is performed on two surfaces or curves so that there either no local frame available or the object has no reference to it.
For an example, to perform IUVSurface_DG.GetSurfaceIntersection(iSurfaceOther) both surfaces have to be defined in the same frame. If this surface belongs to an entity iEntThis and iSurfaceOtherLocal belongs to entity iEntOther, and
IFrame_DG iFrameThis = iEntThis.GetLocation(); IFrame_DG iFrameOther = iEntOther.GetLocation();
iSurfaceOtherLocal has to be transformed to the frame of this using
iSurfaceOther = iSurfaceOtherLocal.Clone(); iSurfaceOther.ChangeFrame(iFrameOther, iFrameThis);
(the result will be relative to iFrameThis).
Or
iSurfaceThis = iSurfaceThisLocal.Clone(); iSurfaceThis.ToGlobal(iFrameThis);
iSurfaceOther = iSurfaceOtherLocal.Clone(); iSurfaceOther.ToGlobal(iFrameOther);
(the result will be relative to the global frame). Etc.
Bollean operations, on the other hand, have references to the entities and perform the transformations automatically.
Notice, that for a geometric object, which belongs to an entity, movement transformations are only needed to redefine position or orientation of the object relative to the local frame. Movement of the whole entity can be performed more efficiently by moving the entity's frame obtained via IEntity_DG.GetLocation().
This interface represents generic (abstract) functionality so it can not be constracted new using methods of IObjectGenerator_DG. It has to be constructed as a specific type.
IGeometricObject_DG can be queried from: ICurve_DG, IUVSurface_DG.
bool IsSame(IGeometricObject_DG obj, double tolerance)
Returns true if this and obj are geometrically the same.
bool IsSameInstance(IGeometricObject_DG obj)
Returns true if this and obj are implemented by the same object in memory.
void Copy(IGeometricObject_DG obj)
Copies all geometric attributes of obj to this. After this call the objects will be geometrically the same
IGeometricObject_DG Clone()
Reterns a new copy of this
void Translate(Vect_DG vectBy)
Modifies geometry of this so that all points (locus) will be translated
void Translate1(double vx, double vy, double vz)
Modifies geometry of this so that all points (locus) will be translated
void Rotate(double angle, Vect_DG axis)
Modifies geometry of this so that all points (locus) will be rotated
void Rotate1(double angle, double vx, double vy, double vz)
Modifies geometry of this so that all points (locus) will be rotated
void Rotate2(double angle, Line_DG axis)
Modifies geometry of this so that all points (locus) will be rotated
void Rotate3(double angle, double xLocnAxis, double yLocnAxis, double zLocnAxis, double xDirAxis, double yDirAxis, double zDirAxis)
Modifies geometry of this so that all points (locus) will be rotated
void Scale(Point_DG center, double factor)
Modifies geometry of this so that all points (locus) will be scaled
void ToGlobal(IFrame_DG frameOfThis)
Assuming that this geometry is defined relatively to frameOfThis, modifies attributes of this so that
every point pt of locus changes to frameOfThis.ToGlobal(pt). In other words, if this curve was defined relatively to frameOfThis, the result will define the same curve relatively to the global axes.
void ToLocal(IFrame_DG frameOfOther)
Assuming that this geometry is defined relatively to the global frame, modifies attributes of this so that
every point pt of locus changes to frameOfThis.ToLocal(pt). In other words, if this curve was defined relatively to global axes, the result will define the same curve relatively to the frameOfOther.
void ChangeFrame(IFrame_DG frameOfThisOld, IFrame_DG frameNew)
If this curve was defined relatively to frameOfThisOld, the result will define the same curve relatively to the frameNew.
void Transform(IFrame_DG transform)
Redefines this geometry so that the locus is moved by transform. Transforms and frames.
|