DG Kernel Documentation


Skip Navigation Links.
Start page
Quick Start
Search Page
Installation
Overview of the software
What is new
Licensing
Collapse ModelsModels
Models
Persistence
Collapse EntitiesEntities
Collapse GeometryGeometry
Geometry
Collapse BSpline BRepBSpline BRep
BSpline BRep Overview
BSpline Geometry
Curves
Faces
Wires
Edges
Collapse MeshMesh
Mesh Geometry
Mesh
Line Strips
Point Sets
Collapse Entity AttributesEntity Attributes
Local Frame
Material
Texture
Clipping Planes
Properties of an Entity
3D Grid
Collapse Model ItemsModel Items
Items
View Points
Collapse MeasurementsMeasurements
Measurements
Persistent Measurements
Grid
Collapse Operations and AlgorithmsOperations and Algorithms
Boolean Operations
Euclidean Shortest Path
Collapse MovementMovement
Movements
Kinematic Sections
Collision Detection
Collapse Import/ExportImport/Export
Import/Export Overview
Data Flow Sample
STL Tree
Collapse DG Kernel ComponentsDG Kernel Components
Components
DG Kernel Control
Collapse Properies, Methods, EventsProperies, Methods, Events
Properies
Methods
Events
Collapse Interactive FunctionalityInteractive Functionality
Context Menu
Measurements
Direct User Access
Modes of DG Kernel
Current Entities
Collapse View of DGK ControlView of DGK Control
Global Axes
Background
3D Background
Collapse Selection OverviewSelection Overview
Selection
Selection Event
Collapse Auxiliary ViewsAuxiliary Views
Model Explorer
Birds Eye View
Full Screen window
Collapse Programmatic FunctionalityProgrammatic Functionality
Programming
Porting V5 Apps to DGK
Queries
Data Types
Object Construction
Generator
Component Context
Model Properties
Initialisation Context
Collapse AdvancedAdvanced
64 Bit Development
Memory Management
Third Party Technologies
Collapse API ReferenceAPI Reference
Interface List
Vector Space
Collapse General GeometryGeneral Geometry
IPointArray_DG
IPointMatrix_DG
Collapse CurvesCurves
ICurve_DG
ICircle_DG
ILine_DG
IBSplineCurve_DG
IBSplineCurveInterpolator_DG
ICurveFreeForm
ICurveFreeFormEx
IArcSpline3DCurve
Collapse 2D2D
ICurve2d_DG
IBSplineCurve2d_DG
ICircle2d_DG
ILine2D
IArc
IArcEx
IEllipse_KC
IStripArcLine_KC
Collapse Oriented ObjectsOriented Objects
IObjectOriented
IPlane_DG
ISphere_DG
ICylinder_DG
ICone_DG
ITorus_DG
IBox_DG
IPolygon3D_DG
IPrizmInfinite_KC
IUVSurface_DG
IGeometricObject_DG
IPartialSplineProps_DG
IBSplineSurface_DG
ISurface
IRectangleAxisAligned_KC
Collapse GeneralGeneral
IStrip
IStripTopol
IElem
IElement
ILocation
ILocationEx
Collapse ModelModel
IModel_DG
Collapse EntitiesEntities
IEntity_DG
IEntityArray_DG
IStdShape_DG
IStdShapeRef_DG
IDraw_DG
IConstraint
Collapse GeometryGeometry
IGeometry_DG
ISurfacePoint_DG
ISurfaceMetric_KC
Collapse BSpline BRep GeometryBSpline BRep Geometry
Collapse Advanced AlgorithmsAdvanced Algorithms
IBRepChamfer_DG
IBRepDraftAngle_DG
IBRepFillet_DG
IFeaturePrism_DG
IBRepShape_DG
IBRepVertex_DG
IBRepEdge_DG
IBRepWire_DG
IBRepFace_DG
IBRepShell_DG
IBRepSolid_DG
IBRepCompositeSolid_DG
IBRepCompound_DG
IShapeArray_DG
IBRepBuilderEx_DG
IWireArrayToSurfaceBuilder_DG
IBRepGeometry_DG
IBRepBuilder_DG
Collapse Native OCCTNative OCCT
IIKO_Standard_Object
IKO_Model
IKO_TopExp_Explorer
BRep
BRepBuilderAPI
BRepExtrema
BRepOffsetAPI
BRepPrimAPI
Geom2d
GeomAPI
GP
ModModeling Algorithms
TColgp
TColStd
TopoDS
TopTools
Collapse Mesh GeometryMesh Geometry
IMesh
IMeshTopol
ISimplex
IMeshMods
IVertex
IMeshEx
IMeshPointKC
IVertexEx_KC
IEdge_KC
ISimplexEx_KC
IMeshAlgor
IMeshBuilder_KC
IMeshShading_KC
Collapse AppearenceAppearence
IAppearance_DG
IColor
IMaterial
ITexture
ILineStyle_KC
Collapse MovementMovement
Collapse Collision DetectionCollision Detection
IMetrics
IMetrics2
IKCPathCollisionDetector
IKinematicSection_KC
IMove_KC
IKinematicSet_KC
ICutEffect_KC
ISpinEffect_KC
Collapse ItemsItems
IModelItem_DG
IItemArray_DG
Collapse Import / ExportImport / Export
ICADFormat_KC
IDataContext
IFormatVersionDataContext
ISTLDataContext
IDataConvert_KC
Collapse Operations and AgorithmsOperations and Agorithms
IBooleanEntity_DG
IBoolSectionEx
ITransform
IDiffSurface_KC
IEuclideanShortestPath_KC
Collapse User DataUser Data
ILayers
IUserData_DG
IMatrixData
Collapse ViewView
IView_DG
ISelection_DG
IViewPoint
IViewPointArray
IScene_DG
IRectangleColor_KC
I2DView_KC
I2DView2_KC
I2DEditor_KC
IPrint_KC
IVirtualView
ILightSource
I3DGrid
Collapse General ComputingGeneral Computing
IObjectGenerator_DG
IControlInitialisationContext_KC
Collections
IUnknown
IObject_DG
ITypeBasic_KC
IBitmap
IBlob
IKCContext
IKCContext2
IError_KC
IKCStack
IMenu_KC
IMenuItem_KC
IGlobalAPI_KC
IRange
IText
IDIFont
I3DBugger
Collapse Embedded User DBEmbedded User DB
IData
Collapse Samples and TutorialsSamples and Tutorials
Sample List
.NET Samples
Delphi and C++ Samples
Collapse GraphicsGraphics
Concepts
3D View
Viewing Volume
Eye Frame
Perspective View
Collapse Math ObjectsMath Objects
Mathematical Objects
Points and Vectors
Planes
Frames
Transforms
Oriented Objects
Boxes
Collapse CurvesCurves
Curve Technologies
Native Curves
Collapse 2D Elements2D Elements
Geometric Elements
Arcs
Line Strips
Collapse DeprecatedDeprecated
Collapse Deprecated GeometryDeprecated Geometry
Collapse 3DS3DS
3DS Generator
Profiles
Surface Patches
Surfaces and Patch Strips
Input Validation
Collapse Lines and CurvesLines and Curves
Line Section
3DS Curves
Surface Of Revolution
Pipes
Collapse Deprecated API ReferenceDeprecated API Reference
Vector Space
General Geometry
Collapse ModelModel
IModel
IModel2
IModelEx
IModelSearch_KC
Collapse SectionSection
IBoundary
IStdShape
ISurfacePointKC
ISurfacePointArrayKC
IBoolSection
ISection
ISection2
ISectionPointSet
ISectionLineStrip
IPipeSection
ILineSection_KC
IObjectPosition_KC
IModelHealer_KC
IPointCloud_KC
Collapse 3DS3DS
I3DSectionGenerator
IAxiBase
IProfiles
IProfiledElement_KC
Collapse SORSOR
ISORSectionGenerator
Clipping Planes
IDraw
IDrawUtil
IDraw2
View
Collapse General ComputingGeneral Computing
IDIObjGenerator
IObject_KC
Collapse CollectionsCollections
IArray
IArray2
IList
IListUnkn_KC
IRelation
IArrayNum
IArray3D
IRefMap_KC
Redistribution
Model Viewer
Open Source
Support
Skip Navigation Links Search Documentation


