KernelCAD Documentation

DInsight Home
Skip Navigation Links. Skip Navigation LinksHome Page > KernelCAD Components > Interfaces > IDraw
IDraw Interface

IDraw Interface

Begin
End
Vertex
Normal
Color
LineWidth
PointSize
PushAttrib
PopAttrib
PushMatrix
PopMatrix
Translate
Rotate
LoadIdentity

IDraw interface gives direct access to the underlying rendering engine. It allows drawing of some elements in the KernelCAD view directly, without having a correspondent object as part of the current model. This method is useful for drawing some auxiliary objects or annotations, which are volatile and should not be stored with the model..

IDraw interface can be obtained via path: Control->GetModel -> IModel ->IDraw. Methods of IDraw must be called as part of handler  for ClientDraw KernelCAD control event.  

IDraw interface is designed to follow closely functionality of OpenGL library interface. Methods of IDraw can be mapped to The OpenGL API by prefixing the methods name with "gl" prefix.  For example Begin() method is mapped to glBegin OpenGL function. This allows using more extensive documentation available for OpenGL.

See also Cannon sample, Interface List


HRESULT Begin(EDrawPrimitive mode)

Parameters

mode- [in] Element of EDrawPrimitive enumeration. 

Remarks:
 Call to this method means that all consequent calls to the Vertex() method before the next End call are related to the current primitive of type mode. Every call to Begin() method should have a correspondent End() call. 

Example:

Sequence: iDraw.Begin( EDrawPrimitive.eTriangles );

                iDraw.Vertex(0.0, 0.0, 0.0);

                iDraw.Vertex(1.0, 0.0, 0.0);

                iDraw.Vertex(0.0, 1.0, 0.0);

                iDraw.End();

will draw a triangle of size 1 in plane x and y of the 3d space.


HRESULT End()

Remarks:
 
Ends sequence of Vertex() calls related to the primitive, which was started with the last Begin call.

HRESULT Vertex(double x, double y, double z)

Parameters

x,y,z - [in] coordinates of the vertex.

Remarks:

This method supplies coordinates of the next vertex for the current primitive drawn between Begin() and End() calls. Coordinates are assumed to be relative to the current drawing frame (See remarks for the Translate method)


HRESULT Normal(double nx, double ny, double nz)

Parameters

nx,ny,nz - [in] coordinates of the normal vector of the current two-dimensional primitive (triangle, quad, etc)

Remarks: Call to Normal method sets the current normal position for the next vertex drawn with a call to Vertex() method of whole primitive, if called once. Coordinates are assumed to be relative to the current drawing frame (See remarks for the Translate method)


HRESULT Color(double red, double green, double blue, double alpha)

Parameters

red, green, blue, alpha [in] - components of the current color, which will be applied to the next vertex of whole primitive if called once. alpha is the transparency component. alpha = 1.0 means the primitive will be opaque. alpha = 0.0 means the primitive will be totally transparent.


HRESULT LineWidth(float width)

Parameters

width - [in] new width in screen pixels that will be used for drawing lines.


HRESULT PointSize(float size)

Parameters

size - [in]

new width in screen pixels which will be used for drawing lines.

HRESULT PushAttrib()

Remarks:

Stores current settings of colour, line width and point size on a stack. Use PopAttrib() to restore settings stored with this method call.


HRESULT PopAttrib()

Remarks:

Restores colour, line width and point which where current at the last call to PushAttrib() method.

HRESULT PushMatrix()

Remarks:

Stores position and orientation of the current drawing frame before performing any transformations using Translate or Rotate methods. 


HRESULT PopMatrix()

Remarks:

Restores position and orientation of the current drawing frame which was current at the last call to PushMatrix() method.

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

Parameters

vx,vy,vy - [in] coordinates of the translation vector

Remarks:

Modifies position of the local Drawing Frame. All Vertex() calls refer to coordinates in the local drawing frame, so that result of drawing command depends on the position and orientation of the frame. At the first call to OnClientDraw() KernelCAD event handler position of the current frame coincides with the global axes. As the result of this method position of the current frame will be changed by the translation vector above.  


HRESULT Rotate(double angle, double vx, double vy, double vz)

Parameters

angle -  angle in degrees to rotate by.

vx,vy,vy - [in] coordinates of the axis of rotation. 

Remarks:

Modifies orientation of the local drawing frame (See remarks for the Translate method) As the result of this method position of the current frame will be rotated by angle around the above axis. 


HRESULT LoadIdentity()

Remarks:

Resets orientation and position of the local drawing frame (See remarks for the Translate method) As the result of this method the current frame will coincide with the global 3D frame