DG Kernel (ActiveX) Documentation


Skip Navigation Links.
Start page
Quick Start
Search Page
Installation
What is new
Upgrading Native Apps
Licensing
Expand ModelsModels
Expand DG Kernel ControlsDG Kernel Controls
Collapse API ReferenceAPI Reference
Interface List
Vector Space
Collapse General GeometryGeneral Geometry
Expand ModelModel
Expand ViewView
Expand General ComputingGeneral Computing
Expand Samples and TutorialsSamples and Tutorials
Expand GraphicsGraphics
Expand Math ObjectsMath Objects
Expand DeprecatedDeprecated
Redistribution
Model Viewer
Open Source
Support
Skip Navigation LinksHome Page > API Reference > General Geometry > Oriented Objects > IBox_DG Go to DGKC docs Search Documentation


IBox_DG Interface

IBox_DG represents a box arbitrary located and oriented in 3D. By default its location is the global frame (identity), in which case global and local coordinates are the same and the object can be used as an axis-aligned box. Use Get/SetLocation() to modify orientation or location of the box.

A standalone box for calculations can be created using IObjectGenerator_DG:
IModel_DG > IObjectGenerator_DG > Create("Box_DG") > IUnknown > IBox_DG

Init
GetRange
GetRange1
SetRange
SetRange1
SetAll
GetLocation
SetLocation
GetLimit
IsEmpty
SetEmpty
IsIn
IsIn1
GetPointLocation
Include
Include1
Expand
Translate
GetCentre
GetCorner
GetPoint
GetRatios
GetSize
GetMaxSize
GetDiagonalLength
GetVolume
GetPlane
GetDist
GetDist1
GetDistBox
GetLineIntersection
Copy
Clone

void Init(double minx, double maxx, double miny, double maxy, double minz, double maxz)


void GetRange(int axis, double *min, double *max)


Range_DG GetRange1(int axis)


void SetRange(int axis, double min, double max)


void SetRange1(int axis, Range_DG range)


void SetAll(double min, double max)


IFrame_DG GetLocation()

Accesses location (and orientation) of the box. For a standalone box and some other implementations, the returned interface acts as a reference to the frame, so that its modifications are reflected immediately and there is no need to call SetLocation(). This is not always true for some complex underlying objects. It is recommended to test this behaviour in each case.


void SetLocation(IFrame_DG frame)

Copies location of frame

For a standalone box and some other implementations, the interface returned by the GetLocation() above acts as a reference to the frame, so that its modifications are reflected immediately and there is no need to call SetLocation(). This is not always true for some complex underlying objects. It is recommended to test this behaviour in each case.


double GetLimit(int axis, bool min)


bool IsEmpty()

Returns true if min > max + gTol(1e-10) for either axis


void SetEmpty()

Makes the box empty by calling SetAll(inf, -inf), where inf=10e+306


bool IsIn(Point_DG point, double tolerance)

point must have global coordinates


bool IsIn1(double x, double y, double z, double tolerance)

x,y,z are assumed to be global coordinates


int GetPointLocation(Point_DG point, double tolerance)

Returns one of:

0 - An error
1 - Inside the open 3D area of the box
2 - At a corner
3 - On an edge
4 - Inside an open 2D area of a face
5 - Anywhere on the external surface. Never returned in this version.
6 - Anywhere on the external surface or inside. Never returned in this version.
7 - Strictly outside (In the open 3D external space).


void Include(Point_DG point)

point must have global coordinates. Expands this by the minimal value to include the point.


void Include1(double x, double y, double z)

x,y,z are assumed to be global coordinates. Expands this by the minimal value to include the point.


void Expand(double by)

Executes min -= by; max += by;


void Translate(double vx, double vy, double vz)

vx,vy,vz are assumed to be global coordinates. Modifies the ranges by the specified values. Location remains unchanged. Use Get/SetLocation() to set location of the whole box instead


Point_DG GetCentre()


Point_DG GetCorner(int index)

Corners are enumerated as:
Back (z = min): 0-left bottom(x=min,y=min), 1-right bottom(x=max,y=min), 2-right top(x=max,y=max), 3-left top(x=min,y=max).
Front (z = max): 4-left bottom(x=min,y=min), 5-right bottom(x=max,y=min), 6-right top(x=max,y=max), 7-left top(x=min,y=max).


Point_DG GetPoint(Point_DG ratiosAt)

coordinates of ratiosAt are assumed to be in [0, 1] range. 0.0 is mapped to min, 1.0 is mapped to max


Point_DG GetRatios(Point_DG point)

Converts global coordinates to ratios in [0, 1] range. 0.0 is mapped to min, 1.0 is mapped to max


double GetSize(int axis)

Returns length of the axis-th range


double GetMaxSize(bool maxNotMin)

Returns maximal or minimal length of the three ranges


double GetDiagonalLength()

Returns the distance (min,min,min) to (max,max,max)


double GetVolume()


IPlane_DG GetPlane(int axis, bool min)


double GetDist(Point_DG point)

point must have global coordinates


double GetDist1(Point_DG point, out Point_DG pointNearest)

point must have global coordinates. pointNearest - is the nearest point inside this box


double GetDistBox(IBox_DG box)

Returns distance this to box


int GetLineIntersection(ILine_DG line, out Range_DG uInside)

Intersection of this and the infinite 3D line
Returns 0, 1, 2 or 3 - number of different intersection points with the surface. 3 - means that the line lies on a face of this box or coinsides with an edge
The uInside will be set to the range of line parameters lying inside this box


void Copy(IBox_DG box)


IBox_DG Clone()

Returns a new copy of this.