WixDeploy Tutorial

This advanced tutorial demonstrates: Customisation, recompilation and debugging of Model Explorer; Building Model Explorer for target .NET frameworks different form the defaullt v4.0; Deployment of DG Kernel-based application using Wix Tool set. This tutorial can also be used as guidance for the tasks using software other than Wix

The tutorial proceeds in wide steps, many details of which are left for user to investigate using the provided source code. The source code is included in the Samples\Deployment\WixDeployComplete solution

The installer will install a copy of the executable from C# Patch sample. It will also install a customised version of Model explorer targeting .NET4.5 (3.5 in Visual Studio 2008)

The tutorial is based on version 3.11 of WiX toolset http://wixtoolset.org/about/ - free and open software developed and maintained by Microsoft engineers. We recommend installing this useful tool. If you do not wish to install Wix this tutorial is still useful as there is source for the installer which has clear XML-based structure and can be used as a reference for creating installers with another tools

It is assumed that DG Kernel x64 6.0 is installed on the computer at its default location C:\Projects\DgKernel_6_0. With simple adjustments the same procedure applies to 32 bit - based installer

Creating Wix installer

-  Download and install Wix: http://wixtoolset.org/releases/

-  Open Visual Studio 2008 or later. Select File > New Project > Templates > Windows Installer XML > Setup Project. Enter WixDeploy for the name of the project and C:\Projects\DgKernel_6_0\Samples\Deployment\ for the Location. Turn on "Create directory for solution" check box. Press OK.

