KernelCAD Documentation

DInsight Home
Skip Navigation Links.
Start page
Quick Start
Installation
Overview of the software
What is new
Collapse KernelCAD ModelsKernelCAD Models
Collapse KernelCAD ComponentsKernelCAD Components
KernelCAD Control
KernelCAD .NET Control
Methods and Properties
Menu
Model Explorer
Birds Eye View
Programming
Direct User Access
Direct Operations
Interface Queries
Printing Support
Data Types
Modes of KernelCAD Control
DIObjectGenerator class
Properties
FlatObjectArray Poperty
Context
64 bit development
Dual Mode
Initialisation Context
Overlay Editor
Memory Management
Input validation
Collapse Advanced functionalityAdvanced functionality
Collapse InterfacesInterfaces
Alphabetical list
I3DGrid
I3DBugger
I3Dpt
IAxiBase
IAxis
IBoolSection
IBoolSectionEx
IBoundary
IColor
IConstraint
IData
IDiffSurface_KC
IDIFont
IDraw
IDrawUtil
IDraw2
IElem
IElement
IKCLine
ILightSource
ILocation
ILocationEx
IMaterial
IMetrics
IMetrics2
IModel
IModel2
IModelEx
IPatch
IKCPathCollisionDetector
IProfiles
IPropertyArray
IPropertyArray2
IStdShape
IStrip
ISurface
IText
ITexture
ITransform
IUnknown
Collapse Open Cascade TechnologyOpen Cascade Technology
Collapse DataData
Collapse MovementMovement
Collapse FramesFrames
Collapse Oriented ObjectsOriented Objects
Collapse SectionsSections
Collapse GeneralGeneral
Collapse Topological InterfacesTopological Interfaces
Collapse Viewing InterfacesViewing Interfaces
Collapse Lines And CurvesLines And Curves
Collapse Symmetry InterfacesSymmetry Interfaces
Collapse Clipping plane interfacesClipping plane interfaces
Collapse AlgorithmsAlgorithms
Collapse 2D Geometry2D Geometry
Collapse Programming Samples and TutorialsProgramming Samples and Tutorials
Collapse OverviewOverview
Collapse DeploymentDeployment
Collapse .NET Samples.NET Samples
Collapse C++ SamplesC++ Samples
Collapse Visual Basic SamplesVisual Basic Samples
Collapse Delphi SamplesDelphi Samples
Collapse 3D Debugger3D Debugger
Collapse DeploymentDeployment
Licensing
Model Viewer
Open C++ Source
Technical Support
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