Runtime 3DS Construction
Entities with 3DS geometry can be created using IObjectGenerator_DG.Create("IEntity_DG") >
IEntity_DG >
IEntity_DG.SetGeometryType("3DS")
The information below describes construction of 3DS entities using lower level method via COM Program or Class ID. It can be useful when DK Kernel is used as a background engine or in a command line application without a DGK control window.
Sect3DGenerator class
This topic describes creation of new 3DS objects in the model programmatically
at runtime using Sect3DGenerator COM class. See also Object Array sample
Sect3DGenerator is an Object Generator, which allows creation of new Generic
3D Objectss. In COM terminology Sect3DGenerator is a Class Factory. It can
be instantiated in COM-enabled development environments by using either its Class ID or Program ID (see below). Note that
DG Kernel control does not have to be created in the application before creation
of the object.
In .NET environment Sect3DGenerator can be created using standard new
operator as (C# example):
KernCADnet.Sect3DGeneratorClass sect
= new KernCADnet.Sect3DGeneratorClass();
Actual name of the wrapper class might be different in different versions of the
development environment. Refer to Object Browser in the project after adding a
reference to the KernelCADnet component (See Patch Tutorial).
In C++ the Sect3DGenerator can be instantiated by using its Class ID and call
to CoGetClassObject() COM function. See CObjArrayDlg::Create3DS() method
of Object Array sample for details of implementation.
In native Visual Basic an instance of the class can be created using the Program ID
and CreateObject() API as follows:
Dim gener3D
As Object
gener3D
= CreateObject("KERNELCAD.Entity3D.1")
Sect3DGenerator implements a single interface I3DSectionGenerator,
which can be obtained via call to CreateInstance() COM API in C/C++ or
a cast in other languages.
Actual 3D Entity objects can be created using Create() method of I3DSectionGenerator interface.
The method returns
ISection interface, which can be used in a call to Add()
method of IArray interface to insert the new object in the model or make it a
child entity of another object. Query
ISection >
IEntity_DG to use DG interface, and perhaps add the entity via IModel_DG.
Using Create method of IDIObjGenerator
with eType parameter set to eObjType3DSGenerator provides another method of obtaining
I3DSectionGenerator interface.
IDs of Sect3DGenerator
Class ID:
// {44886EA6-F4FC-420a-A27B-BF095946D608}
static const GUID CLSID_Sect3DGenerator =
{ 0x44886ea6, 0xf4fc, 0x420a, { 0xa2, 0x7b, 0xbf, 0x9, 0x59, 0x46, 0xd6, 0x8 } };
Program ID:
KERNELCAD.Entity3D.1
These definitions can also be found in Samples\VC\Inclide\DIInterface.h file of
the installation directory.
|