- The above step will create a basic template for a Wix Installer, which is contained in the Product.wxs xml source file. We skip details of the Wix code. Copy EULA.rtf, Product.wxs and SetupBanner.jpg from Samples\Deployment\WixDeployComplete\WixDeploy\ folder to the WixDeploy\WixDeploy folder created in the previous step

- Right-click the References node under the WixDeploy in the project solution and add reference to WixNetFxExtension.dll and WixUIExtension.dll located in the Wix installation directory (C:\Program Files (x86)\WiX Toolset v3.11\bin\ by default)

- Copy DgKernel_6_0\Samples\Deployment\WixDeployComplete\Gen.ico to the solution folder DgKernel_6_0\Samples\Deployment\WixDeploy\

Building the application

- Copy C:/Projects/DgKernel_6_0/Samples/NET/C#/Patch folder to the top WixDeploy folder of the solution. This sample will be customised slightly to simulate the .NET application to be deployed

- Add the copied Patch project to the WixDeploy solution

- In Configuration Manager of Visual Studio select x64 as the Active Solution Platform. If x64 platform is not available, select <New>, x64 and make sure "Create project platforms" is on.

- In the project list of Configuration Manager make sure platforms for both projects are x64. Add the platform for a project using the <New> option if required. Make sure that Build check boxes are on for both projects

- Make Release the active configuration for the solution

- In Patch project properties select .NET 4.5 (3.5 in Visual Studio 2008) as the target framework

- Copy C:\Projects\DgKernel_6_0\Models\ArcPatch.mdg to Patch\bin\x64\Release folder

- Open Patch form in form designer and change ModelPath property of DG Kernel to <EXEPATH>ArcPatch.mdg. Ignore the "DG Kernel .NET Control x64 design mode..." message on the control. This is the correct behaviour in x64 configuration. Execute DG Kernel's "Update Component Registration" command from Start menu if you get an exception in designer

