DG Kernel Documentation


Skip Navigation Links.
Start page
Quick Start
Search Page
Installation
Overview of the software
What is new
Licensing
Collapse ModelsModels
Collapse DG Kernel ComponentsDG Kernel Components
Collapse API ReferenceAPI Reference
Interface List
Vector Space
Collapse General GeometryGeneral Geometry
Collapse ModelModel
Collapse ViewView
Collapse General ComputingGeneral Computing
Collapse Samples and TutorialsSamples and Tutorials
Collapse GraphicsGraphics
Collapse Math ObjectsMath Objects
Collapse DeprecatedDeprecated
Redistribution
Model Viewer
Open Source
Support
Skip Navigation Links Search Documentation


Morph Sample

Source code for Profile sample is available in Samples\NET\C#  folder of the installation directory. It is recommended to copy whole C# directory to location outside of the installation folder before loading or compilation. Morph sample demonstrates direct manipulation of an object surface using set of meshing interfaces. It also implements runtime creation of a meshed object without reading any model file from the disc.

See also IMeshC# .NET Samples, All samples

The application  

By default the application does not load any model files. It creates a simple meshed object in memory. Controls on the right hand side display all information about the current simplex, the current vertex. Correspondent pairs of buttons allow browsing through the set of all elements.  The current Simplex is displayed in 3D in a violet wire frame. The current vertex is displayed as a thick red dot. 

Update buttons allow modification of vertices  and normals.

"Browse vertices" group allows switching between browsing vertices independently or for the currently selected simplex.

When the current vertex is a singular one ( edge or corner vertex ) there are more than one normal at the point. UpDown control in the Current normal group allows selection of the current normal. The current normal is displayed in 3D with a green color.

The application allows selection of an object in the model as the current one. The current object is highlighted in 3D with a reddish color. Switch to Surface mode using Render group to see it. All information on the right is relevant for the current object only. Name of the current object is displayed at the bottom. To change the current object press "Change" button and select a different object in 3D. Clicking outside any object will make the selection empty in which case all controls on the right will be disabled.

Simplex sub menu performs delete or divide operations.

Implementation

All implementation is contained in the main form class named Morph.

Information about the mesh geometry is obtained via meshing interfaces IMesh, IMeshEx and IIterator in range of Update..() methods starting from UpdateModelInfo() method.

Drawing of the current simplex, vertex and normal is done in OnClientDraw() handler for the ClientDraw DG Kernel control event. This event is requested on load via method RequestClientDraw of the control. Actual drawing is performed with the help of IDraw interface.

The application obtains the current object of the model via GetCurrentObject method of IModel2  interface. To enable highlighting of the current object there is a call to IView2.Enable method in SetupView().

To allow user changing the current object OnChangeCurObject method calls IViewModal.SetViewMode to change the current control mode from default "View" to "Modal". Selection of a different object in 3D view triggers a DG Kernel event, which is captured in OnCurrentObjectChanged(). This method stores reference to the selected  object passed via parameter, updates relevant information via UpdateObjectInfo() and switches off modal mode to allow normal viewing.

In this application "ModelPath" property of the DG Kernel control is an empty string, which means that no model is loaded on start of the application. Instead this sample demonstrates dynamic creation of Meshed object and dynamic creation of its surface via IMeshTopol interface. It is one in CreateDefault() method.