- Build Patch project. Make sure it runs OK.

Customising Model Explorer

In this step we will add new "Save selected object as" menu option to the Model Explorer menu

- Copy C:\Projects\DgKernel_6_0\KC\ folder to the WixDeploy folder of the solution (top)

- Add WixDeploy\KC\Apps\Edit\EditorsNet\EditDev.csproj to the WixDeploy solution

- Make sure its x64 Release configuration is active and built in Configuration Manager

- Change the target framework to .NET 4.5 (3.5 in Visual Studio 2008)

- Make sure that the Assembly name for EditDev is ModelExplExt

- Make sure the output path is ..\..\..\..\Bin\x64\

- Open Explorer.cs in Visual Studio form designer. In the Action menu add new item "Save Object As". Add Click event handler named OnSaveSelectedAs for the menu item

- Copy code from OnSaveSelectedAs() method of C:\Projects\DgKernel_6_0\Samples\Deployment\WixDeployComplete\KC\Apps\Edit\EditorsNet\Explorer.cs into the event handler

- Build the EditDev project. Make sure WixDeploy\Bin\x64\ModelExplExt.dll appears

Adding DG Kernel merge module

- Download DgRedist_x64_6_0.zip from download page (64 bit DG Kernel Runtime Merge Modules) and extract it into C:\Projects\DgKernel_6_0\Samples\Deployment\DgRedist_x64_6_0 folder, so there is C:\Projects\DgKernel_6_0\Samples\Deployment\DgRedist_x64_6_0\DgRedist_x64_6_0.msm.
The WixDeploy\WixDeploy\Product.wxs has a reference to the files

Building and Testing solution

- Use Configuration manager to make sure Release x64 is the active configuration and Release x64 is the current configuration for all projects

- Build the solution. This should produce WixDeploy\WixDeploy\bin\x64\Release\WixDeploy.msi file. Test its installation. It is recommended to use a different computer or uninstalling temporary DG Kernel.

- The application will be installed into C:\Program Files\YouCorp\WixDeploy folder. Notice the DG Kernel dlls and the customised ModelExplExt.dll in the Bin folder.

- Run Patch.exe. Select Advanced > Model Explorer in context menu. Select the newly added Action > "Save Object As" item. Save it to a temporary location. Use Model Viewer or 3D Debugger to check the file loads OK

Debugging Model Explorer

The steps below demostrate debugging the Model Explorer

When Model Explorer is launched from context menu, the DG Kernel component looks for the plugin next to its own KerCADne.ocx. So, the recommended way to debug is to compile a new debug version of the dll with target located in the C:\Program Files\YouCorp\WixDeploy\Bin folder

- Change the active configuration of WixDeploy solution to Debug x64. Open configuration manager and clear the Build check boxes for WixDeploy project. Make sure the other two have x64 platform selected

- Open project properties for EditDev and change Output Path on the Build tab to Program Files\YouCorp\WixDeploy\Bin\. Use the browse button to make sure the correct relative path is entered.

- Build EditDev. Restart Visual Studio with administrative privileges if you get an error about copying files to the target folder. Check that modified date on ModelExplExt.dll has changed

- Set EditDev as the start-up project.

- In Project properties > Debug select "Start external program" and browse to C:\Program Files\YouCorp\WixDeploy\Patch.exe (or any other DG Kernel-based application)

- Open EditDev\Explorer.cs and put a break point on the first line in the OnSaveSelectedAs handler added in the "Customising Model Explorer" section above. It will remain disabled until Model Explorer is opened

- Start debugging in Visual Studio. In the application open the Model Explorer and select the new Action > "Save Object As". The execution should stop at the break point you have added. You should be able to step through the code and see values of all variables. If this does not happen, particularly if the break point remains disabled, most likely the wrong version of the plugin has been loaded. Check previous steps. Use Process Explorer to check path of the actually loaded dll

See Also: Redistribution